Étape 4: Envoyer les signaux
C’est aussi possible avec un microcontrôleur de goupille 8 ATTINY pour réduire les dimensions. J’en ai un, mais je ne sais pas comment l’utiliser encore.
Maintenant je vais vous montrer un exemple réel sur la façon de le faire.
Encore une fois, ce n’est pas de mon CODE, j’ai juste copié et collé pour le rendre plus facile à comprendre.
J’ai donc eu ce code lorsque j’ai appuyé sur le canal vers le haut le bouton sur mon Comcast distant. C’est le genre de télécommande que vous aurez si vous avez les petites boîtes noires qui utilisent les petites télécommandes noirs. Ils agissent comme un analogue au convertisseur numérique qui seulement peut changer de canal.
Voici le code de Serial Monitor :
A reçu :
OFF ON
36328 usec, usec 280
820 usec, usec 300
1580 usec, usec 320
usec 640, usec 240
2740 usec, usec 240
1280 usec, 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
820 usec, 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
Voici le code que j’ai faite à partir des données brutes en mettant le code dans :
Cette esquisse va changer le canal toutes les dix secondes alors vous pouvez faire autres choses
tout en regardant la télévision et de ne pas avoir à changer le canal, comme sur un ordinateur portable et ayant
il faire défiler les canaux afin d’avoir les mains libres.
Nous savons tous en appuyant sur un bouton est si difficile, alors pourquoi ne pas faire il automatisé ?
int IRledPin = 13 ; LED connectée à la broche numérique 13
La méthode setup() s’exécute une seule fois, au démarrage de l’esquisse
void setup() {}
initialiser la broche numérique IR en tant que sortie :
pinMode (IRledPin, sortie) ;
Serial.Begin(9600) ;
}
void loop()
{
SendChannelUpCode() ;
Delay(20*1000) ; attendre 20 secondes (20 secondes * 1000 millisecondes) modifier cette valeur pour différents intervalles.
}
Cette procédure envoie une impulsion de 38KHz à la IRledPin
pour un certain nombre de microsecondes. Nous allons utiliser ceci chaque fois que nous devons envoyer des codes
void pulseIR(long microsecs) {}
Nous allons compter à rebours de la nombre de microsecondes, Qu'on nous dit d’attendre
CLI() ; Cela désactive les interruptions de fond
tandis que (microsecs > 0) {}
38KHz est environ 13 microsecondes de haute et basse 13 microsecondes
digitalWrite (IRledPin, élevé) ; Cela prend environ 3 microsecondes pour arriver
delayMicroseconds(10) ; passer du temps pour 10 microsecondes
digitalWrite (IRledPin, basse) ; Cela prend environ 3 microsecondes
delayMicroseconds(10) ; passer du temps pour 10 microsecondes
au total donc 26 microsecondes
microsecs-= 26 ;
}
SEI() ; il les transforme en retour sur
}
void SendChannelUpCode() {}
C’est le code pour le canal + pour la TV COMCAST
delayMicroseconds(36328) ; Temps libre (colonne de gauche)
pulseIR(280) ; Temps sur (colonne de droite) <---ne pas mélanger ces UP
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) ;
}