Vous êtes sur la page 1sur 9

#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