voici un petit début de la ciblerie électronique que je veux faire, le projet n'est vraiment qu'au recommencement (oui je repars à Zéro car j'ai perdu mon dossier ou j'avais déjà pas mal avancé)
voici de quoi je me suis inspiré ICI
BILLOU a écrit:J'ai fait un programme qui tourne mais qui peut encore être amélioré. Le programme choisie une cible (parmi 5) au hasard et allume une LED fixée sur celle ci. Une fois la cible touchée le programme choisit une nouvelle cible si le temps n'est pas écoulé, sinon un buzzer retenti pour signaler la fin de partie. Un afficheur LCD indique le nombre de cible touchée.
Dans les points qui peuvent être amélioré je voudrais que le temps soit réglable par potentiomètre.
Si quelqu'un m'explique pour mettre le programme je le partagerais avec plaisir.Par cotre je ne suis pas programmeur j'ai appris sur internet donc s'est possible qu'il pique les yeux (structure, logique...)
//LCD
#include <LiquidCrystal.h>
LiquidCrystal lcd(4, 5, 0, 1, 2, 3);
//SORTIE
int led0 = 6;
int led1 = 7;
int led2 = 8;
int led3 = 9;
int led4 = 10;
int BUZZER = 11;
//ENTREE
int portana0 = 0;
int portana1 = 1;
int portana2 = 2;
int portana3 = 3;
int portana4 = 4;
float mesure0=0;
float mesure1=0;
float mesure2=0;
float mesure3=0;
float mesure4=0;
int DEBUT = 12;
int etatDEBUT;
const int APPUI=1;
const int PAS_APPUI=0;
//COMPTEUTR
int Compteur = 0;
//CHRONO
long temps1;
long temps2;
void setup() {
// put your setup code here, to run once:
pinMode(led4, OUTPUT);// Place les LED en sortie
pinMode(led3, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(led0, OUTPUT);
pinMode(BUZZER, OUTPUT);
pinMode(DEBUT, INPUT);
digitalWrite(led4, HIGH);// Allume les LED
digitalWrite(led3, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led1, HIGH);
digitalWrite(led0, HIGH);
digitalWrite(DEBUT, HIGH);
lcd.begin(16, 2);// Ecran 2 lignes 16 caracteres
lcd.setCursor(2, 0);// Place le curseur en haut a gauche
lcd.print("STAND DE TIR");// Ecrit STAND TIR
delay(2000);// Attends 2s
digitalWrite(led4, LOW);// Eteint les LED
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
digitalWrite(led1, LOW);
digitalWrite(led0, LOW);
delay(100);
}
void loop() {//1
// put your main code here, to run repeatedly:
boucle6:
etatDEBUT=digitalRead(DEBUT);
if (etatDEBUT == APPUI){// si appui sur bouton DEBUT pin 12
int Compteur = 0;
int temps1;
temps1 = millis();
digitalWrite(BUZZER, HIGH);// fais sonner le BUZZER debut du jeu
delay(500);
digitalWrite(BUZZER, LOW);
boucle5:
int temps2;
temps2 = millis();
if(temps2-temps1 <10000) {// si temps ecoule < temps de jeu 10 secondes
delay(1000);
lcd.setCursor(1, 1);
lcd.print("TOUCHES:");
lcd.setCursor(13, 1);
lcd.print(Compteur);
digitalWrite(led4, LOW);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
digitalWrite(led1, LOW);
digitalWrite(led0, LOW);
int nb = random(5);// Choisit un nbre aleatoire
if (nb == 4)
{boucle4://4
digitalWrite(led4, HIGH);
mesure4 = analogRead(portana4);
if (mesure4 >512){//5
digitalWrite(led4,LOW);
Compteur++;
goto boucle5;
}//5
if (mesure4 < 512) {//6
digitalWrite(led4, HIGH);
goto boucle4;
}//6
}//4
if (nb == 3)
{boucle3://4
digitalWrite(led3, HIGH);
mesure3 = analogRead(portana3);
if (mesure3 >512){//5
digitalWrite(led3,LOW);
Compteur++;
goto boucle5;
}//5
if (mesure3 < 512) {//6
digitalWrite(led3, HIGH);
goto boucle3;
}//6
}//4
if (nb == 2)
{boucle2://4
digitalWrite(led2, HIGH);
mesure2 = analogRead(portana2);
if (mesure2 >512){//5
digitalWrite(led2,LOW);
Compteur++;
goto boucle5;
}//5
if (mesure2 < 512) {//6
digitalWrite(led2, HIGH);
goto boucle2;
}//6
}//4
if (nb == 1)
{boucle1://4
digitalWrite(led1, HIGH);
mesure1 = analogRead(portana1);
if (mesure1 >512){//5
digitalWrite(led1,LOW);
Compteur++;
goto boucle5;
}//5
if (mesure1 < 512) {//6
digitalWrite(led1, HIGH);
goto boucle1;
}//6
}//4
if (nb == 0)
{boucle0://9
digitalWrite(led0, HIGH);
mesure0 = analogRead(portana0);
if (mesure0 >512){//7
digitalWrite(led0,LOW);
Compteur++;
goto boucle5;
}//7
if (mesure0 < 512) {//8
digitalWrite(led0, HIGH);
goto boucle0;
}//8
}//9
}//2
if(temps2-temps1 >10000) {//// si temps ecoule > temps de jeu 10 secondes
digitalWrite(led4, LOW);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
digitalWrite(led1, LOW);
digitalWrite(led0, LOW);
digitalWrite(BUZZER, HIGH);//fais sonner le BUZZER 2 seconde fin du jeu
delay(2000);
digitalWrite(BUZZER, LOW);
delay(1000);
goto boucle6;
}//11
}//13
}//1