Vi fick reda på att det är någon som äter kakor från kakburken i köket! Vi tänkte på saken och kom fram till att det bästa vore att gillra en fälla för att avslöja vem det är. Du kommer bygga något som tar en bild på den som öppnar kakburken.
Inga kakmonster blev skadade under det här experimentet.
Material
- 1 Arduino Uno
- 1 Education-sköld
- 1 kopplingsdäck
- 1 webkamera
- 1 ultraljus, vit TinkerKit-LED
- 1 1M ohm resistor
- 1 TinkerKit-kabel
- 3 färgade labbkablar (en lång)
- 1 Kakmonster-kit
- Aluminiumfolie
- 1 ledande kakburk
- 3-4 gummiband
Instruktioner
Kod
Hitta koden i File>Examples>EducationShield>Block3-Magic>Projects>CookieMonster
Hitta Processing-koden för att fånga webkamerabilder på kaktjuven i File>Examples>EducationShield>Block3-Magic>Projects>CookieMonster>Processing>CookieMonster
Så här fungerar det
När du rör vid Kakburken aktiveras den kapacitiva sensorn och Arduinon skrikver ett ”p” till Processing genom serieporten. När Processing-programmet tar emot bokstaven tar den en bild med webbkameran.
Arduino
- EducationShield- och CapacitiveSensor-biblioteken inkluderas.
- CapacitiveSwitch-objektet,
sensor
, deklareras. - Variabeln
led
deklareras - n
setup()
, initialiseras seriekommunikationen. - Den kapicativa sensorn konfigureras och initialiseras.
led
-pinen konfigureras som en output.- I
loop()
, kollas det om den kapicativa sensorn trycks ned. Om det händer sätts LED:n på och ’p’ skrivs ut till serieporten. - Programmet pausas i 2000 millisekunder.
- Om sensorn inte trycks ned händer ingenting.
Processing
- Processingbiblioteken Video och Serial inkluderas.
- Kamera- och serieport-objekten deklareras, cam och myPort.
- I
setup()
sätts programfönstrets storlek till 640 x 480 pixlar, och renderarenP2D
väljs. - cam och myPort konfigureras och intialiseras.
- I
draw()
kollas om kameran är tillgänglig. Om så är fallet läses kamerabilden av. - Bilden som läses av från kameran ritas till programfönstret.
- Stringvariabeln
timeStamp
deklareras och tilldelas aktuellt datum och tid i text. - Texten
timeStamp
ritas i koordinaterna (10
,height-10
). - Om tangenten ’p’ eller ’P’ trycks ned sparas den aktuella bilden i programmets datamapp
- Om serieporten är tillgängligt läses inkommande data och lagras i
inByte
. - Om
inByte
är lika med med ’p’ sparas den aktuella bilden i programmets datamapp.
Problemlösning
- Hänvisa till illustrationen och dubbelkolla dina kopplingar. Var noga med att skölden och labbkablarna är ordentligt kopplade.
- If Processing is reporting error and no image is showing up, make sure you have the latest version of Processing, and:
- Arduinon är kopplad till datorn, och att du verkligen använder serieportnumret på din Arduino i
myPort = new Serial(this, Serial.list()[0], 9600)
. Du hittar det rätta namnet Arduino IDE:t i Tools>Serial Port. initializeCamera()
använder korrekt kameranummer från den utskrivna listan i Processing.
- Arduinon är kopplad till datorn, och att du verkligen använder serieportnumret på din Arduino i
- Om du rör vid kakburken men ingen bild fångas kan du testa med att röra direkt vid den kapicativa sensorn. Om det fungerar behöver du en kakburk som är mer ledande. Om inte kan du se referenssidan för kapacitiva sensorer.
Lär genom att göra
- Ändra reaktionstiden: gör så att monstret väntar i några sekunder innan bilden tas. på så sätt kan du fånga tjuven med en kaka i handen.
- Spela in ett monsterljud enligt dessa instruktioner, och använd en 8-ohms högtalare för att spela ljudet när den kapacitiva sensorn triggas.