modification d'un programme

bonsoir a tous,

voici le programme que j 'utilise pour un de mes projet,

j’aurais aimé le modifié une partis du code en remettant un autre bouton poussoir en plus !

je m’explique(ou du moin je vais essayer :slight_smile: )

voici le premier code que j 'utilise et qui fonctionne tres bien pour mon utilisation
//debut programme

const byte BP = 2; // bouton poussoir entre GND et D2
const byte LED3 = 3; // led anode sur D3 et cathode sur GND via une résistance de limitation 330 ohms environ
const byte LED4 = 4; // led anode sur D3 et cathode sur GND via une résistance de limitation 330 ohms environ
byte ledPins_1 = {5, 6, 7, 8,}; //sorties pour les 4 leds de niveau de la cuve 1 cathodes sur GND et anodes sur les sorties via résistances
byte ledPins_2 = {9, 10, 11, 12,}; //sorties pour les 4 leds de niveau de la cuve 2 cathodes sur GND et anodes sur les sorties via résistances
const int analogPin_1 = A0; // A0
const int analogPin_2 = A1; // A1
const int ledCount = 4;
int excursion_curseur_1 = 256; // toute la plage du potar correspond à 1024
int excursion_curseur_2 = 256; // 1/4 de la plage du potar (si lineaire) correspondra à 1024/4=256
int ETAT_BP;
const int APPUI = 0; // LOW
const int PAS_APPUI = 1; // HIGH

void setup()
{
Serial.begin(115200); // ouvrir le moniteur en 115200 bauds
pinMode (LED3, OUTPUT);
pinMode (LED4, OUTPUT);
pinMode (BP2, INPUT_PULLUP); // valide la résistance de pullup interne au microcontroleur
digitalWrite (LED3, LOW); // le BP devra etre relié à la masse ( GND) et à l’entree D2
digitalWrite (LED4, LOW); // sans résistance additive externe
digitalWrite (BP, HIGH);

for (int thisLed = 0; thisLed < ledCount; thisLed++)
{
pinMode(ledPins_1[thisLed], OUTPUT);
digitalWrite(ledPins_1[thisLed], LOW);
pinMode(ledPins_2[thisLed], OUTPUT);
digitalWrite(ledPins_2[thisLed], LOW);
}
}

