Niños PuppyDuino 0,31 (4 / 7 paso)

Paso 4: Cola dicha waggin' - PuppyDuino 0.3

Sumarlo todo para arriba

PuppyDuino ya sabe menear la cola de servo cuando se pulsa un botón (en respuesta a un evento).

PuppyDuino ya sabe sentir una mano acariciar de un cambio en el valor del sensor de luz (detección de un evento).

Ahora vamos a hacer PuppyDuino menear su cola en respuesta a una sombra en el sensor de luz.

Sólo vamos a reemplazar parpadeando en el bosquejo anterior con cola menear. En el paso anterior noté que acariciar a mi perro dio lugar a una lectura del sensor de sobre 500 +. A cojín de que un poco y uso 400 como mi umbral por lo que cualquier lectura sobre 400 resultará en un wag. (Sus valores pueden variar de mina y varían con la luz ambiente que cambia. Comprobar con el monitor serial antes de comprometerse con valores. Vamos a hacer este número ajustable más adelante.)


La lógica de programación pasará algo como esto

repetir este proceso para siempre

  • Compruebe el valor del sensor de luz
  • Si valor del sensor de luz > entonces conocido valor sombra, wag cola de servo
  • Si no, poner la cola hacia abajo

Deja vu - esto suena tan familiar. Vamos a conseguir tanto el servo y el sensor de luz de circuitos en el protoboard como se muestra en el diagrama y luego subir nuestro próximo bosquejo.

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 } } 

Si todo ha ido bien tu PuppyDuino menea alegremente cuando acaricie su cabeza. Si no, no la solución de algunos problemas. ¿Todo está conectado correctamente? ¿Están ajustadas las conexiones del circuito? ¿La iluminación cambió significativamente ya que se determinó su valor de umbral? Quizás tratar de agregar algunas declaraciones Serial.println para que pueda ver las lecturas del sensor real.

Artículos Relacionados