Barnvänliga PuppyDuino 0,31 (4 / 7 steg)
Steg 4: Svans waggin' bliss - PuppyDuino 0,3
Lägga upp allt
PuppyDuino vet redan hur vifta servo svansen när en knapp trycks (svarar på en händelse).
PuppyDuino vet redan hur man känna en petting hand från en värdeförändring ljussensor (avkänning en händelse).
Nu låt oss göra PuppyDuino wag henne svans som svar på en skugga på ljussensorn.
Vi ska bara byta ut blinkar i den tidigare skissen med svans vagn. Jag märkte redan i det föregående steget att klappa min hund resulterade i en sensor läsning av ca 500 +. Jag ska pad som en bit och använda 400 som min tröskel så att någon läser över 400 kommer att resultera i en vifta. (Dina värderingar kan variera från min och varierar med förändras omgivningsljuset. Kolla med seriell skärmen innan du begår till värden. Vi gör detta nummer justerbar senare.)
Vår programmering logik går ungefär så här
Upprepa detta för evigt
- kolla ljussensor värde
- om ljus sensor värde > kända skuggvärdet, sedan wag servo svans
- om inte, Lägg svansen ner
Deja vu - detta låter så bekant. Låt oss få båda servo och ljussensorn kretsar på breadboard som visas i diagrammet och sedan ladda upp våra nästa sketch.
puppyduino0_3.ino
/*puppyduino0_3.ino
valp viftar svansen när någon husdjur henne
servo svansen viftar När ljussensorn i skugga
*/
#include < Servo.h > //this import Servo biblioteket
Servo servo; skapa en Servo
int höger = 135; rätta omfattningen av Wiklund
int vänster = 180; vänstra omfattningen av Wiklund
int lightPin = 1; analoga pin ljussensor
int lightSensor = 0; initiera sensor värde till noll
int servoPin = 9; Servo kontroll pin
int jag = vänster; initiera jag till vänster
int shadowValue = 400. sätta ditt värde här
void setup()
{
servo.attach(servoPin);
}
void loop()
{
lightSensor = analogRead(lightPin); Läs ljussensor
IF(lightSensor > shadowValue)
{
Wag 3 gånger
för (int j = 0; j < = 3; j ++)
{
sopa rätt till vänster en grad på på gång
för (jag = höger; jag < = vänster; i ++)
{
servo.write(i);
Delay(10);
}
Svep vänster till höger en grad på på gång
för (jag = vänster; jag > = höger; i--)
{
servo.write(i);
Delay(10);
}
}
}
annat
{
servo.write(0); svans i ner position
}
}
Om allt gick viftar din PuppyDuino glatt när du klappa hennes huvud. Om inte, gör några felsökning. Fast allt korrekt? Är din krets anslutningar ombonad? Belysningen förändrades avsevärt eftersom du fastställt din tröskelvärde? Kanske prova att lägga till några Serial.println uttalanden så du kan se din faktiska sensormätningar.