void loop()
{
ETAT_BP = digitalRead(BP1,BP2);
if (ETAT_[BP1,BP2] == APPUI)
{ //si l’etat des boutons est enfonce alors leurs lecture vaut 5V, soit LOW
delay (800); //attente de 800 milli secondes
digitalWrite(LED3, HIGH); // allume la led 3
delay (5100); //attente de 5.1secondes
digitalWrite (LED3, LOW); // eteint la led 3
delay (1000); //attente de 1 seconde
digitalWrite (LED4, HIGH); // allume la led 4
delay (9800); //attente de 9.8 secondes
digitalWrite (LED4, LOW); // eteint la led 4
delay (5000); // attente de 5 secondes

}
else
{ //sinon si le bp au repos et sa lecture vaut 5V, soit HIGH
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
}

int sensorReading_1 = analogRead(analogPin_1);
byte ledLevel_1 = map(sensorReading_1, 0, excursion_curseur_1, 0, ledCount + 1);
int sensorReading_2 = analogRead(analogPin_2);
byte ledLevel_2 = map(sensorReading_2, 0, excursion_curseur_2, 0, ledCount + 1);
Serial.print("potar 1 = “); Serial.print(ledLevel_1); Serial.print(” ");

for (int thisLed = 0; thisLed < ledCount; thisLed++)
{
if (thisLed < ledLevel_1) {
digitalWrite(ledPins_1[thisLed], HIGH);
Serial.print("_1");
}
else {
digitalWrite(ledPins_1[thisLed], LOW);
Serial.print("_0");
}
}
Serial.print(" “);
Serial.print(“potar 2 = “); Serial.print(ledLevel_2); Serial.print(” “);
for (int thisLed = 0; thisLed < ledCount; thisLed++)
{
if (thisLed < ledLevel_2) {
digitalWrite(ledPins_2[thisLed], HIGH);
Serial.print(”_1”);
}
else {
digitalWrite(ledPins_2[thisLed], LOW);
Serial.print(”_0");
}
}
Serial.println("");
}
//fin du programme


et voici ce que j ais essayer de modifier,en insérant un deuxième bouton
le soucis ses que je n arrive pas a compiler! le moniteur me marque " exit status 1 too many argument to function ’ int digital read (uint_8t)’ en autre car j ais essayer de faire d’autre essais mais pareil avec d’autre message dont je ne me rappel plus :confused:

//debut programme
const byte BP1           = 1;            // bouton poussoir entre GND et D1
const byte BP2           = 2;            // bouton poussoir entre GND et D2
const byte LED3         = 3;            // led anode sur D3 et cathode sur GND via une résistance de limitation 330 ohms environ
const byte LED4         = 4;            // led anode sur D3 et cathode sur GND via une résistance de limitation 330 ohms environ
byte ledPins_1[]        = {5, 6, 7, 8,};    //sorties pour les 4 leds de niveau de la cuve 1 cathodes sur GND et anodes sur les sorties via résistances
byte ledPins_2[]        = {9, 10, 11, 12,}; //sorties pour les 4 leds de niveau de la cuve 2 cathodes sur GND et anodes sur les sorties via résistances
const int analogPin_1   = A0;           // A0
const int analogPin_2   = A1;           // A1
const int ledCount      = 4;
int excursion_curseur_1 = 256;          // toute la plage du potar correspond à 1024
int excursion_curseur_2 = 256;          // 1/4 de la plage du potar (si lineaire) correspondra à 1024/4=256
int ETAT_BP;
const int APPUI         = 0;            // LOW
const int PAS_APPUI     = 1;            // HIGH

void setup()
{
  Serial.begin(115200);                 // ouvrir le moniteur en 115200 bauds
  pinMode (LED3, OUTPUT);
  pinMode (LED4, OUTPUT);
  pinMode (BP2, INPUT_PULLUP);           // valide la résistance de pullup interne au microcontroleur
  digitalWrite (LED3, LOW);             // le BP devra etre relié à la masse ( GND) et à l'entree D2
  digitalWrite (LED4, LOW);             // sans résistance additive externe
  digitalWrite (BP1,BP2) HIGH);

  for (int thisLed = 0; thisLed < ledCount; thisLed++)
  {
    pinMode(ledPins_1[thisLed], OUTPUT);
    digitalWrite(ledPins_1[thisLed], LOW);
    pinMode(ledPins_2[thisLed], OUTPUT);
    digitalWrite(ledPins_2[thisLed], LOW);
  }
}

void loop()
{
  ETAT_BP = digitalRead(BP1,BP2);
  if (ETAT_[BP1,BP2] == APPUI)
  { //si l'etat des boutons est enfonce alors leurs lecture vaut 5V, soit LOW
    delay (800);                        //attente de 800 milli secondes
    digitalWrite(LED3, HIGH);           // allume la led 3
    delay (5100);                       //attente de 5.1secondes
    digitalWrite (LED3, LOW);           // eteint la led 3
    delay (1000);                       //attente de 1 seconde
    digitalWrite (LED4, HIGH);          // allume la led 4
    delay (9800);                       //attente de 9.8 secondes
    digitalWrite (LED4, LOW);           // eteint la led 4
    delay (5000);                       // attente de 5 secondes
    ETA_BP = digitalRead(BP2);
  if (ETA_BP2==APPUI)
     //si l'etat du bouton(bp2) est enfonce alors sa lecture vaut 5v,soit LOW
     delay (800);                        //attente de 800 milli secondes
    digitalWrite(LED3, HIGH);           // allume la led 3
    delay (6100);                       //attente de 6.1 secondes
    digitalWrite (LED3, LOW);           // eteint la led 3
    delay (1000);                       //attente de 1 seconde
    digitalWrite (LED4, HIGH);          // allume la led 4
    delay (8800);                       //attente de 8800 secondes
    digitalWrite (LED4, LOW);           // eteint la led 4
    delay (5000);                       //attente de 5 secondes
  }
  else
  { //sinon si le bp au repos et sa lecture vaut 5V, soit HIGH
    digitalWrite(LED3, LOW);
    digitalWrite(LED4, LOW);
  }

  int sensorReading_1 = analogRead(analogPin_1);
  byte ledLevel_1 = map(sensorReading_1, 0, excursion_curseur_1, 0, ledCount + 1);
  int sensorReading_2 = analogRead(analogPin_2);
  byte ledLevel_2 = map(sensorReading_2, 0, excursion_curseur_2, 0, ledCount + 1);
  Serial.print("potar 1 = "); Serial.print(ledLevel_1); Serial.print("   ");

  for (int thisLed = 0; thisLed < ledCount; thisLed++)
  {
    if (thisLed < ledLevel_1) {
      digitalWrite(ledPins_1[thisLed], HIGH);
      Serial.print("_1");
    }
    else {
      digitalWrite(ledPins_1[thisLed], LOW);
      Serial.print("_0");
    }
  }
  Serial.print("   ");
  Serial.print("potar 2 = "); Serial.print(ledLevel_2); Serial.print("   ");
  for (int thisLed = 0; thisLed < ledCount; thisLed++)
  {
    if (thisLed < ledLevel_2) {
      digitalWrite(ledPins_2[thisLed], HIGH);
      Serial.print("_1");
    }
    else {
      digitalWrite(ledPins_2[thisLed], LOW);
      Serial.print("_0");
    }
  }
  Serial.println("");
}
//fin du programme

L’appel De fonction est écrit n’importe comment...digitalWrite (BP1,BP2) HIGH);
Vous devez appeler digitalWrite() pour chaque pin séparément et en utilisant la bonne syntaxe pour les parenthèses et virgules... digitalWrite(pin, value);

Idem pour

ETAT_BP = digitalRead(BP1,BP2); // vous pensez avoir quoi dans ETAT_BP???
if (ETAT_[BP1,BP2] == APPUI) // et là vous pensez tester quoi ???

c’est du grand n’importe quoi...

Elle sort d’où cette variable ETA_BP2 ? ?  if (ETA_BP2==APPUI)

relisez les bases du langage C, la syntaxe, la déclaration de variables, ce que veut dire une virgule, et l’usage des tableaux et des fonctions... vous ne codez pas dans un langage dynamique interprété qui va deviner par magie de qui vous passe par la tête ...

Merci sinon de bien utiliser les tags de code (corrigez votre post ci dessus et rajoutez les autour du premier code)

bonsoir j_m_L

MERCI pour votre réponses,

je vais ressayer de faire autrement et de plus propre :grin: