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

Paso 5: entrenamiento de la sensibilidad - PuppyDuino 0.31

Ir a la olla

OK, ahora tenemos un perrito que mueve su cola cuando una lectura del sensor supera un umbral prefijado el código que determina por ensayo y error. ¡Eso está estupendo! Pero si las condiciones de luz ambientales cambian muy mucho probablemente tendremos que cambiar ese umbral en el código y vuelva a compilar otra vez. No es tan genial.

Lo arreglaremos en tan solo un minuto mediante la adición de una perilla de ajuste para que podamos cambiar ese umbral sobre la marcha para que coincida con las condiciones. Para esto utilizaremos un potenciómetro de ajuste o ajuste pot, para generar valores diferentes que podemos usar como nuestro umbral de wag. Diciendo que una maceta de adorno es simplemente una resistencia variable es simplificación pero definición funciona bastante bien para lo que estamos haciendo aquí. Como gire el cambiamos la resistencia de la olla y cambiar el voltaje en el pin del medio 'limpiador'.

Tenemos que añadir el último de los componentes a nuestra protoboard como se muestra en el diagrama anterior y carga hasta este esbozo de pequeña demo. Una vez que tengas el serial monitor abierto verá valores al igual que hemos visto de nuestro sensor de luz en un paso anterior.

Gire la perilla a través de toda su extensión y usted debería ver números de 0 a 1023. ¿Qué hay? Nos suceden a necesitar un valor ajustable entre 0 y 1023.

trimPot.ino

 /* trimPot.ino Observe varying values at wiper pin on trim potentiometer */ int potPin = 0; int potValue; void setup() { Serial.begin(9600); //start serial communication } void loop() { potValue = analogRead(potPin); //read value at wiper Serial.println(potValue); //send value to monitor delay(300); } 

¿Estamos allí todavía?

La respuesta sería que sí. Nuestro circuito está completo y se trata de nuestra último bosquejo para cargar a niños. Sólo haremos el trapicheo con nuestro valor de umbral en el código para nuestro valor del pote. He añadido algunas declaraciones que imprimir en el monitor serial para ayudar en la depuración y pruebas. Estos pueden comentó que colocando / / at el principio de la línea si no los necesita.

 </*puppyduino0_31.ino puppy wags tail when someone pets her servo tail wags when light sensor in shadow wag threshold determined by value on potentiometer */ #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 potPin = 0; //analog pin read pot value int potValue = 0; //value of pot init to zero void setup() { servo.attach(servoPin); //servo control pin Serial.begin(9600); //for testing } void loop() { lightSensor = analogRead(lightPin); //read light sensor potValue = analogRead(potPin); // serial output for testing and debugging Serial.print("Pot: "); Serial.println(potValue); Serial.print("Sensor: "); Serial.println(lightSensor); if(lightSensor > potValue) { Serial.println("Wagging!"); //test statement //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 } } 

Artículos Relacionados