Stap 4: Staart waggin' bliss - PuppyDuino 0.3
Allemaal toe te voegen
PuppyDuino weet al hoe de servo-tail wag wanneer een knop is ingedrukt (reageren op een gebeurtenis).
PuppyDuino weet al hoe het gevoel van een kinderboerderij hand uit een wijziging in de waarde van de lichtsensor (sensing een gebeurtenis).
Nu laten we make PuppyDuino wag haar staart in reactie op een schaduw op de lichtsensor.
We gaan gewoon vervangen knipperen in de vorige schets met staart kwispelen. Terug in de vorige stap merkte ik dat mijn hond aaien in een sensorgegevens van ongeveer 500 resulteerde +. Ik zal dat pad een beetje en gebruik 400 als mijn drempel dus dat eventuele lezen over 400 in een wag resulteren zal. (Uw waarden kunnen variëren van mijne en variëren met wisselende omgevingslicht. Neem contact op met de seriële monitor voordat u zich tot waarden verbinden. We maken dit nummer verstelbare later.)
Onze programmering logica zal gaan iets als dit
Herhaal dit voor altijd
- de waarde van de lichtsensor controleren
- als licht sensor waarde > bekend schaduwwaarde, vervolgens wag servo staart
- Als dit niet het geval is, staart neergezet
Deja vu - dit klinkt zo vertrouwd. Laten we beide de servo en de lichtsensor schakelingen op het breadboard zoals weergegeven in diagram en vervolgens uploaden onze volgende schets.
puppyduino0_3.Ino
/*puppyduino0_3.ino puppy wags tail when someone pets her servo tail wags when light sensor in shadow */ #include <Servo.h> //this imports the Servo library Servo servo; //create a Servo int right = 135; //right extent of wag int left = 180; //left extent of wag int lightPin = 1; //analog pin light sensor int lightSensor = 0; //initialize sensor value to zero int servoPin = 9; //servo control pin int i = left; //initialize i to left int shadowValue = 400; //put YOUR value here void setup() { servo.attach(servoPin); } void loop() { lightSensor = analogRead(lightPin); //read light sensor if(lightSensor > shadowValue) { //wag 3 times for(int j = 0; j<=3; j++) { // sweep right to left one degree at at time for(i = right; i<=left; i++) { servo.write(i); delay(10); } // sweep left to right one degree at at time for(i = left; i >= right; i--) { servo.write(i); delay(10); } } } else { servo.write(0); //tail in down position } }
Als alles goed is gegaan, kwispelt uw PuppyDuino gelukkig ook wanneer je huisdier haar hoofd. Als niet, doet het probleem oplossen. Is alles correct aangesloten? Zijn uw circuit verbindingen knus? Is de verlichting op de aanzienlijk veranderd aangezien u bepaald uw drempelwaarde? Misschien probeer het toevoegen van enkele uitspraken van de Serial.println, zodat u uw werkelijke sensor lezingen zien kunt.