PRECAUCIÓN; desde lo que he notado que funciona confiablemente en tiempos menores de 30 seg, pero cuando está extendido a minutos puede no restaurar el audio, estoy buscando en una manera mejor de contar el retraso de 3 minutos.
Pero por ahora le añades que una serie retrasa cada 30 segundos para que el tiempo total entre el silencio y restaurar.
Arduino parece tener un problema con el comando de demora cuando el retraso es de más de 35 segundos.
Usando Arduino uno puede construir un temporizador silencio que restaura el audio después de un tiempo establecido.
Podría ser un futuro desarrollo almacenar el código de cualquier control remoto de TV añadiendo una función de registro, en este tiempo que de
más allá de mi nivel de habilidad, así que si alguien quiere añadir a esto estaría encantado.
Lo único que puedo reclamar como mía es la idea, el código ha sido copiado y hackeado de varios sitios y proyectos.
Necesita un Arduino
un emisor de IR
un receptor IR
un interruptor del empuje, para iniciar el código, no una fijación cambiar sólo un solo presione y suelte
un protoboard para mantener sus componentes mientras que experimento,
Sólo cuestan unas cuantas libras por lo que es un proyecto muy barato. Añado imágenes de la final de la unidad una vez que construirlo en una caja pero por ahora aquí está el código y enlaces a las fuentes que utilicé.
Una vez que construyes los componentes primero cargan el software de lector de infrarrojos para capturar la señal de mute del mando a distancia.
Luego carga el bosquejo de Mute del TV y cambiar los valores de silenciar a aquellos que su TV requiere.
Utilicé la información y bacalao de estos sitios para diseñar mi proyecto.
http://www.Learn.Adafruit.com/ir-sensor/Making-an-Intervalometer/
http://www.righto.com/2009/08/Multi-Protocol-Infrared-Remote-Library.html
Un consejito, si quieres ver un LED de infrarrojos emiten su señal mira el LED utilizando la pantalla de su cámara digital mientras presiona el botón, mayoría de las cámaras puede ver IR, pero no utiliza un Iphone, tienen un filtro IR que IR así que no verán la señal
Conecte el receptor IR pins 11, Gnd y 5v,
Se nota que los sensores están conectados a pines diferentes en algunas de las imágenes, las conexiones son dependientes en el bosquejo de software que han cargado así que tomar nota cada vez que carga un bosquejo, en el código habrá comentarios ese estado donde se conectan los sensores.
Conectar el emisor de IR para pernos 12 y GND.
Conecte el interruptor de arranque al pin 3 y GND.
Mis intentos para unir el sketch de Arduino no aquí, así que aquí está el código para el sketch mudo, copiar y pegar en la ventana de Arduino.
La función de sincronización ha sido refinada, ver la nueva versión del código de abajo.
Las nuevas líneas son
intervalo de tiempo largo sin signo = 180000;
retraso (tiempo); esperar 3 minutos
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Este bosquejo le enviará una señal muda de Sony
Información y el código original del http://learn.adafruit.com/ir-sensor y
Información y el código original del http://learn.adafruit.com/ir-sensor/making-an-intervalometer
Crédito a Ian Lang quien me ayudó a solucionar mi problema de sincronización.
Este código es de dominio público, disfruten!
int IRledPin = 12; LED conectado al pin digital 12
int buttonPin = 3; interruptor de pie conectado a digital #3 de tierra el pin al iniciar
El método setup() se ejecuta una vez, cuando comienza el bosquejo
intervalo de tiempo largo sin signo = 180000;
void setup() {}
Inicializa el pin digital de IR como salida:
pinMode (IRledPin, salida);
pinMode (buttonPin, entrada);
digitalWrite (buttonPin, HIGH); pullup en
Serial.Begin(9600);
}
inicialmente fijado su retraso en 10 segundos para comprobar el funcionamiento y luego cambiar a 1800 durante 3 minutos silencio, o un poco menos
para permitir que el tiempo que le lleva a iniciar al silencio y a coger el final de los comerciales.
void loop()
{
Si (! digitalRead(buttonPin))
{
Serial.println ("señal de IR enviando"); muteswitch presionado
SendCMuteCode();
retraso (tiempo); esperar 3 minutos
Serial.println ("envío de IR signal2");
SendCMuteCode();
}
}
Este procedimiento envía un pulso de 38KHz a la IRledPin
para un cierto número de microsegundos. Esto usaremos siempre que necesitemos enviar códigos
void pulseIR(long microsecs) {}
te cuenta regresiva desde el número de microsegundos que se nos dice que esperar
CLI(); Esto apaga cualquier interrupciones de fondo
mientras (microsecs > 0) {}
38 kHz es alrededor de 13 microsegundos de alta y baja 13 microsegundos
digitalWrite (IRledPin, alto); Esto toma cerca de 3 microsegundos a pasar
delayMicroseconds(10); rato de 10 microsegundos
digitalWrite (IRledPin, bajo); Esto también toma cerca de 3 microsegundos
delayMicroseconds(10); rato de 10 microsegundos
en conjunto tan 26 microsegundos
microsecs-= 26;
}
SEI(); Esto los convierte en
}
void SendCMuteCode() {}
Este es el código para mi Canon particular, para otros el tutorial
' agarrar ' el código correcto del mando a distancia
delayMicroseconds(2595);
pulseIR(2450);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(1200);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(1250);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(650);
delayMicroseconds(600);
pulseIR(1200);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(650);
delayMicroseconds(600);
pulseIR(650);
Delay(65); esperar 65 milisegundos antes de enviarlo de nuevo
delayMicroseconds(2595);
pulseIR(2450);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(1200);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(1250);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(650);
delayMicroseconds(600);
pulseIR(1200);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(650);
delayMicroseconds(600);
pulseIR(650);
}