Encender un LED al aplaudir usando un micrófono.
xml74
Mensajes publicados
186
Estado
Miembro
-
xml74 Mensajes publicados 186 Estado Miembro -
xml74 Mensajes publicados 186 Estado Miembro -
Bonjour, étant débutant, je vous demande de l'aide, mon but est de pouvoir allumer une LED à l'aide d'un micro, en tapant dans mes mains, puis la re-éteindre en retapant dans mes mains, comment est-ce possible de faire cela ?
Merci d'avance.
Merci d'avance.
3 respuestas
-
¡Hola! Todo depende de la plataforma que estés utilizando, así como del hardware que tengas a tu disposición...
¡Por cierto, hola de nuevo! Ha pasado mucho tiempo ;)
--
from human import idiocy
del idiocy -
Bueno, primero conectas tu LED al Arduino (evidentemente), conectado a un pin (ej: el 13) y a GND -- con una resistencia apropiada para no quemar el diodo.
Para tu micrófono, debes conectarlo a un pin ANALOG IN y también a GND;
sin embargo, no tenemos ninguna indicación sobre la amplitud de tensión que puede proporcionar, y seguramente necesitarás amplificarlo.
En cuanto al código, será necesario:
- configurar el ADC para poder leer los datos de audio, idealmente a 22kHz (o más)
- tener una variable para saber si debemos encender o apagar el LED
- en un bucle, leer los datos analógicos, y si detectamos un pico, alternar el estado del LED
Para la variable de estado, es trivial:bool ledEncendida = false;
Para la inicialización del ADC, es menos sencillo... ya que analogRead solo permite un máximo de 10,000 lecturas por segundo.
También será necesario determinar cuál es la tensión enviada durante un aplauso, que debería ser mucho mayor que la del ruido ambiental.
--
from human import idiocy
del idiocy -
Oki, entonces yo, por ahora, he hecho este código:
const int m1 = 7; void setup() { //contenido de la inicialización pinMode(m1, OUTPUT); } void loop() { digitalWrite(m1, HIGH);}
No enciende un LED sino un relé (Para un proyecto de domótica).
Lo que pienso que debo hacer en primer lugar:const int m1 = 7; const int mic =8; void setup() { pinMode(mic, INPUT); pinMode(m1, OUTPUT); } void loop() { digitalWrite(m1, HIGH);}
Y poner condiciones:if
&else
Pero no sé cómo hacerlo.. Después debo saber que el código, corre en bucle, por lo tanto se refresca automáticamente, y debe saber a la segunda exacta en cuanto el micrófono envía algo..