Stap 4: De signalen
Dit kan ook gebeuren met een ATTINY 8 pin microcontroller om te bezuinigen op de grootte. Ik heb een, maar ik ben niet zeker hoe het te gebruiken nog.
Nu zal ik je laten zien een echte wereld voorbeeld over hoe dit te doen.
NOGMAALS, dit IS niet mijn CODE, ik gewoon gekopieerd en geplakt om het gemakkelijker te begrijpen.
Dus kreeg ik deze code wanneer ik het kanaal opwaarts knop op mijn Comcast RAS drukte. Dit is het soort afstandsbediening die je zal hebben als je de kleine zwarte dozen die gebruikmaken van de kleine zwarte afstandsbedieningen. Zij fungeren als een analoog naar digitaal convertor vak dat alleen kanalen kan veranderen.
Hier is de code van de seriële Monitor:
Ontvangen:
UIT AAN
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
Hier is de code die ik heb van de ruwe gegevens gemaakt door de invoering van de code in:
Deze sketch verandert het kanaal om de tien seconden zodat u andere dingen kunt doen
terwijl u tv kijkt en niet hoeft te wijzigen van het kanaal, zoals op een laptop en
het doorlopen de kanalen zodat u hands free.
We weten allemaal indrukken van een knop is zo hard, dus waarom niet het geautomatiseerd?
int IRledPin = 13; LED aangesloten op digital pin 13
De Setup-methode wordt uitgevoerd zodra, wanneer de schets begint
VOID Setup {}
Initialiseer de IR digitale pin als uitgang:
pinMode (IRledPin, uitvoer);
Serial.begin(9600);
}
void loop
{
SendChannelUpCode();
delay(20*1000); wacht twintig seconden (20 seconden * 1000 milliseconden) deze waarde voor verschillende intervallen wijzigen.
}
Deze procedure stuurt een 38KHz puls naar de IRledPin
voor een bepaalde aantal microseconden. We zullen dit gebruiken wanneer we nodig voor het verzenden van codes
VOID pulseIR(long microsecs) {}
We zullen af te tellen van het aantal microseconden die wij worden verteld om te wachten
cli(); Dit schakelt een achtergrond interrupts
terwijl (microsecs > 0) {}
38 kHz is ongeveer 13 microseconden hoge en lage 13 microseconden
digitalWrite (IRledPin, hoge); Dit duurt ongeveer 3 microseconden gebeuren
delayMicroseconds(10); voor de 10 microseconden hangen
digitalWrite (IRledPin, laag); Dit duurt ook ongeveer 3 microseconden
delayMicroseconds(10); voor de 10 microseconden hangen
Zo 26 microseconden helemaal
microsecs-= 26;
}
Sei(); Hiermee schakelt u hen terug op
}
VOID SendChannelUpCode() {}
Dit is de code voor het kanaal + voor de TV COMCAST
delayMicroseconds(36328); Verlof (linker kolom)
pulseIR(280); Tijd op (rechter kolom) <---DO NOT MIX deze omhoog
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);
}