0% ont trouvé ce document utile (0 vote)
99 vues9 pages

Contrôle IR d'un système de relais Arduino

Le document décrit le pilotage d'une maquette ferroviaire à l'aide d'une télécommande infrarouge et d'un Arduino. Il contient le code pour gérer les différents relais commandant les animations via les touches de la télécommande.

Transféré par

tintin
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
99 vues9 pages

Contrôle IR d'un système de relais Arduino

Le document décrit le pilotage d'une maquette ferroviaire à l'aide d'une télécommande infrarouge et d'un Arduino. Il contient le code pour gérer les différents relais commandant les animations via les touches de la télécommande.

Transféré par

tintin
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

#include "IRremote.

h"

// cette partie concerne l'infrarouge


// numéro du pin récepteur
long int res_val;
const int recepteur = 8; // le signal IR est reçu sur la pin 8 de l’arduino Uno

// déclaration de l'objet IRrecv


IRrecv irrecv(recepteur);
decode_results results;

// cette partie concerne le pilotage des 8 relais et du relais inverseur


const int RELAIS1 = 25; // fil marron, animation angelot
const int RELAIS2 = 24; // fil orange, animation père Noël avec un bonnet
const int RELAIS3 = 23; // fil jaune, animation père Noël avec un sapin
const int RELAIS4 = 22; // fil vert, animation cheval à bascule
const int RELAIS5 = 21; // fil bleu, allumage éclairage maisons et lampadaires
const int RELAIS6 = 20; // fil gris, animation du manège
const int RELAIS7 = 19; // fil blanc, alimentation de la voie pour le démarrage du
train en marche avant
const int RELAIS8 = 18; // fil noir, en réserve
const int RELAISINV = 17 ; // fil violet, pour le relais inverseur

// Stockage de l'état des relais, à l'initialisation rien ne bouge sur la maquette


boolean etatRelais1 = HIGH; // le relais est non passant
boolean etatRelais2 = HIGH; // le relais est non passant
boolean etatRelais3 = HIGH; // le relais est non passant
boolean etatRelais4 = HIGH; // le relais est non passant
boolean etatRelais5 = HIGH; // le relais est non passant
boolean etatRelais6 = HIGH; // le relais est non passant
boolean etatRelais7 = HIGH; // le relais est non passant
boolean etatRelais8 = HIGH; // le relais est non passant
boolean etatRelaisinv = HIGH ; // dans cette position le train est prévu pour
démarrer en marche avant dans le sens des aiguilles d'une montre

// déclaration de la led de contrôle

const int LEDVERTE = 9; // la Led de contrôle de la réception d'un signal IR est sur la
pin 9
boolean etatledcontrole = LOW; // la led de contrôle est éteinte par défaut

// variables prédeterminées des différents délais

int m = 500; // temps allumage led de contrôle


int n = 300; // anti rebond pour les touches de la télécommande et le temps de
décode infrarouge

void setup() {

// déclaration des sorties pour les 9 relais

pinMode(RELAIS1, OUTPUT);
pinMode(RELAIS2, OUTPUT);
pinMode(RELAIS3, OUTPUT);
pinMode(RELAIS4, OUTPUT);
pinMode(RELAIS5, OUTPUT);
pinMode(RELAIS6, OUTPUT);
pinMode(RELAIS7, OUTPUT);
pinMode(RELAIS8, OUTPUT);
pinMode(RELAISINV, OUTPUT);

// mise au repos de tous les relais à la mise en route


digitalWrite(RELAIS1, etatRelais1);
digitalWrite(RELAIS2, etatRelais2);
digitalWrite(RELAIS3, etatRelais3);
digitalWrite(RELAIS4, etatRelais4);
digitalWrite(RELAIS5, etatRelais5);
digitalWrite(RELAIS6, etatRelais6);
digitalWrite(RELAIS7, etatRelais7);
digitalWrite(RELAIS8, etatRelais8);
digitalWrite(RELAISINV, etatRelaisinv);

//initialisation interface série


Serial.begin(9600);

// initialisation du récepteur IR
irrecv.enableIRIn();

pinMode(LEDVERTE, OUTPUT); // la led verte est sur une sortie


}

