Probleme code bouton poussoir

Bonjour
je souhaite par le biais d'un seul BP, allumer une led : à savoir
au repos led verte allumée, 1 pression : led rouge allumée et led verte eteinte, une autre pression led rouge éteinte et led verte allumée, etc... avec un attiny 84.

mon code fonctionne bien pour un seul BP mais en le modifiant (en doublant) pour 2 BP, impossible de débloquer. Je suis novice en la matière
Si quelqu'un peut m'aider... merci d'avance

voici mon code

[code]







#include <OneButton.h>
const byte buttonPin = 0; // notre bouton est sur la pin 0
const byte buttonPin2 = 1; // notre bouton est sur la pin 1

OneButton button(buttonPin,buttonPin2, true); // true pour le mettre en INPUT_PULLUP

// les pins utilisées pour les LEDs
const byte pinLedRouge = 2;
const byte pinLedVerte = 3;
const byte pinLedRouge2 = 4;
const byte pinLedVerte2 = 5;


// la liste des états possible de notre système
// ainsi qu'une variable etatCourant prenant une de ces valeurs
enum {REPOS, ETAT_R,ETAT_V,REPOS2, ETAT_R2, ETAT_V2} etatCourant, etatCourant2;

// ------------------------------------------------------
// Cette fonction installe l'état initial
// ------------------------------------------------------
void mettreAuRepos()
{

  digitalWrite(pinLedRouge,  LOW);
  digitalWrite(pinLedVerte, HIGH);
  digitalWrite(pinLedRouge2, HIGH);
  digitalWrite(pinLedVerte2, HIGH);
  etatCourant = REPOS;
  etatCourant2 = REPOS2;
}

