Kameraroboten

Spionera på din katt med den här robotkameran.  Bygg ihop robotkameran och kontrollera den med en liten joystick. Se kamerabilden live på på datorskärmen och när din katt gör någonting misstänksamt, ta en bild!

Material


  • 1 Arduino Uno
  • 1 Education-sköld
  • 1 webbkamera
  • 1 TinkerKit-joystick
  • 2 standardservon
  • 2 TinkerKit-kablar
  • 3 labbkablar
  • 8 AA-batterier
  • 1 AA-batterihållare
  • 1 strömkontakt
  • Robotkamera-kit

Instruktioner

  1. Fäst skölden på Arduinons ovansida.
  2. Koppla en TinkerKit-kabel till joystickens Y-kontakt. Koppla en röd labbkabel till den röda kabeln på TinkerKit-kabeln, och till 5V. Koppla en svart labbkabel till den svarta kabeln på TinkerKit-kabeln, och till GND. Koppla den sista labbkabeln till TinkerKit-kabeln och analoga pin A0.
  3. Koppla den andra TinkerKit-kabeln till joystickens X-kontakt, och till den analoga TinkerKit-kontakten, A1.
  4. Koppla konstruktionen till datorn och ladda upp exemplet ’CameraRobot’.
  5. Bygg kitet, glöm inte att placera webbkameran inuti!
  6. Vrid på servo-armen för hand åt ett håll, så långt det går. Vrid den sedan därifrån till 90 grader. Ta loss armen och sätt tillbaka den så att den går längs med servon. Gör samma sak med den andra servon.
  7. Koppla “lutnings-servon” till D10.
  8. Koppla “panorerings-servon” till D9.
  9. Koppla batteripaketet till Arduinons strömkontakt.
  10. Koppla webbkameran till din datorn. Öppna Processing-programmet CameraRobot.

Kod

Hitta koden File>Examples>EducationShield>Block4-Robots>Projects>CameraRobot

Hitta Processing-koden i File>Examples>EducationShield>Block4-Robots>Projects>CameraRobot>Processing>CameraRobot

Så här fungerar det

  • EducationShield- och Servo-biblioteken inkluderas.
  • Joystick- och Servo-objekten deklareras.
  • Variablerna som används för att sätta servons positioner deklareras, panAngle och tiltAngle.
  • Variablerna som används för att lagra joystickens värden deklareras, panJoystick och tiltJoystick.
  • setup()initialiseras servo-objekten.
  • loop()läses joystickens x-värde av och lagras i panJoystick.
  • Joystickens y-värde läses av och lagras i tiltJoystick.
  • Om panJoystick inte är lika med 0, betyder det att joysticken har flyttats i x-axeln, och följande händer:
    • Om panJoystick är lika med 1 och panAngle är mindre än 180, ökas panAngle med 1.
    • Om panJoystick istället är lika med -1 och panAngle är större än 0, minskas panAngle med 1.
  • Nästa if-sats i loop() kontrollerar om tiltJoystick inte är lika med 0. Om det är sant händer följande:
    • Om tiltJoystick är lika med 1 och tiltAngle är mindre än 180 ökas tiltAngle med 1.
    • Om tiltJoystick istället är lika med -1 och tiltAngle är större än 0, minskas tiltAngle med 1.
  • “Panorerings-servons” position bestäms med panAngle.
  • “Lutnings-servons” position bestäms med tiltAngle.
  • Programmet pausas i 5 millisekunder för att ge servon lite tid att komma på plats.
  • loop() fortsätter att upprepas.

Problemlösning

Lär genom att göra

  • Servorna kanske rör sig för snabbt eller för långsamt. Ändra på delay()-tiden i slutet av loop(), eller ändra på stegens storlek.
  • Servorna kanske rör sig för långt åt sidorna, eller för högt eller lågt. Begränsa de tillåtna vinklarna.
  • Bygg någonting annat som använder en “lutnings-servo” och en “panorerings-servo” och som du kontrollerar med en joystick.