Paso 4: Envío de las señales
Esto puede hacerse también con un microcontrolador de 8 ATTINY pin para reducir el tamaño. Tengo uno pero no estoy seguro de cómo usarlo todavía.
Ahora mostrará usted un ejemplo real sobre cómo hacer esto.
Otra vez, este no es mi código, sólo copiar y pegar para que sea más fácil de entender.
Así que conseguí este código cuando apreto el canal botón en mi Comcast remoto. Este es el tipo de control remoto que tienes si tienes las cajas negras pequeñas que usan los mandos negro pequeño. Actúan como un análogo al convertidor digital que sólo puede cambiar de canal.
Aquí está el código de serie Monitor:
Recibido:
OFF ON
36328 usec, usec 280
usec 820, 300 usec
1580 usec, usec 320
usec 640, usec 240
2740 usec, usec 240
usec 1280, usec 240
1240 usec, usec 240
1120 usec, usec 240
2600 usec, usec 240
12740 usec, usec 240
usec 840, usec 240
usec 980, usec 240
usec 700, usec 240
usec 700, usec 240
usec 720, usec 240
2460 usec, usec 260
usec 700, usec 240
usec 700, usec 240
14904 usec, usec 260
usec 820, usec 240
1660 usec, usec 240
usec 700, usec 260
2740 usec, usec 240
1240 usec, usec 240
1260 usec, usec 240
1100 usec, usec 240
2620 usec, usec 240
12720 usec, usec 260
usec 840, usec 220
2080 usec, usec 240
1780 usec, usec 260
usec 700, usec 240
usec 700, usec 240
2480 usec, usec 240
usec 700, usec 240
usec 700, usec 240
Aquí está el código que hice de los datos en bruto poniendo el código:
Este bosquejo va a cambiar el canal cada 10 segundos por lo que puede estar haciendo otras cosas
mientras que viendo tv y no tener que cambiar de canal, como en un ordenador portátil y
ciclo a través de los canales para tener manos libres.
Todos sabemos pulsar un botón es tan difícil, así que ¿por qué no hacer automatizado?
int IRledPin = 13; LED conectado al pin digital 13
El método setup() se ejecuta una vez, cuando comienza el bosquejo
void setup() {}
Inicializa el pin digital de IR como salida:
pinMode (IRledPin, salida);
Serial.Begin(9600);
}
void loop()
{
SendChannelUpCode();
Delay(20*1000); Espere 20 segundos (20 segundos * 1000 milisegundos) cambiar este valor para diferentes intervalos.
}
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 SendChannelUpCode() {}
Este es el código para el canal + de la COMCAST TV
delayMicroseconds(36328); Tiempo libre (columna izquierda)
pulseIR(280); Tiempo en (columna derecha) <---no mezclar estas hasta
delayMicroseconds(820);
pulseIR(300);
delayMicroseconds(1580);
pulseIR(320);
delayMicroseconds(640);
pulseIR(240);
delayMicroseconds(1280);
pulseIR(240);
delayMicroseconds(1240);
pulseIR(240);
delayMicroseconds(1120);
pulseIR(240);
delayMicroseconds(2600);
pulseIR(240);
delayMicroseconds(12740);
pulseIR(240);
delayMicroseconds(840);
pulseIR(240);
delayMicroseconds(980);
pulseIR(240);
delayMicroseconds(700);
pulseIR(240);
delayMicroseconds(700);
pulseIR(240);
delayMicroseconds(720);
pulseIR(240);
delayMicroseconds(2460);
pulseIR(240);
delayMicroseconds(700);
pulseIR(240);
delayMicroseconds(700);
pulseIR(240);
delayMicroseconds(14904);
pulseIR(240);
delayMicroseconds(820);
pulseIR(240);
delayMicroseconds(1600);
pulseIR(240);
delayMicroseconds(700);
pulseIR(260);
delayMicroseconds(2740);
pulseIR(240);
delayMicroseconds(1240);
pulseIR(240);
delayMicroseconds(1260);
pulseIR(240);
delayMicroseconds(1100);
pulseIR(240);
delayMicroseconds(2620);
pulseIR(240);
delayMicroseconds(12720);
pulseIR(260);
delayMicroseconds(840);
pulseIR(220);
delayMicroseconds(2080);
pulseIR(240);
delayMicroseconds(1780);
pulseIR(260);
delayMicroseconds(700);
pulseIR(240);
delayMicroseconds(700);
pulseIR(240);
delayMicroseconds(2480);
pulseIR(240);
delayMicroseconds(700);
pulseIR(240);
delayMicroseconds(700);
pulseIR(240);
}