// ------------------------------------------------------
// La fonction de call back, appellée automatiquement quand on clique
// ------------------------------------------------------
void simpleclick()
{
  switch (etatCourant) {
    case REPOS: // on était au repos et on a un appui, on allume la rouge
      digitalWrite(pinLedRouge, HIGH); // LED rouge alimentée
      digitalWrite(pinLedVerte, LOW); // LED verte eteinte
      

      
      etatCourant = ETAT_R; // on note le nouvel état de notre système
      break;


    case ETAT_R:// rouge allumées, on a un appui,ETEINTE
      digitalWrite(pinLedRouge, LOW); // LED rouge ETEINTE
      digitalWrite(pinLedVerte, HIGH); // LED verte alimentée
      
      
   
      
      etatCourant = ETAT_V; // on note le nouvel état de notre système
      break;

    case ETAT_V:// verte allumées, on a un appui,ETEINTE
      digitalWrite(pinLedVerte, LOW); // LED verte eteinte
      digitalWrite(pinLedRouge, HIGH); // LED rouge all
      
     
     etatCourant = ETAT_R; // on note le nouvel état de notre système
      break;

  }

  {
  switch (etatCourant2) {
    case REPOS2: // on était au repos et on a un appui, on allume la rouge
      digitalWrite(pinLedRouge2, HIGH); // LED rouge alimentée
      digitalWrite(pinLedVerte2, LOW); // LED verte eteinte
         
      etatCourant = ETAT_R2; // on note le nouvel état de notre système
      break;


    case ETAT_R2:// rouge allumées, on a un appui,ETEINTE
      digitalWrite(pinLedRouge2, LOW); // LED rouge ETEINTE
      digitalWrite(pinLedVerte2, HIGH); // LED verte alimentée
      
      
   
      
      etatCourant = ETAT_V2; // on note le nouvel état de notre système
      break;

    case ETAT_V2:// verte allumées, on a un appui,ETEINTE
      digitalWrite(pinLedVerte2, LOW); // LED verte eteinte
     
      digitalWrite(pinLedRouge2, HIGH); // LED rouge all
      
     
     etatCourant = ETAT_R2; // on note le nouvel état de notre système
      break;

  }
}

// ------------------------------------------------------
// On initialise notre système dans le setup
// ------------------------------------------------------
void setup() {
  pinMode (pinLedRouge, OUTPUT);
  pinMode(pinLedVerte, OUTPUT);
  pinMode (pinLedRouge2, OUTPUT);
  pinMode(pinLedVerte2, OUTPUT);

  mettreAuRepos();
  button.attachClick(simpleclick);
}

void loop()

  
[/code]

Bonjour,

Il faut que tu définisses 2 objets OneButton, un pour le premier bouton et un pour le second.
Il faut que tu définisses 2 fonctions simpleClick() et simpleClick2()

Bonjour
merci pour cette réponse rapide. J'ai modifié le code comme demandé mais j'ai toujours le même probleme

[code]







#include <OneButton.h>
const byte buttonPin = 0; // notre bouton est sur la pin 0
const byte buttonPin2 = 1; // notre bouton est sur la pin 1

OneButton button(buttonPin, true); // true pour le mettre en INPUT_PULLUP
OneButton button2(buttonPin2, true); // true pour le mettre en 

// les pins utilisées pour les LEDs
const byte pinLedRouge = 2;
const byte pinLedVerte = 3;
const byte pinLedRouge2 = 4;
const byte pinLedVerte2 = 5;


// la liste des états possible de notre système
// ainsi qu'une variable etatCourant prenant une de ces valeurs
enum {REPOS, ETAT_R,ETAT_V,REPOS2, ETAT_R2, ETAT_V2} etatCourant, etatCourant2;

// ------------------------------------------------------
// Cette fonction installe l'état initial
// ------------------------------------------------------
void mettreAuRepos()
{

  digitalWrite(pinLedRouge,  LOW);
  digitalWrite(pinLedVerte, HIGH);
  digitalWrite(pinLedRouge2, HIGH);
  digitalWrite(pinLedVerte2, HIGH);
  etatCourant = REPOS;
  etatCourant2 = REPOS2;
}

// ------------------------------------------------------
// La fonction de call back, appellée automatiquement quand on clique
// ------------------------------------------------------
void simpleclick()
{
  switch (etatCourant) {
    case REPOS: // on était au repos et on a un appui, on allume la rouge
      digitalWrite(pinLedRouge, HIGH); // LED rouge alimentée
      digitalWrite(pinLedVerte, LOW); // LED verte eteinte
      

      
      etatCourant = ETAT_R; // on note le nouvel état de notre système
      break;


    case ETAT_R:// rouge allumées, on a un appui,ETEINTE
      digitalWrite(pinLedRouge, LOW); // LED rouge ETEINTE
      digitalWrite(pinLedVerte, HIGH); // LED verte alimentée
      
      
   
      
      etatCourant = ETAT_V; // on note le nouvel état de notre système
      break;

    case ETAT_V:// verte allumées, on a un appui,ETEINTE
      digitalWrite(pinLedVerte, LOW); // LED verte eteinte
      digitalWrite(pinLedRouge, HIGH); // LED rouge all
      
     
     etatCourant = ETAT_R; // on note le nouvel état de notre système
      break;

  }
void simpleclick2()
  {
  switch (etatCourant2) {
    case REPOS2: // on était au repos et on a un appui, on allume la rouge
      digitalWrite(pinLedRouge2, HIGH); // LED rouge alimentée
      digitalWrite(pinLedVerte2, LOW); // LED verte eteinte
         
      etatCourant = ETAT_R2; // on note le nouvel état de notre système
      break;


    case ETAT_R2:// rouge allumées, on a un appui,ETEINTE
      digitalWrite(pinLedRouge2, LOW); // LED rouge ETEINTE
      digitalWrite(pinLedVerte2, HIGH); // LED verte alimentée
      
      
   
      
      etatCourant = ETAT_V2; // on note le nouvel état de notre système
      break;

    case ETAT_V2:// verte allumées, on a un appui,ETEINTE
      digitalWrite(pinLedVerte2, LOW); // LED verte eteinte
     
      digitalWrite(pinLedRouge2, HIGH); // LED rouge all
      
     
     etatCourant = ETAT_R2; // on note le nouvel état de notre système
      break;

  }
}

// ------------------------------------------------------
// On initialise notre système dans le setup
// ------------------------------------------------------
void setup() {
  pinMode (pinLedRouge, OUTPUT);
  pinMode(pinLedVerte, OUTPUT);
  pinMode (pinLedRouge2, OUTPUT);
  pinMode(pinLedVerte2, OUTPUT);

  mettreAuRepos();
  button.attachClick(simpleclick);
  button.attachClick(simpleclick2);
}

void loop()

  
[/code]

Cordialement

#include <OneButton.h>

const byte buttonPin1 = 0; // notre bouton est sur la pin 0
const byte buttonPin2 = 1; // notre bouton est sur la pin 1

OneButton button1(buttonPin1, true); // true pour le mettre en INPUT_PULLUP
OneButton button2(buttonPin2, true); // true pour le mettre en INPUT_PULLUP


// les pins utilisées pour les LEDs
const byte pinLedRouge1 = 2;
const byte pinLedVerte1 = 3;
const byte pinLedRouge2 = 4;
const byte pinLedVerte2 = 5;

// la liste des états possible de notre système
// ainsi qu'une variable etatCourant prenant une de ces valeurs
enum {REPOS, ETAT_R, ETAT_V} etatCourant1, etatCourant2;

// ------------------------------------------------------
// Cette fonction installe l'état initial
// ------------------------------------------------------
void mettreAuRepos()
{

  digitalWrite(pinLedRouge1,  LOW);
  digitalWrite(pinLedVerte1, HIGH);
  digitalWrite(pinLedRouge2, LOW);
  digitalWrite(pinLedVerte2, HIGH);
  etatCourant1 = REPOS;
  etatCourant2 = REPOS;
}

// ------------------------------------------------------
// La fonction de call back, appellée automatiquement quand on clique
// ------------------------------------------------------
void simpleclick1()
{
  switch (etatCourant1) {
    case REPOS: // on était au repos et on a un appui, on allume la rouge
      digitalWrite(pinLedRouge1, HIGH); // LED rouge alimentée
      digitalWrite(pinLedVerte1, LOW); // LED verte eteinte

      etatCourant1 = ETAT_R; // on note le nouvel état de notre système
      break;

    case ETAT_R:// rouge allumées, on a un appui,ETEINTE
      digitalWrite(pinLedRouge1, LOW); // LED rouge ETEINTE
      digitalWrite(pinLedVerte1, HIGH); // LED verte alimentée

      etatCourant1 = ETAT_V; // on note le nouvel état de notre système
      break;

    case ETAT_V:// verte allumées, on a un appui,ETEINTE
      digitalWrite(pinLedVerte1, LOW); // LED verte eteinte
      digitalWrite(pinLedRouge1, HIGH); // LED rouge all

      etatCourant1 = ETAT_R; // on note le nouvel état de notre système
      break;
  }
}

void simpleclick2()
{
  switch (etatCourant2) {
    case REPOS: // on était au repos et on a un appui, on allume la rouge
      digitalWrite(pinLedRouge2, HIGH); // LED rouge alimentée
      digitalWrite(pinLedVerte2, LOW); // LED verte eteinte

      etatCourant2 = ETAT_R; // on note le nouvel état de notre système
      break;

    case ETAT_R:// rouge allumées, on a un appui,ETEINTE
      digitalWrite(pinLedRouge2, LOW); // LED rouge ETEINTE
      digitalWrite(pinLedVerte2, HIGH); // LED verte alimentée

      etatCourant2 = ETAT_V; // on note le nouvel état de notre système
      break;

    case ETAT_V:// verte allumées, on a un appui,ETEINTE
      digitalWrite(pinLedVerte2, LOW); // LED verte eteinte
      digitalWrite(pinLedRouge2, HIGH); // LED rouge all

      etatCourant2 = ETAT_R; // on note le nouvel état de notre système
      break;
  }
}

// ------------------------------------------------------
// On initialise notre système dans le setup
// ------------------------------------------------------
void setup() {
  pinMode(pinLedRouge1, OUTPUT);
  pinMode(pinLedVerte1, OUTPUT);
  pinMode (pinLedRouge2, OUTPUT);
  pinMode(pinLedVerte2, OUTPUT);

  mettreAuRepos();
  button1.attachClick(simpleclick1);
  button2.attachClick(simpleclick2);
}

void loop()
{
  button1.tick();
  button2.tick();
}

Comme le traitement du bouton1 et bouton2 est identique tu pourrais faire une fonction pour ne pas dupliquer le code

je sui désolé mais je ne maitrise pas cette notion de fonction....

Pourquoi ais-je ce message ?

a function-definition is not allowed here before '{' token

avec quel programme?

JE PROGRAMME SUR ARDUINO et le transfere ensuite sur attiny

oui, mais quel code te donne ce message?

Excuse-moi

j'avais mal retranscris tes modifications du code

en testant sur l'ide je n'aiplus de message d'erreur

Je vais le tester en réel
Je te tiens au courant

en tous cas merci pour ton aide précieuse

Je viens de le teste. Cela fonctionne parfaitement

Encore un grand merci

Je vais maintenant essayer de décripter tout ca et comprendre d'ou venait mon problème

Merci

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.