Projet de bac

Bonsoir alors voila je suis dans une impasse totale avec mon projet de sin pour le bac coefficient 12.
Je suis censé realisé un affichage sur afficheur lcd i2c avec le score/la période/ et le temps du match + programmer deux boutons du clavier pour augmenter le score de chacune des deux équipes. J'ai déjà enormement de mal a réalisé l'affichage j'ai donc décide de le finir chez moi et je vous demande votre aide car je n'arrive pas a afficher mon chronomètre et j'ai deux autres problèmes d'affichage. je suis vraiment dans le besoin. bonne soirée et merci d'avance. J'ai une photo de mon afficheur que je n'arrive pas a poster ici venez en DM et je vous l'ai merci d'avance bonne soirée à vous. (Les problème sont les suivants)

  • caractères étranges en case (0,0)
  • quatres "0" s'affichent en (1,1)
  • le chronomètre ne s'affiche pas
#include <Wire.h>
#include <LiquidCrystal_I2C.h>


;
void Affichage();
int Score1= 0;
int Score2 = 0;
int Periode = 0;
unsigned long time;
unsigned long nextTime;
int heures,minutes,secondes,disec;
unsigned char message[16] = "";

LiquidCrystal_I2C lcd(0x27,16,2); 

void setup() 
{
 lcd.init(); 
 lcd.cursor_on();
 lcd.blink_on();
 lcd.backlight();
 lcd.setCursor(0,0);
 lcd.print("EQ1 : ");
 lcd.print(Score1);
 lcd.setCursor(8,0);
 lcd.print("EQ2 : "); 
 lcd.print(Score2); 
 lcd.setCursor(0,1);
 lcd.print("P");
 lcd.print(Periode);
 lcd.cursor_off();
 lcd.blink_off();
 
   Serial.begin(9600);
    pinMode(13,INPUT_PULLUP);
    Serial.begin(9600);
    pinMode(6,INPUT);
   time = millis();
   
nextTime = time +100;

lcd.print(heures);
lcd.print(minutes);
lcd.print(secondes);
lcd.print(disec);

}

void loop()
{
    
  
if (digitalRead(13)==HIGH)
  
  
  if (millis() > nextTime)
{
   nextTime += 100;
    Affichage();
   }
}

void Affichage()
{
disec++;

if(disec == 10)
{
  disec = 0;
  secondes++;
  
  }
if(secondes == 60)
  {
  secondes = 0;
  minutes++;
 
  }
if(minutes == 60)
  {
  minutes = 0;
  heures++;
  
  }
if (heures == 24)
  {
  heures = 0;
  }

 lcd.setCursor(8,1);
sprintf(message,"%d,%d,%d,%d",heures,minutes,secondes,disec);

lcd.home();
  
lcd.write(message);
  //
}

On t'a dit de demander le déplacement pas d'abandonner le premier message comme une bouse et d'en créer un autre.

Figure toi que le modérateur a autre chose à faire que de passer son temps a réparer les âneries de ceux qui refusent de faire l'effort de lire les messages épinglés avant de faire leur propre message.

Fais vite pour faire supprimer ton message dans "Réalisations et produits finis" sinon tous tes message atterriront dans le bar --> Bak-Ka-Poux-Bêlle

d'accord dsl

Tu devrais programmer ça comme une machine à états : il y a un bon tuto de J-M-L sur le forum, section tutos...

D'accord merci j'irais voir ça merci

hello
pour te débloquer

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//LiquidCrystal_I2C lcd(0x27,16,2);//pour toi
LiquidCrystal_I2C lcd(0x3F, 20, 4);//pour moi

int Score1  = 0;
int Score2  = 0;
int Periode = 0;
int heures, minutes, secondes, disec;
unsigned long time;
unsigned long nextTime;


//********************************************************************* setup
void setup()
{
  //lcd.init();//pour toi
  lcd.begin();//pour toi
  lcd.cursor_on();
  lcd.blink_on();
  lcd.backlight();
  lcd.setCursor(1, 0);
  lcd.print("EQ1 : ");
  lcd.print(Score1);
  lcd.setCursor(11, 0);
  lcd.print("EQ2 : ");
  lcd.print(Score2);
  lcd.setCursor(0, 1);
  lcd.print("P ");
  lcd.print(Periode);
  lcd.cursor_off();
  lcd.blink_off();
  Serial.begin(9600);//pour toi
  Serial.begin(115200);//pour moi
  //pinMode(13, INPUT_PULLUP);
  //pinMode(6, INPUT);
  time = millis();
  nextTime = time + 100;
}
//********************************************************************* loop
void loop()
{
  if (millis() > nextTime)
  {
    nextTime += 100;
    horloge();
    controle_periode();
    Affichage();
  }
}
//********************************************************************* controle_periode
void controle_periode()
{
  if ((minutes == 15) && (secondes == 0) && (disec == 0))
  {
    Periode++;
    heures = 0;
    minutes = 0;
    secondes = 0;
    disec = 0;
  }
}
//********************************************************************* horloge
void horloge()
{
  disec++;
  if (disec == 10)
  {
    disec = 0;
    secondes++;
  }
  if (secondes == 60)
  {
    secondes = 0;
    minutes++;
  }
  if (minutes == 60)
  {
    minutes = 0;
    heures++;
  }
  if (heures == 24)
  {
    heures = 0;
  }
}
//********************************************************************* Affichage
void Affichage()
{
  lcd.setCursor(2, 1);
  lcd.print(Periode);
  lcd.setCursor(7, 1);
  if (heures < 10) {
    lcd.print("0");
  } lcd.print(heures); lcd.print(":");
  if (minutes < 10) {
    lcd.print("0");
  } lcd.print(minutes); lcd.print(":");
  if (secondes < 10) {
    lcd.print("0");
  } lcd.print(secondes); lcd.print(":");
  if (disec < 10) {
    lcd.print("0");
  } lcd.print(disec);
}

Hello j'essaie sa en rentrant merci bcp