Aide programme avec touch pad ON/OFF

Bonjour à tous,

Je travaille actuellement sur un produit équipé de led, d’un attiny85, de 3 touchpads associés à un TTP224 dont les sorties sont reliées à A1, A2, A3 du tiny.

Ce que je souhaite faire :

  • Lorsque j’appuie sur un des 3 touch pads, je rentre dans une boucle qui allume les leds pendant un certain temps, puis s’éteignent.
  • Si j’appuie de nouveau sur un des 3 touch pads pendant le déroulement du programme, je retourne au départ (et c’est là que je coince), j’éteins les leds et j’attends que l’utilisateur appuie de nouveau sur un touch pad.

Mon problème est le suivant : si je test l’appuie des touch pads pendant le déroulement du programme et que j’effectue un " resetFunc(); , ça ne réagit pas toujours bien, parfois les touch pads ne sont plus détectés.
Si j’envoie un “analogWrite(ledPin, 0);” , les leds se ralluments lorsque je relache le touchpad.

En fait je souhaite faire un reset ou redémarrer entièrement la fonction si j’appuie sur un touch pad pendant le déroulement du programme.

void setup() {
 
  pinMode(ledPin, OUTPUT);
  pinMode(A1, INPUT);
  pinMode(A2, INPUT);
  pinMode(A3, INPUT);
   ledCameOn = millis();
}


void go() {
     while (time_now < 15000UL)
    {

      time_now++;
      delay(1);
      analogWrite(ledPin, puissance);

      if (digitalRead(A1) == LOW && digitalRead(A2) == LOW && digitalRead(A3) == LOW) {
      lancement = 0;
      }
      
      if ((digitalRead(A1) == HIGH || digitalRead(A2) == HIGH || digitalRead(A3) == HIGH) && lancement == 0){
 puissance = 0;
      }
    }


    
    time_now = 0;
    analogWrite(ledPin, 0);
   // boucle();



}

void loop() {


 if ((digitalRead(A1) == HIGH || digitalRead(A2) == HIGH || digitalRead(A3) == HIGH)) {            //check if the pushbutton is pressed
    //if it is, the buttonState is HIGH
    lancement = 1;  
    puissance = 255;
    go();    
  }
  
  else {
    analogWrite(ledPin, 0);          // turn LED off
}


}


void boucle()
{


}

Bonjour,

C'est quoi un resetFunc() ?

Il faut que tu testes le changement d'état du touchpad puis son état au lieu de tester uniquement l'état. Evites le boucle while. loop() est déjà appelée en boucle

Ce programme se prête bien à une mise en oeuvre par machine d'états. Lis ce tuto.