bonjour
je souhaite faire un air auckey avec un compteur de point et recament j'ai trouvée un programme sur internet
pour cela j'utulise HD44780 module avec l'écran LCD 1602, 2X16 caractères + i2c
et un arduino uno
le probleme selon moi vien de ce programme mais je ne sais pas ou
voici le programme que je souhaite utuliser
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2); // si cela ne fonctionne pas, l'écran utilise cette adresse:(0x27) al posto di (0x3F)
unsigned long previousMillis1 = 0;
unsigned long interval1 = 1000; //intervalle en milliseconde
unsigned int counter = 0;
int timeRST = 0;
int heures = 45;
int minute = 5;
int seconde = 6;
int buzzer = 49;
int rele = 48;
int Total seconde = 0;
int reset = 0;
int start = A6;
int score 1 = 0;
int score 2 = 0;
int pin_joueur 1 = 2;
int pin_joueur 2 = 3;
int pin_début = 5;
void setup() {
// put your setup code here, to run once:
lcd.begin();
// PORTE POUR TIRER LES BROCHES D'ENTRÉE NUMÉRIQUE
digitalWrite(pin_joueur1, INPUT_PULLUP);
digitalWrite(pin_joueur2, INPUT_PULLUP);
digitalWrite(pin_Start, INPUT_PULLUP);
//ASSIGNER LA PIN DES RELAIS ET DU BUZZER
pinMode(rele, OUTPUT);
pinMode (buzzer, OUTPUT);
// LA PORTE FORTIFIE LE RELAIS DE HAUT NIVEAU (POUR LE TOURNER, VOUS DEVEZ LE PORTER À UN NIVEAU BAS "BAS")
digitalWrite(rele, HIGH);
// Introduction avant le départ
lcd.setCursor(0, 0);
lcd.print("Hockey sur table");
lcd.setCursor(0, 1);
lcd.print("vv");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("P1= ");
lcd.setCursor(4, 0);
lcd.print(score 1);
lcd.setCursor(7, 0);
lcd.print("/ P2= ");
lcd.setCursor(14, 0);
lcd.print(score 2);
lcd.setCursor(0, 1);
lcd.print("Appuyez sur START");
}
void loop() {
/* *************************************************************************************
APPUYEZ SUR START ET LANCEZ LE JEU
*/
int START = digitalRead(pin_début);
if (START == LOW) {
secondetotal = 29;
score1 = 0;
score2 = 0;
}
while (secondetotal > 0)
{
digitalWrite(rele, LOW); //LE RELAIS et ACTIVER COMMENCE LE JEU
//---------------------------------------------------------
/* *************************************************************************************
COMPTEUR POUR RÉINITIALISER LE JEU AVANT L’EXPIRATION DU TEMPS - TEMPS D’ENTRETIEN 3 SEC
*/
int START = digitalRead(pin_Start);
if (START == LOW) {
timeRST++;
delay(10);
}
else
{
timeRST = 0;
}
/* *************************************************************************************
TEMPS DE RETENIR LES 3 SECONDES ATTEINT ... REINITIALISER LE JEU
*/
if (timeRST >= 50) {
secondiTotali = 0;
lcd.clear();
lcd.print(" Reset forzato ");
digitalWrite(rele, HIGH);
timeRST = 0;
delay(1000);
lcd.clear();
delay(500);
lcd.setCursor(0, 0);
lcd.print("P1= ");
lcd.setCursor(4, 0);
lcd.print(punteggio1);
lcd.setCursor(7, 0);
lcd.print("/ P2= ");
lcd.setCursor(14, 0);
lcd.print(punteggio2);
lcd.setCursor(0, 1);
lcd.print("Premi START");
delay(200);
break;
}
//---------------------------------------------------------
if (millis() - previousMillis1 > interval1) {
previousMillis1 = millis(); //save the last time I blinked the LED
secondetotal--;
heure = ((secondetotal / 60) / 60); // convertir seconde total en heure
minute = (secondetotal / 60) % 60; // convertir seconde total en minute
seconde = secondetotal % 60; // c convertir seconde total en seconde
lcd.setCursor(0, 1);
lcd.print("Tempo res: ");
if (minuti < 10) lcd.print("0");
lcd.print(minute);
lcd.print(":");
if (secondi < 10) lcd.print("0");
lcd.print(seconde);
/* *************************************************************************************
TEMPS DE JEU TERMINÉ, RÉINITIALISER LE JEU
*/
if (secondiTotali == 0)
{
digitalWrite(rele, HIGH);
break;
}
}
lcd.setCursor(0, 0);
lcd.print("P1= ");
lcd.setCursor(4, 0);
lcd.print(punteggio1);
lcd.setCursor(7, 0);
lcd.print("/ P2= ");
lcd.setCursor(14, 0);
lcd.print(punteggio2);
/* *************************************************************************************
BOUTON D'INCRÉMENTATION +1 DU COMPTEUR DU JOUEUR 1
*/
int contatoretemp1 = digitalRead(pin_giocatore1);
if (contatoretemp1 == LOW) {
delay(120);
punteggio1++;
tone(buzzer, 1000); // Send 1KHz sound signal...
delay(200);
noTone(buzzer);
}
/* *************************************************************************************
BOUTON D'INCRÉMENTATION +1 DU COMPTEUR DU JOUEUR 2
*/
int contatoretemp2 = digitalRead(pin_giocatore2);
if (contatoretemp2 == LOW) {
delay(120);
punteggio2++;
tone(buzzer, 1000); // Send 1KHz sound signal...
delay(200);
noTone(buzzer);
}
}
}
source: