Bonjour udina
Question, comment sont câblés tes boutons, d'un côté à GND et de l'autre sur la pin du UNO?
Essaies ça, ce n'est pas testé. L'essentiel est dans:
void simpleClickAppuiPedale()
et
void simpleClickRelachementPedale()
Le programme:
#include "OneButton.h"
OneButton boutonAppuiPedale;
OneButton boutonRelanchementPedale;
OneButton boutonArretVehicule;
OneButton boutonRelanceVehicule;
const int relaisInverseur = 2;
const int relaisCanal_A_B_PedaleAccelerateur = 12;
const int relaisParking = 13;
const int valeurFilVertInverseur = 8;
const int valeurFilBlancInverseur = 3;
const int valeurFilBleuInverseur = 4;
const int Canal_A = 6;
int pwmValue_A;
const int Canal_B = 5;
int pwmValue_B;
const int ValeurCanal_A = A0;
const int ValeurCanal_B = A5;
// _______________________________________________________ SETUP ___________________________________________________________
void setup() {
Serial.begin(115200);
// ------------------ Initialisation des boutons ---------------------
boutonAppuiPedale.setup(9, INPUT);
boutonRelanchementPedale.setup(10, INPUT);
boutonArretVehicule.setup(11, INPUT);
boutonRelanceVehicule.setup(15, INPUT);
boutonAppuiPedale.attachClick(simpleClickAppuiPedale);
boutonRelanchementPedale.attachClick(simpleClickRelachementPedale);
boutonArretVehicule.attachClick(simpleClickArretVehicule);
boutonRelanceVehicule.attachClick(simpleClickRelanceVehicule);
pinMode(relaisInverseur, OUTPUT);
pinMode(valeurFilVertInverseur, OUTPUT);
pinMode(valeurFilBlancInverseur, OUTPUT);
pinMode(valeurFilBleuInverseur, OUTPUT);
pinMode(relaisCanal_A_B_PedaleAccelerateur, OUTPUT);
pinMode(relaisParking, OUTPUT);
pinMode(Canal_A, OUTPUT);
pinMode(Canal_B, OUTPUT);
pinMode(ValeurCanal_A, INPUT);
pinMode(ValeurCanal_B, INPUT);
arretDuVehiculeAuDemarrageDuProgramme();
}
// ___________________________________________________________ LOOP _______________________________________________________________________
void loop() {
boutonAppuiPedale.tick();
boutonRelanchementPedale.tick();
boutonArretVehicule.tick();
boutonRelanceVehicule.tick();
}
// _________________________________________________________________ FONCTION(S) _____________________________________________________________
void simpleClickAppuiPedale() {
/* j'aimerais pouvoir à chaque appui sur le bouton diminuer de 10 la valeur Canal_A et augmenter la valeur Canal_B
de 10 également et que les valeurs soient mémorisées pour une deuxième impulsion sur le bouton*/
//pwmValue_A = map(analogRead(ValeurCanal_A), 0, 1023, 0, 255);
//pwmValue_B = map(analogRead(ValeurCanal_B), 0, 1023, 0, 255);
//
//for ( int i = 0; i <= 10; i++ ) {
//analogWrite(Canal_A, 205 - i);
//analogWrite(Canal_B, 50 + i);
//delay(50);
//Serial.println("A " + String(pwmValue_A) + "\t" + "B " + String(pwmValue_B));
//}
pwmValue_A -=10; // Diminuer A
pwmValue_B +=10; // Augmenter B
constrain(pwmValue_A, 0, 255); // Pour limiter les valeurs
constrain(pwmValue_B, 0, 255); // https://docs.arduino.cc/language-reference/en/functions/math/constrain/
Serial.println("A " + String(pwmValue_A) + "\t" + "B " + String(pwmValue_B));
}
void simpleClickRelachementPedale() {
/* j'aimerais pouvoir à chaque appui sur le bouton augmenter de 10 la valeur Canal_A et diminuer la valeur Canal_B
de 10 également et que les valeurs soient mémorisées pour une deuxième impulsion sur le bouton*/
//pwmValue_A = map(analogRead(ValeurCanal_A), 0, 1023, 0, 255);
//pwmValue_B = map(analogRead(ValeurCanal_B), 0, 1023, 0, 255);
//
//for ( int i = 0; i <= 10; i++ ) {
//analogWrite(Canal_A, + i);
//analogWrite(Canal_B, - i);
//delay(50);
//Serial.println("A " + String(pwmValue_A) + "\t" + "B " + String(pwmValue_B));
//}
pwmValue_A +=10; // Augmenter A
pwmValue_B -=10; // Diminuer B
constrain(pwmValue_A, 0, 255); // Pour limiter les valeurs
constrain(pwmValue_B, 0, 255); // https://docs.arduino.cc/language-reference/en/functions/math/constrain/
Serial.println("A " + String(pwmValue_A) + "\t" + "B " + String(pwmValue_B));
}
//}
void simpleClickArretVehicule() {
analogWrite(Canal_A, 205);
analogWrite(Canal_B, 50);
delay(2000);
digitalWrite(relaisParking, HIGH);
delay(500);
digitalWrite(relaisParking, LOW);
}
void simpleClickRelanceVehicule() {
digitalWrite(relaisInverseur, HIGH);
digitalWrite(valeurFilVertInverseur, LOW);
digitalWrite(valeurFilBlancInverseur, LOW);
digitalWrite(valeurFilBleuInverseur, HIGH);
delay(1000);
digitalWrite(relaisInverseur, LOW);
}
void arretDuVehiculeAuDemarrageDuProgramme() {
digitalWrite(relaisInverseur, LOW);
analogWrite(Canal_A, 205); // valeur des deux canaux à l'entrée de la LOOP
analogWrite(Canal_B, 50);
delay(1000);
digitalWrite(relaisCanal_A_B_PedaleAccelerateur, HIGH);
delay(1000);
digitalWrite(relaisParking, HIGH);
delay(2000);
digitalWrite(relaisParking, LOW);
}
/* OIC canal un de la pédale : 53 ==> pédale relevée : 17.8 -- 1,79V / pédale enfoncée : 81.4 -- 8V
OIC canal deux de la pédale : 54 ==> pédale relevée : 81.8 -- 8,18V / pédale enfoncée : 18.7 -- 2V
*/
Cordialement
jpbbricole