Hur du styr din TV med en Arduino! (4 / 4 steg)
Steg 4: Skicka signalerna
Detta kan också göras med en ATTINY 8 pin microcontroller att skära ner på storlek. Jag har en men jag är inte säker på hur till använda den ännu.
Nu kommer jag att visa dig en verklig-värld exempel på hur man gör detta.
Återigen, detta är inte min kod, jag kopierat och klistrat in för att göra det lättare att förstå.
Så fick jag denna kod när jag tryckte på kanalen upp knappen på min Comcast remote. Detta är typ av fjärrkontrollen som du har om du har små svarta lådor som använder de små svarta fjärrkontrollerna. De fungerar som en analog till digital omvandlare rutan som bara kan byta kanal.
Här är Serial Monitor koden:
Emot:
OFF ON
36328 usec, 280 usec
820 usec, 300 usec
1580 usec, 320 usec
640 usec, 240 usec
2740 usec, 240 usec
1280 usec, 240 usec
1240 usec, 240 usec
1120 usec, 240 usec
2600 usec, 240 usec
12740 usec, 240 usec
840 usec, 240 usec
980 usec, 240 usec
700 usec, 240 usec
700 usec, 240 usec
720 usec, 240 usec
2460 usec, 260 usec
700 usec, 240 usec
700 usec, 240 usec
14904 usec, 260 usec
820 usec, 240 usec
1660 usec, 240 usec
700 usec, 260 usec
2740 usec, 240 usec
1240 usec, 240 usec
1260 usec, 240 usec
1100 usec, 240 usec
2620 usec, 240 usec
12720 usec, 260 usec
840 usec, 220 usec
2080 usec, 240 usec
1780 usec, 260 usec
700 usec, 240 usec
700 usec, 240 usec
2480 usec, 240 usec
700 usec, 240 usec
700 usec, 240 usec
Här är den kod som jag gjort från raw-data genom att sätta koden i:
Denna skiss kommer byta kanal var tio sekunder så du kan göra andra saker
medan du tittar på tv och inte behöva byta kanal, som att vara på en bärbar dator och ha
det cykla genom kanaler så att du har fria händer.
Vi vet alla att trycka på en knapp är så hårt, så varför inte göra det automatiserad?
int IRledPin = 13. LED är ansluten till digital stift 13
Metoden setup() körs en gång, när skissen startar
void setup() {
initiera IR digital stiftet som en utgång:
pinMode (IRledPin, OUTPUT);
Serial.BEGIN(9600);
}
void loop()
{
SendChannelUpCode();
Delay(20*1000); vänta tjugo sekunder (20 sekunder * 1000 millisekunder) ändra detta värde för olika intervall.
}
Detta förfarande skickar en 38KHz puls till IRledPin
för en viss # mikrosekunder. Vi använder detta när vi behöver skicka koder
void pulseIR(long microsecs) {
Vi ska räkna ner från numrera av mikrosekunder vi får höra att vänta
CLI(); Detta stänger av någon bakgrund avbryter
samtidigt (microsecs > 0) {
38 kHz är cirka 13 mikrosekunder hög och 13 mikrosekunder låg
digitalWrite (IRledPin, hög); Detta tar ca 3 mikrosekunder att hända
delayMicroseconds(10); hänga ut för 10 mikrosekunder
digitalWrite (IRledPin, låg); Detta tar också ca 3 mikrosekunder
delayMicroseconds(10); hänga ut för 10 mikrosekunder
så 26 mikrosekunder alldeles
microsecs-= 26.
}
SEI(); Detta visar dem tillbaka på
}
void SendChannelUpCode() {
Detta är koden för kanal + för TV COMCAST
delayMicroseconds(36328); Ledighet (vänster kolumn)
pulseIR(280); Tid på (högerspalten) <---inte blanda dessa upp
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);
}