- Code:
void RegPoint() {
Reset:
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Reglages Points");
delay(1000);
//Reglage Cibles 1
if (RegCible == 0 ) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Points Cible 1 ");
lcd.setCursor(7,1);
lcd.print(Cibles1);
while(1) {
if(digitalRead(ButtonHaut) == HIGH) // Boutons Haut
{tone(12, 800, 300);
Cibles1 = (Cibles1 + 5);
lcd.setCursor(7,1);
lcd.print(Cibles1);
delay(DelayBP);}
if(digitalRead(ButtonBas) == HIGH) // Boutons Bas
{tone(12, 800, 300);
Cibles1 = (Cibles1 - 5);
lcd.setCursor(7,1);
lcd.print(Cibles1);
delay(DelayBP); }
if (Cibles1 < 00) {Cibles1 = 00;
lcd.setCursor(7,1);
lcd.print(Cibles1); }
if (Cibles1 > 200) {Cibles1 = 200;
lcd.setCursor(7,1);
lcd.print(Cibles1); }
//Affichage 0
if (Cibles1 <= 0 ) {
lcd.setCursor(7,1);
lcd.print(Cibles1 , DEC);
lcd.setCursor(8,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" "); }
//Affichage + de 10
if (Cibles1 >= 100 ) {
lcd.setCursor(7,1);
lcd.print(Cibles1 , DEC);
lcd.setCursor(10,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" "); }
//Affichage - de 10
if (Cibles1 > 1 && Cibles1 < 100 ) {
lcd.setCursor(7,1);
lcd.print(Cibles1 , DEC);
lcd.setCursor(9,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" "); }
if(digitalRead(ButtonSelect) == HIGH) // Boutons OK
{tone(12, 800, 300);
EEPROM.write(1, Cibles1);
RegCible++;
goto Reset;}
} //fin while
}//fin if regcible
if (RegCible == 1 ) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Points Cible 2 ");
lcd.setCursor(7,1);
lcd.print(Cibles2);
while(1) {
if(digitalRead(ButtonHaut) == HIGH) // Boutons Haut
{tone(12, 800, 300);
Cibles2 = (Cibles2 + 5);
lcd.setCursor(7,1);
lcd.print(Cibles2);
delay(DelayBP);}
if(digitalRead(ButtonBas) == HIGH) // Boutons Bas
{tone(12, 800, 300);
Cibles2 = (Cibles2 - 5);
lcd.setCursor(7,1);
lcd.print(Cibles2);
delay(DelayBP); }
if (Cibles2 < 00) {Cibles2 = 00;
lcd.setCursor(7,1);
lcd.print(Cibles2); }
if (Cibles2 > 200) {Cibles2 = 200;
lcd.setCursor(7,1);
lcd.print(Cibles2); }
//Affichage 0
if (Cibles2 <= 0 ) {
lcd.setCursor(7,1);
lcd.print(Cibles2 , DEC);
lcd.setCursor(8,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" "); }
//Affichage + de 10
if (Cibles2 >= 100 ) {
lcd.setCursor(7,1);
lcd.print(Cibles2 , DEC);
lcd.setCursor(10,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" "); }
//Affichage - de 10
if (Cibles2 < 100 ) {
lcd.setCursor(7,1);
lcd.print(Cibles2 , DEC);
lcd.setCursor(9,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" "); }
if(digitalRead(ButtonSelect) == HIGH) // Boutons OK
{tone(12, 800, 300);
EEPROM.write(2, Cibles2);
RegCible++;
goto Reset;}
} //fin while
}//fin if regcible
if (RegCible == 2 ) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Points Cible 3 ");
lcd.setCursor(7,1);
lcd.print(Cibles3);
while(1) {
if(digitalRead(ButtonHaut) == HIGH) // Boutons Haut
{tone(12, 800, 300);
Cibles3 = (Cibles3 + 5);
lcd.setCursor(7,1);
lcd.print(Cibles3);
delay(DelayBP); }
if(digitalRead(ButtonBas) == HIGH) // Boutons Bas
{tone(12, 800, 300);
Cibles3 = (Cibles3 - 5);
lcd.setCursor(7,1);
lcd.print(Cibles3);
delay(DelayBP);}
if (Cibles3 < 00) {Cibles3 = 00;
lcd.setCursor(7,1);
lcd.print(Cibles3); }
if (Cibles3 > 200) {Cibles3 = 200;
lcd.setCursor(7,1);
lcd.print(Cibles3); }
//Affichage 0
if (Cibles3 <= 0 ) {
lcd.setCursor(7,1);
lcd.print(Cibles3 , DEC);
lcd.setCursor(8,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" "); }
//Affichage + de 10
if (Cibles3 >= 100 ) {
lcd.setCursor(7,1);
lcd.print(Cibles3 , DEC);
lcd.setCursor(10,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" "); }
//Affichage - de 10
if (Cibles3 < 100 ) {
lcd.setCursor(7,1);
lcd.print(Cibles3 , DEC);
lcd.setCursor(9,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" "); }
if(digitalRead(ButtonSelect) == HIGH) // Boutons OK
{tone(12, 800, 300);
EEPROM.write(3, Cibles3);
RegCible++;
goto Reset;}
} //fin while
}//fin if regcible
if (RegCible == 3 ) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Points Cible 4 ");
lcd.setCursor(7,1);
lcd.print(Cibles4);
while(1) {
if(digitalRead(ButtonHaut) == HIGH) // Boutons Haut
{tone(12, 800, 300);
Cibles4 = (Cibles4 + 5);
lcd.setCursor(7,1);
lcd.print(Cibles4);
delay(DelayBP); }
if(digitalRead(ButtonBas) == HIGH) // Boutons Bas
{tone(12, 800, 300);
Cibles4 = (Cibles4 - 5);
lcd.setCursor(7,1);
lcd.print(Cibles4);
delay(DelayBP); }
if (Cibles4 < 00) {Cibles4 = 00;
lcd.setCursor(7,1);
lcd.print(Cibles4); }
if (Cibles1 > 200) {Cibles4 = 200;
lcd.setCursor(7,1);
lcd.print(Cibles4); }
//Affichage 0
if (Cibles4 <= 0 ) {
lcd.setCursor(7,1);
lcd.print(Cibles4 , DEC);
lcd.setCursor(8,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" "); }
//Affichage + de 10
if (Cibles4 >= 100 ) {
lcd.setCursor(7,1);
lcd.print(Cibles4 , DEC);
lcd.setCursor(10,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" "); }
//Affichage - de 10
if (Cibles4 < 100 ) {
lcd.setCursor(7,1);
lcd.print(Cibles4 , DEC);
lcd.setCursor(9,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" "); }
if(digitalRead(ButtonSelect) == HIGH) // Boutons OK
{tone(12, 800, 300);
EEPROM.write(4, Cibles4);
RegCible++;
goto Reset;}
} //fin while
}//fin if regcible
if (RegCible == 4 ) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Points Cible 5 ");
lcd.setCursor(7,1);
lcd.print(Cibles5);
while(1) {
if(digitalRead(ButtonHaut) == HIGH) // Boutons Haut
{tone(12, 800, 300);
Cibles5 = (Cibles5 + 5);
lcd.setCursor(7,1);
lcd.print(Cibles5);
delay(DelayBP); }
if(digitalRead(ButtonBas) == HIGH) // Boutons Bas
{tone(12, 800, 300);
Cibles5 = (Cibles5 - 5);
lcd.setCursor(7,1);
lcd.print(Cibles5);
delay(DelayBP); }
if (Cibles5 < 00) {Cibles5 = 00;
lcd.setCursor(7,1);
lcd.print(Cibles5); }
if (Cibles1 > 200) {Cibles5 = 200;
lcd.setCursor(7,1);
lcd.print(Cibles5); }
//Affichage 0
if (Cibles5 <= 0 ) {
lcd.setCursor(7,1);
lcd.print(Cibles5 , DEC);
lcd.setCursor(8,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" "); }
//Affichage + de 10
if (Cibles5 >= 100 ) {
lcd.setCursor(7,1);
lcd.print(Cibles5 , DEC);
lcd.setCursor(10,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" "); }
//Affichage - de 10
if (Cibles5 < 100 ) {
lcd.setCursor(7,1);
lcd.print(Cibles5 , DEC);
lcd.setCursor(9,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" "); }
if(digitalRead(ButtonSelect) == HIGH) // Boutons OK
{tone(12, 800, 300);
EEPROM.write(5, Cibles5);
RegCible++;
goto Reset;}
} //fin while
}//fin if regcible
if (RegCible == 5 ) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Points Cible 6 ");
lcd.setCursor(7,1);
lcd.print(Cibles6);
while(1) {
if(digitalRead(ButtonHaut) == HIGH) // Boutons Haut
{tone(12, 800, 300);
Cibles6 = (Cibles6 + 5);
lcd.setCursor(7,1);
lcd.print(Cibles6);
delay(DelayBP); }
if(digitalRead(ButtonBas) == HIGH) // Boutons Bas
{tone(12, 800, 300);
Cibles6 = (Cibles6 - 5);
lcd.setCursor(7,1);
lcd.print(Cibles6);
delay(DelayBP); }
if (Cibles6 < 00) {Cibles6 = 00;
lcd.setCursor(7,1);
lcd.print(Cibles6); }
if (Cibles6 > 200) {Cibles6 = 200;
lcd.setCursor(7,1);
lcd.print(Cibles6); }
//Affichage 0
if (Cibles6 <= 0 ) {
lcd.setCursor(7,1);
lcd.print(Cibles6 , DEC);
lcd.setCursor(8,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" "); }
//Affichage + de 10
if (Cibles6 >= 100 ) {
lcd.setCursor(7,1);
lcd.print(Cibles6 , DEC);
lcd.setCursor(10,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" "); }
//Affichage - de 10
if (Cibles6 < 100 ) {
lcd.setCursor(7,1);
lcd.print(Cibles6 , DEC);
lcd.setCursor(9,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" "); }
if(digitalRead(ButtonSelect) == HIGH) // Boutons OK
{tone(12, 800, 300);
EEPROM.write(6, Cibles6);
RegCible++;
goto Reset;}
} //fin while
}//fin if regcible
if (RegCible == 6 ) { Menu(); }
}//fin reglage point
- Code:
void PreSpeed() {
// Ecriture sur lcd
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Nombre de tirs");
delay(300);
// while pour incrementer ou decrementer Counterminute, boutons haut ou bas
while(1)
{
//Incrementation de Counterminute
if(digitalRead(ButtonHaut) == HIGH) // Boutons Haut
{tone(12, 800, 300);
Nbtires++;
delay(DelayBP);}
//Decrementation de Counterminute
if(digitalRead(ButtonBas) == HIGH) // Boutons Bas
{tone(12, 800, 300);
Nbtires --;
delay(DelayBP);}
// Demarrage compte a rebours avant depart partie
if(digitalRead(ButtonSelect) == HIGH) // Boutons Select
{tone(12, 800, 300);
TimerSpeed();} //Apelle menu timer_pret_partie
//Anti valeur negative
if (Nbtires < 1 ) {Nbtires = 1;}
// Ecriture valeur sur lcd
//Affichage + de 10
if (Nbtires >= 10 ) {
lcd.setCursor(6,1);
lcd.print(Nbtires , DEC); }
//Affichage + de 10
if (Nbtires < 10 ) {
lcd.setCursor(6,1);
lcd.print("0");
lcd.setCursor(7,1);
lcd.print(Nbtires , DEC); }
} // fin while
} // fin reglage
void TimerSpeed() {
//Affichage
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Depart dans ");
lcd.setCursor(9,1);
lcd.print("sec");
//Tempo Demarrage random
randomSeed( millis() );
PreCounterseconde = random(2, 8);
while(1) {
//Affiche seconde
if (PreCounterseconde >= 10 ) {
lcd.setCursor(6,1);
lcd.print(PreCounterseconde, DEC); }
if (PreCounterseconde < 10 ) {
lcd.setCursor(6,1);
lcd.print("0");
lcd.setCursor(7,1);
lcd.print(PreCounterseconde, DEC); }
//tempo seconde
delay(1000);
PreCounterseconde--;
//Fin decompte, appelle timer jeux
if (PreCounterseconde == 0)
{ Serial.println('S'); //Envoie S pour demarrer esclave
SpeedGame(); } //Apelle menu Timerjeux
}//fin while
}// fin pretimer
void SpeedGame() {
//Buzzer et debut jeux
lcd.clear();
lcd.setCursor(4,0);
lcd.print("GO");
tone(12, 1000, 500);
//Impression info tires sur lcd
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Points:");
lcd.setCursor(9,0);
lcd.print(Point);
lcd.setCursor(0,1);
lcd.print("Tir n");
lcd.setCursor(5,1);
lcd.print((char)223);
lcd.setCursor(9,1);
lcd.print(NbtiresReel);
lcd.setCursor(11,1);
lcd.print("/");
lcd.setCursor(12,1);
lcd.print(Nbtires);
TempsInit = (millis());
//jeux en cours
while(1) {
hitfactor = 0;
if (digitalRead(ButtonSelect) == HIGH)
{TempsReel = (millis() - TempsInit ); Serial.println('F'); finSpeedGame(); }
if (Serial.available()>0) { // Si des données sont disponibles
received = Serial.read(); // On les récupère
//Cibles 1
if(received == 'A') // Recois A depuis Esclave = Cible 1
{Point = (Point + Cibles1);
tone(12, 1000, 500);
NbtiresReel++;
Zone1++;
lcd.setCursor(9,0);
lcd.print(Point);
lcd.setCursor(9,1);
lcd.print(NbtiresReel); }
//Cible 2
if(received == 'B') // Recois B depuis Esclave = Cible 2
{Point = (Point + Cibles2);
tone(12, 1000, 500);
NbtiresReel++;
Zone2++;
lcd.setCursor(9,0);
lcd.print(Point);
lcd.setCursor(9,1);
lcd.print(NbtiresReel); }
//Cible 3
if(received == 'C') // Recois C depuis Esclave = Cible 3
{Point = (Point + Cibles3);
tone(12, 1000, 500);
NbtiresReel++;
Zone3++;
lcd.setCursor(9,0);
lcd.print(Point);
lcd.setCursor(9,1);
lcd.print(NbtiresReel); }
//Cible 4
if(received == 'D') // Recois D depuis Esclave = Cible 4
{Point = (Point + Cibles4);
tone(12, 1000, 500);
NbtiresReel++;
Zone4++;
lcd.setCursor(9,0);
lcd.print(Point);
lcd.setCursor(9,1);
lcd.print(NbtiresReel); }
//Cible 5
if(received == 'E') // Recois E depuis Esclave = Cible 5
{Point = (Point + Cibles5);
tone(12, 1000, 500);
NbtiresReel++;
Zone5++;
lcd.setCursor(9,0);
lcd.print(Point);
lcd.setCursor(9,1);
lcd.print(NbtiresReel); }
//Cible 6
if(received == 'F') // Recois F depuis Esclave = Cible 6
{Point = (Point + Cibles6);
tone(12, 1000, 500);
NbtiresReel++;
Zone6++;
lcd.setCursor(9,0);
lcd.print(Point);
lcd.setCursor(9,1);
lcd.print(NbtiresReel); }
//Fin des tires
if (NbtiresReel == Nbtires)
{TempsReel = (millis() - TempsInit );
Serial.println('F');
finSpeedGame(); }
} //fin while
} //fin Timergame
}
void finSpeedGame() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Fin de la partie");
tone(12, 100, 1000);
delay(1000);
tone(12, 1000, 1000);
delay(1000);
tone(12, 5000, 1000);
hitfactor = (Point*1000)/TempsReel; // Naedioba: ajout Facteur de tir (hitfactor)
//Calcule affichage min/sec.milli
CalculeMinSecMilli ();
while (1) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Fin de la partie");
lcd.setCursor(8,1);
lcd.print("points");
lcd.setCursor(2, 1);
lcd.print(Point);
========================================================
do {
suivant = false;
EtatButtonSelect = digitalRead(ButtonSelect);
EtatButtonHaut = digitalRead(ButtonHaut);
EtatButtonBas = digitalRead(ButtonBas);
if (EtatButtonSelect == HIGH || EtatButtonHaut == HIGH||EtatButtonBas == HIGH)
{delay(250);tone(12,500,150);suivant = true;} //Attente appui sur un bouton pour afficher l'ecran suivant
}
while (suivant != true);
========================================================
// Naedioba: debut nouvelle procedure PonctuationChrono
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Fin de la partie");
PonctuationChrono ();
// delay(10000);
// Naedioba: fin nouvelle procedure PonctuationChrono
========================================================
do {
suivant = false;
EtatButtonSelect = digitalRead(ButtonSelect);
EtatButtonHaut = digitalRead(ButtonHaut);
EtatButtonBas = digitalRead(ButtonBas);
if (EtatButtonSelect == HIGH || EtatButtonHaut == HIGH ||EtatButtonBas == HIGH)
{delay(250);tone(12,500,150);suivant = true;} //Attente appui sur un bouton pour afficher l'ecran suivant
}
while (suivant != true);
========================================================
lcd.clear(); // Naedioba: affichage facteur de tir
lcd.setCursor(0,0);
lcd.print("Facteur de tir");
lcd.setCursor(0, 1);
lcd.print(hitfactor);
// delay(5000);
========================================================
do {
suivant = false;
EtatButtonSelect = digitalRead(ButtonSelect);
EtatButtonHaut = digitalRead(ButtonHaut);
EtatButtonBas = digitalRead(ButtonBas);
if (EtatButtonSelect == HIGH || EtatButtonHaut == HIGH ||EtatButtonBas == HIGH)
{delay(250);tone(12,500,150);suivant = true;} //Attente appui sur un bouton pour afficher l'ecran suivant
}
while (suivant != true);
========================================================
// Naedioba: debut nouvelle procedure AffichageZones
AffichageZones ();
// Naedioba: fin nouvelle procedure AffichageZones
========================================================
do {
suivant = false;
EtatButtonSelect = digitalRead(ButtonSelect);
EtatButtonHaut = digitalRead(ButtonHaut);
EtatButtonBas = digitalRead(ButtonBas);
if (EtatButtonSelect == HIGH || EtatButtonHaut == HIGH ||EtatButtonBas == HIGH)
{delay(250);tone(12,500,150);suivant = true;} //Attente appui sur un bouton pour afficher l'ecran suivant
}
while (suivant != true);
========================================================
if (NbtiresReel == Nbtires){
Serial.println('F');
// Naedioba: debut reinitialisation tirs, points, zones
NbtiresReel = 0;
Point = 0;
Zone1 = 0;
Zone2 = 0;
Zone3 = 0;
Zone4 = 0;
Zone5 = 0;
Zone6 = 0;
Menu(); }
// Naedioba: fin reinitialisation tirs, points, zones
}//fin while
}//fin fingame
- Code:
void TestCible() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Test Cibles ");
delay(1000);
Serial.println('S'); //Envoie S pour demarrer esclave
while (1) {
if (Serial.available()>0) { // Si des données sont disponibles
received = Serial.read(); // On les récupère
//Cibles 1
if(received == 'A') // Recois A depuis Esclave = Cible 1
{lcd.setCursor(0,1);
lcd.print(" Cible 1 OK " );
tone(12, 200, 300);}
//Cible 2
if(received == 'B') // Recois B depuis Esclave = Cible 2
{lcd.setCursor(0,1);
lcd.print(" Cible 2 OK " );
tone(12, 400, 300);}
//Cible 3
if(received == 'C') // Recois C depuis Esclave = Cible 3
{lcd.setCursor(0,1);
lcd.print(" Cible 3 OK " );
tone(12, 600, 300);}
//Cible 4
if(received == 'D') // Recois D depuis Esclave = Cible 4
{lcd.setCursor(0,1);
lcd.print(" Cible 4 OK " );
tone(12, 800, 300);}
//Cible 5
if(received == 'E') // Recois E depuis Esclave = Cible 5
{lcd.setCursor(0,1);
lcd.print(" Cible 5 OK " );
tone(12, 1000, 300);}
//Cible 6
if(received == 'F') // Recois F depuis Esclave = Cible 6
{lcd.setCursor(0,1);
lcd.print(" Cible 6 OK " );
tone(12, 1200, 300);}
}//fin IF
// debut ajout par Naedioba
// Eviter de choisir le Bouton Select parce que dans ce cas on retourne directement dans la partie Test Cibles
if(digitalRead(ButtonHaut) == HIGH || digitalRead(ButtonBas) == HIGH) // Si on appuie sur Bouton Haut ou Bouton Bas
{Menu();} //ou break; pour sortir de la boucle et tu mets Menu(); juste après
// if(digitalRead(ButtonHaut) == HIGH)
// {Serial.println('F');
// Menu();}
// fin ajout par Naedioba
}//fin While
}//fin testcible