Oui, le code est asser long, et répartie sur plusieurs onglet.
Je te met la partie du code qui me pose problème:
#include <LiquidCrystal.h>
#include <RCSwitch.h>
#include <EEPROM.h>
#include "simpleMinuteur.h"
simpleMinuteur Klaxon500(500);
simpleMinuteur Klaxon300(300);
simpleMinuteur Klaxon3000(3000);
// Lcd + pinout
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
RCSwitch mySwitch = RCSwitch();
// 0= Neutre 1= Rouge 2= Vert
int Zone1 = 0;
int Zone2 = 0;
int Zone3 = 0;
int Zone4 = 0;
int Zone5 = 0;
int Zone6 = 0;
#define AnalogBtnPin A0
int AnalogBtn =0; //Valeur entrée A0
int Counterminute = 0;
unsigned long TempsInit = 0;
unsigned long TempsReel = 0;
unsigned long Temps = 60;
unsigned long TempsSec = 01;
unsigned long TempsMil = 0;
unsigned long TempsMin = 0;
int Klaxon = 12;
int R1 = 23;
int R2 = 22;
int R3 = 25;
int R4 = 24;
int R5 = 27;
int R6 = 26;
int R7 = 29;
int R8 = 28;
int R9 = 31;
int R10 = 30;
int R11 = 33;
int R12 = 32;
int R13 = 35;
int R14 = 34;
int R15 = 37;
int R16 = 36;
int Rouge = 1;
int Vert = 2;
int Z1 = 0;
int Z2 = 0;
int Z3 = 0;
//Code telecommande RF
#define Z1R 14505408
#define Z1V 14505219
#define Z2R 350144
#define Z2V 349955
#define Z3R 4211136
#define Z3V 4210947
void setup() {
//Lecture valeur eeprom--> Counterminute
Counterminute = EEPROM.read(1);
pinMode(Klaxon, OUTPUT);
pinMode(R1, OUTPUT);
pinMode(R2, OUTPUT);
pinMode(R3, OUTPUT);
pinMode(R4, OUTPUT);
pinMode(R5, OUTPUT);
pinMode(R6, OUTPUT);
pinMode(R7, OUTPUT);
pinMode(R8, OUTPUT);
pinMode(R9, OUTPUT);
pinMode(R10, OUTPUT);
pinMode(R11, OUTPUT);
pinMode(R12, OUTPUT);
pinMode(R13, OUTPUT);
pinMode(R14, OUTPUT);
pinMode(R15, OUTPUT);
pinMode(R16, OUTPUT);
digitalWrite(R1, HIGH);
digitalWrite(R2, HIGH);
digitalWrite(R3, HIGH);
digitalWrite(R4, HIGH);
digitalWrite(R5, HIGH);
digitalWrite(R6, HIGH);
digitalWrite(R7, HIGH);
digitalWrite(R8, HIGH);
digitalWrite(R9, HIGH);
digitalWrite(R10, HIGH);
digitalWrite(R11, HIGH);
digitalWrite(R12, HIGH);
digitalWrite(R13, HIGH);
digitalWrite(R14, HIGH);
digitalWrite(R15, HIGH);
digitalWrite(R16, HIGH);
Serial.begin(9600);
lcd.begin(16, 2);
mySwitch.enableReceive(0); // Receiver on inerrupt 0 => that is pin #2
lcd.setCursor(5, 0);
lcd.print("CQB GS");
lcd.setCursor(0, 1);
lcd.print(" By Naudnaud");
delay(2000);
lcd.clear();
}
void loop() {
lcd.setCursor(0, 0);
lcd.print("Gauche Domination");
lcd.setCursor(2, 1);
lcd.print("Droite Timer");
while(1) {
AnalogBtn = analogRead(AnalogBtnPin);
// BP Gauche Domination
if(AnalogBtn >= 399 && AnalogBtn <= 419) // Boutons Gauche
{Domination(); }
// BP droite Timer
if(AnalogBtn >= 0 && AnalogBtn <= 10) // Boutons Droite
{ReglageMin();}
}//fin while
}//fin loop
-------------------------------------------------------------
void Domination(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Z1:");
lcd.setCursor(5, 0);
lcd.print("Z2:");
lcd.setCursor(11, 0);
lcd.print("Z3:");
lcd.setCursor(3, 0);
lcd.print("N");
lcd.setCursor(9, 0);
lcd.print("N");
lcd.setCursor(15, 0);
lcd.print("N");
while(1) {
Tempo_relais();
// Fin rouge
if ( Zone1 == 1 && Zone2 == 1 && Zone3 == 1 )
{ lcd.clear();
digitalWrite(R9, LOW);
lcd.setCursor(2, 0);
lcd.print("Fin du jeux");
lcd.setCursor(2, 1);
lcd.print("Rouge WIN !");
delay(3000);
digitalWrite(R9, HIGH);
while(1) {
//rien
}
};
// Fin bleu
if ( Zone1 == 2 && Zone2 == 2 && Zone3 == 2 )
{ lcd.clear();
digitalWrite(R9, LOW);
lcd.setCursor(2, 0);
lcd.print("Fin du jeux");
lcd.setCursor(3, 1);
lcd.print("Vert WIN !");
delay(3000);
digitalWrite(R9, HIGH);
while(1) {
//rien
}
};
if (mySwitch.available()) {
int value = mySwitch.getReceivedValue();
switch (value) {
case Z1R:
if ( Z1 == Rouge ) {break;}
Z1 = Rouge;
lcd.setCursor(3, 0);
lcd.print("R");
Zone1 = 1;
digitalWrite(R9, LOW);
Klaxon3000.demarrer();
digitalWrite(R1, LOW);
digitalWrite(R16, HIGH);
break;
case Z1V:
if ( Z1 == Vert ) {break;}
Z1 = Vert;
lcd.setCursor(3, 0);
lcd.print("V");
Zone1 = 2;
digitalWrite(R9, LOW);
Klaxon3000.demarrer();
digitalWrite(R16, LOW);
digitalWrite(R1, HIGH);
break;
case Z2R:
if ( Z2 == Rouge ) {break;}
Z2 = Rouge;
lcd.setCursor(9, 0);
lcd.print("R");
Zone2 = 1;
digitalWrite(R9, LOW);
Klaxon3000.demarrer();
digitalWrite(R2, LOW);
digitalWrite(R15, HIGH);
break;
case Z2V:
if ( Z2 == Vert ) {break;}
Z2 = Vert;
lcd.setCursor(9, 0);
lcd.print("V");
Zone2 = 2;
digitalWrite(R9, LOW);
Klaxon3000.demarrer();
digitalWrite(R15, LOW);
digitalWrite(R2, HIGH);
break;
case Z3R:
if ( Z3 == Rouge ) {break;}
Z3 = Rouge;
lcd.setCursor(15, 0);
lcd.print("R");
Zone3 = 1;
digitalWrite(R9, LOW);
Klaxon500.demarrer();
digitalWrite(R3, LOW);
digitalWrite(R14, HIGH);
break;
case Z3V:
if ( Z3 == Vert ) {break;}
Z3 = Vert;
lcd.setCursor(15, 0);
lcd.print("V");
Zone3 = 2;
digitalWrite(R9, LOW);
Klaxon500.demarrer();
digitalWrite(R14, LOW);
digitalWrite(R3, HIGH);
break;
default:
lcd.setCursor(3, 0);
lcd.print("?");
break;
}
mySwitch.resetAvailable();
}
}//fin While
}//fin void domination
-------------------------------------------------
void Tempo_relais(){
if (Klaxon3000.estTermine())
{
digitalWrite(R9, HIGH);
Klaxon3000.redemarrer();
}
if (Klaxon300.estTermine())
{
digitalWrite(R9, HIGH);
Klaxon300.redemarrer();
}
if (Klaxon500.estTermine())
{
digitalWrite(R9, HIGH);
Klaxon500.redemarrer();
}
}//fin void tempo_relais