[Non résolu] Coffre fort - avec uniquement des boutons

Bonjour,

Je viens d’arriver sur le forum et de commencer la programmation sur arduino.
J’ai tenté de créer un coffre fort, mais il semble que j’ai sûrement commis des erreurs.
Je viens donc quémander votre aide.

Voici mon code :

char ledv = 3;

char buttonUP = 5;
char buttonDOWN = 9;
char buttonLEFT = 13;
char buttonRIGHT = 11;

char button_val = 7;

bool button_stateUP = 0;
bool button_stateDOWN = 0;
bool button_stateLEFT = 0;
bool button_stateRIGHT = 0;

bool button_state_val = 0;

char i = 0;

int code = {0,0,0,0};

int codefin = {1,1,1,1};

void setup() {
Serial.begin(9600);

pinMode(buttonUP, INPUT);
pinMode(buttonDOWN, INPUT);
pinMode(buttonLEFT, INPUT);
pinMode(buttonRIGHT, INPUT);
pinMode(button_val, INPUT);

pinMode(ledv, OUTPUT);

}

void loop() {

button_stateUP = digitalRead(buttonUP);
button_stateDOWN = digitalRead(buttonDOWN);
button_stateLEFT = digitalRead(buttonLEFT);
button_stateRIGHT = digitalRead(buttonRIGHT);

if (button_stateLEFT == HIGH)
{
if (i != 0){
i = i–;
}
else if (i == 0){
i = 4;
}
}

else if (button_stateRIGHT == HIGH)
{
if (i < 4)
{
i = i++;
}
else if ( i == 4)
{
i = 0;
}
}
else if (button_stateUP == HIGH)
{
if ( i < 9)
{
code = code*++;*
* Serial.print(code[0]);*
* Serial.print(code[1]);*
* Serial.print(code[2]);*
* Serial.print(code[3]); *
* }*
* else if ( i == 9)*
* {*
_ code = 0;
* Serial.print(code[0]);
Serial.print(code[1]);
Serial.print(code[2]);
Serial.print(code[3]);
}
}_
else if (button_stateDOWN == HIGH)
_ {
if( i > 0){_
code _= code–;
Serial.print(code[0]);
Serial.print(code[1]);
Serial.print(code[2]);
Serial.print(code[3]);
}
else if ( i == 0)
{
code = 9;
Serial.print(code[0]);
Serial.print(code[1]);
Serial.print(code[2]);
Serial.print(code[3]);
}
}
}
void val()
{_

if (button_state_val == HIGH)
_ {_
button_state_val = digitalRead(button_val);
if (button_state_val == HIGH and codefin[0] == code[0])
_ {
Serial.print(“CODE BON”);
}
else*

* {
Serial.print(“CODE MAUVAIS”);
}*_

* }*
}
[/quote]
Je pense que mon code a un problème au niveau des tableaux mais je ne sais pas lequel.
Merci de votre aide ^^

hello
non testé. attention, serial en 115200

char ledv        =  3;
char buttonUP    =  5;
char button_val  =  7;
char buttonDOWN  =  9;
char buttonLEFT  = 13;
char buttonRIGHT = 11;

bool button_stateUP   = false;
bool button_stateDOWN = false;
bool button_stateLEFT = false;
bool button_stateRIGHT= false;
bool button_state_val = false;

byte i = 0;
byte code[] = {0,0,0,0};

byte codefin[] = {1,1,1,1};

void setup() {
  Serial.begin(115200);
  
  pinMode(buttonUP,   INPUT_PULLUP);
  pinMode(buttonDOWN, INPUT_PULLUP);
  pinMode(buttonLEFT, INPUT_PULLUP);
  pinMode(buttonRIGHT,INPUT_PULLUP);
  pinMode(button_val, INPUT_PULLUP);
  pinMode(ledv, OUTPUT);digitalWrite(ledv,LOW);

}

void loop() {

 
  button_stateUP = digitalRead(buttonUP);
  button_stateDOWN = digitalRead(buttonDOWN);
  button_stateLEFT = digitalRead(buttonLEFT);
  button_stateRIGHT = digitalRead(buttonRIGHT);
  button_state_val = digitalRead(button_val);

  if (button_stateLEFT == HIGH)
    {
      if (i != 0){
        i = i--;
        }
      else if (i == 0){
        i = 3;
        }
    }
        
  
  else if (button_stateRIGHT == HIGH)
    {
        if (i < 3)
      {
        i = i++;
        }
        else if ( i == 3)
      {
        i = 0;
        }    
    }
  else if (button_stateUP == HIGH)
    {
        if ( code[i] < 9)
        {
          code[i]++;
          Serial.print(code[0]);
          Serial.print(code[1]);
          Serial.print(code[2]);
          Serial.print(code[3]);  
        }
        else if ( code[i] == 9)
        {
          code[i] = 0;
          Serial.print(code[0]);
          Serial.print(code[1]);
          Serial.print(code[2]);
          Serial.print(code[3]);
        }
    }
   else if (button_stateDOWN == HIGH)
    {
      if( code[i] > 0){
       code[i]--;
        Serial.print(code[0]);
        Serial.print(code[1]);
        Serial.print(code[2]);
        Serial.print(code[3]);  
        }
      else if ( code[i] == 0)
      {
        code[i] = 9;
        Serial.print(code[0]);
        Serial.print(code[1]);
        Serial.print(code[2]);
        Serial.print(code[3]);
        }
    }
    if (button_state_val == HIGH)
    {val();}
}

 void val()
{  byte compteur=0;
   for(int f = 0;f<=3;f++)
    {
      if (codefin[f] == code[f])
      {
        compteur++;
      }
    }
    if (compteur==4)
    {
      Serial.print("CODE BON");digitalWrite(ledv,HIGH);
    }
    else
    {
      Serial.print("CODE MAUVAIS");
    }
}