31 de octubre de 2014

Arduino Halloween

Pues para divertirnos en HalloWeen se me ha ocurrido hacer una ArduinoCalabaza con los trastos que tengo por casa: un Led RGG que cambie de color, el medidor de distancia ultrasónica para que detecte si alguien o algo se acerca, un buzzer para hacer sonido y arduino.
De momento no he conseguido que diga "trick-or-treat".

Materiales:
Arduino Nano Rev3 ó Arduino UNO Rev3
Altavoz piezoeléctrico
Led RGB de cátodo comun.
3 resistencias de 100 Ohmnios
Modulo medidor ultrasónico HC-SR04
Unos Cables.
Fuente de alimentación o mediante usb de ordenador.

Esquema:



Código Arduino:


/* ## ARDUINO-HALLOWEEN ###################################### -- by www.misnotaslinux.blogspot.com - 2014 -- Led RGB que cambia de color cada tiempo. Detector de proximidad que activa el buzzer.
Programado con un condicional con millis()
para que simule interrupciones. Para meterlo dentro de una calabaza de Halloween.
########################################################### */ #include const int Trig = 3; // pin "Trig" del HC-SR04 conectado al pin digital 3 de arduino const int Echo = 2; // pin "Echo" del HC-SR04 conectado al pin digital 3 de arduino long cm = 1000; // variable que almacena la medicion de distancia del sensor. Le doy un valor inicial alto para que no suene Ultrasonic HCSR04(Trig,Echo); int pinLedR = 11; // pin Rojo del led RGB int pinLedV = 10; // pin Verde del led RGB int pinLedA = 9; // pin Azul del led RGB long lapso = 2000; // Milisegundos que cambiará de color el led RGB long cuenta = millis() + lapso; // Control del tiempo int dist = 100; // distancia en cm a la que se activa la calabaza int frec = 2500; // frecuencia inicial del sonido void setup(){ pinMode(pinLedR, OUTPUT); // pone el pinLedR como output pinMode(pinLedV, OUTPUT); // pone el pinLedV como output pinMode(pinLedA, OUTPUT); // pone el pinLedA como output } void loop(){ delay(10); // damos un tiempo para que mida el sensor ultrasónico y por efecto sonido cm = HCSR04.convert(HCSR04.timing(), 1); // medimos distnacia frente al sensor if (cm < dist) { tone(8, frec-(cm*20)); } // si hay algo cerca, hace sonar el buzzer con un frecuencia segun la distancia else { noTone(8); } // si no hay nada o nadie callamos el buzzer if ( millis() - cuenta > lapso) { // vemos si el contador ha llegado al tiempo para cambiar color del led analogWrite(pinLedR, 255 * random(0,2)); // colores básicos 0 o 255 al azar en cada canal RGB analogWrite(pinLedV, 255 * random(0,2)); analogWrite(pinLedA, 255 * random(0,2)); cuenta = millis(); // actualizamos el contador } }


La Calabaza:
Hecho esto, el prototipo, el programa ... ahora queda lo mas difícil: "Hacer la La Calabaza".

... y este es el resultado:

video



En el código se puede cambiar la frecuencia (variable frec) para conseguir diferentes sonidos y el delay( ) para cambiar los efecto de sonido. Con delays de unos 15-20ms se consiguen sonidos parecidos a los de R2D2!!.


Una mente ociosa es el taller del diablo.
Northern Exposure, Temporada 6, Cap.: 5.

Terrorífico!!!!



No hay comentarios:

Publicar un comentario