void loop()
{
// lecture de la télécommande
if (irrecv.decode(&results))

{
// récupération du code
res_val = results.value;

// transfert à l'interface série


Serial.println(res_val, HEX);

// réception nouvelle valeur


irrecv.resume();

// exploitation des codes reçus


switch (res_val) {

case 0xFF9867 : // code Hexa touche 0

// début traitement touche 0 le relais n°1 colle et l'angelot est animé jusqu'à
nouvel appui sur la même touche 0
// on change le relais n°1 d'état
etatRelais1 = !etatRelais1; //inversion d'état de HIGH à LOW
digitalWrite(RELAIS1, etatRelais1); // le relais change d'état
delay(n); // antirebond
// la led verte de contrôle s'allume 1/2 seconde puis s'éteind
digitalWrite(LEDVERTE, HIGH);
delay(m);
digitalWrite(LEDVERTE, LOW);
break;
// fin traitement touche 0

case 0xFFA25D : // code Hexa touche 1

// début traitement touche 1e père Noël avec bonnet est animé jusqu'à nouvel
appui sur la même touche 1
// on change le relais n°2 d'état
etatRelais2 = !etatRelais2; //inversion d'état de HIGH à LOW
digitalWrite(RELAIS2, etatRelais2); // le relais change d'état
delay(n); // antirebond
// la led verte de contrôle s'allume 1/2 seconde puis s'éteind
digitalWrite(LEDVERTE, HIGH);
delay(m);
digitalWrite(LEDVERTE, LOW);
break;

case 0xFF629D : // code Hexa touche 2

// début traitement touche 2 1e père Noël avec son sapin est animé jusqu'à nouvel
appui sur la même touche 2
// on change le relais n°3 d'état
etatRelais3 = !etatRelais3; //inversion d'état de HIGH à LOW
digitalWrite(RELAIS3, etatRelais3); // le relais change d'état
delay(n); // antirebond
// la led verte de contrôle s'allume 1/2 seconde puis s'éteind
digitalWrite(LEDVERTE, HIGH);
delay(m);
digitalWrite(LEDVERTE, LOW);
break;
// fin traitement touche 2

case 0xFFE21D : // code Hexa touche 3

// début traitement touche 3 1e cheval à bascule est animé jusqu'à nouvel appui
sur la même touche 3
// on change le relais n°4 d'état
etatRelais4 = !etatRelais4; //inversion d'état de HIGH à LOW
digitalWrite(RELAIS4, etatRelais4); // le relais change d'état
delay(n); // antirebond
// la led verte de contrôle s'allume 1/2 seconde puis s'éteind
digitalWrite(LEDVERTE, HIGH);
delay(m);
digitalWrite(LEDVERTE, LOW);
break;
// fin traitement touche 3

case 0xFF22DD : // code Hexa touche 4

// début traitement touche 4 mise en route de l'éclairage des maisons et des


lampadaires jusqu'à nouvel appui sur la même touche 4
// on change le relais n°5 d'état
etatRelais5 = !etatRelais5; //inversion d'état de HIGH à LOW
digitalWrite(RELAIS5, etatRelais5); // le relais change d'état
delay(n); // antirebond
// la led verte de contrôle s'allume 1/2 seconde puis s'éteind
digitalWrite(LEDVERTE, HIGH);
delay(m);
digitalWrite(LEDVERTE, LOW);
break;
// fin traitement touche 4

case 0xFF02FD : // code Hexa touche 5

// début traitement touche 5 mise en route du manège jusqu'à nouvel appui sur la
même touche 4
// on change le relais n°6 d'état
etatRelais6 = !etatRelais6; //inversion d'état de HIGH à LOW
digitalWrite(RELAIS6, etatRelais6); // le relais change d'état
delay(n); // antirebond
// la led verte de contrôle s'allume 1/2 seconde puis s'éteind
digitalWrite(LEDVERTE, HIGH);
delay(m);
digitalWrite(LEDVERTE, LOW);
break;
// fin traitement touche 5

case 0xFFC23D : // code Hexa touche 6

// début traitement touche 6 arrêt de tous les sons jusqu'à nouvel appui sur la
même touche 6
// code pour l'interface audio
// la led verte de contrôle s'allume 1/2 seconde puis s'éteind
digitalWrite(LEDVERTE, HIGH);
delay(m);
digitalWrite(LEDVERTE, LOW);
break;
// fin traitement touche 6

case 0xFFE01F : // code Hexa touche 7

// début traitement touche 7 joue le son "avertissement" jusqu'à nouvel appui


sur la même touche 7
// code pour l'interface audio
// la led verte de contrôle s'allume 1/2 seconde puis s'éteind
digitalWrite(LEDVERTE, HIGH);
delay(m);
digitalWrite(LEDVERTE, LOW);
break;
// fin traitement touche 7

case 0xFFA857 : // code Hexa touche 8

// début traitement touche 7 joue le son "klaxon" jusqu'à nouvel appui sur la
même touche 8
// code pour l'interface audio
// la led verte de contrôle s'allume 1/2 seconde puis s'éteind
digitalWrite(LEDVERTE, HIGH);
delay(m);
digitalWrite(LEDVERTE, LOW);
break;
// fin traitement touche 8

case 0xFF906F : // code Hexa touche 9

// début traitement touche 9 joue le son "vapeur" jusqu'à nouvel appui sur la
même touche 9
// code pour l'interface audio
// la led verte de contrôle s'allume 1/2 seconde puis s'éteind
digitalWrite(LEDVERTE, HIGH);
delay(m);
digitalWrite(LEDVERTE, LOW);
break;
// fin traitement touche 9
case 0xFF6897 : // code Hexa touche * (étoile)

// début traitement touche * joue le son "musique du manège" jusqu'à nouvel


appui sur la même touche *
// code pour l'interface audio
// la led verte de contrôle s'allume 1/2 seconde puis s'éteind
digitalWrite(LEDVERTE, HIGH);
delay(m);
digitalWrite(LEDVERTE, LOW);
break;
// fin traitement touche *

case 0xFFB04F : // code Hexa touche # (dièse)

// début traitement touche # est reservée et peut jouer un son jusqu'à nouvel
appui sur la même touche #
// code pour l'interface audio
// la led verte de contrôle s'allume 1/2 seconde puis s'éteind
digitalWrite(LEDVERTE, HIGH);
delay(m);
digitalWrite(LEDVERTE, LOW);
break;
// fin traitement touche #

case 0xFF18E7 : // code Hexa touche flèche gauche

// début traitement touche flèche gauche démarre le train en marche avant


jusqu'à nouvel appui sur la même touche flèche haute
// code pour le LN 298
// la led verte de contrôle s'allume 1/2 seconde puis s'éteind
digitalWrite(LEDVERTE, HIGH);
delay(m);
digitalWrite(LEDVERTE, LOW);
break;
// fin traitement touche flèche gauche

case 0xFF10EF : // code Hexa touche flèche haute

// début traitement touche flèche gauche augmente la vitesse du train jusqu'à


nouvel appui sur la même touche flèche haute
// code pour le LN 298
// la led verte de contrôle s'allume 1/2 seconde puis s'éteind
digitalWrite(LEDVERTE, HIGH);
delay(m);
digitalWrite(LEDVERTE, LOW);
break;
// fin traitement touche flèche haute

case 0xFF4AB5 : // code Hexa touche flèche basse

// début traitement touche flèche basse arrêt du train jusqu'à nouvel appui sur
la même touche flèche haute
// code pour le LN 298
// la led verte de contrôle s'allume 1/2 seconde puis s'éteind
digitalWrite(LEDVERTE, HIGH);
delay(m);
digitalWrite(LEDVERTE, LOW);
break;
// fin traitement touche flèche gauche

case 0xFF5AA5 : // code Hexa touche flèche droite

// début traitement touche flèche droite marche arrière jusqu'à nouvel appui sur
la même touche flèche droite
// code pour le LN 298
// la led verte de contrôle s'allume 1/2 seconde puis s'éteind
digitalWrite(LEDVERTE, HIGH);
delay(m);
digitalWrite(LEDVERTE, LOW);
break;
// fin traitement touche flèche droite

case 0xFF38C7 : // code Hexa touche OK

// début traitement touche OK coupure des 8 relais


digitalWrite(RELAIS1, HIGH);
digitalWrite(RELAIS1, HIGH);
digitalWrite(RELAIS2, HIGH);
digitalWrite(RELAIS3, HIGH);
digitalWrite(RELAIS4, HIGH);
digitalWrite(RELAIS5, HIGH);
digitalWrite(RELAIS6, HIGH);
digitalWrite(RELAIS7, HIGH);
digitalWrite(RELAIS8, HIGH);
// la led verte de contrôle s'allume 1/2 seconde puis s'éteind
digitalWrite(LEDVERTE, HIGH);
delay(m);
digitalWrite(LEDVERTE, LOW);
break;
// fin traitement touche flèche gauche
}

Vous aimerez peut-être aussi