Bonjour à toutes et à tous,
J'ai une fonction qui me retourne vrai lorsque une entrée passe de l'état bas à l'état haut. Elle modifie une valeur globale "etatPrec". Cela fonctionne très bien, la voici :
byte etatPrec = LOW;
boolean agir(byte noEnt) {
boolean result = false;
if (digitalRead(noEnt) == HIGH && etatPrec == LOW) {
etatPrec = HIGH;
result = true;
}
if (digitalRead(noEnt) == LOW && etatPrec == HIGH) {
etatPrec = LOW;
result = false;
}
return result;
}
if (agir(10)) { // un appel de la fonction
// Faire ce qu'il faut
}
Maintenant, je souhaite passer la variable "etatPrec" en paramètre afin d'utiliser cette fonction pour plusieurs entrées. J'écris alors :
byte etatPrec_1 = LOW;
byte etatPrec_2 = LOW;
boolean agir(byte noEnt, byte *etatP) {
boolean result = false;
if (digitalRead(noEnt) == HIGH && etatP == LOW) {
etatP = HIGH;
result = true;
}
if (digitalRead(noEnt) == LOW && etatP == HIGH) {
etatP = LOW;
result = false;
}
return result;
}
if (agir(10), &etatPrec_1) { // un appel de la fonction
// Faire ce qu'il faut
}
error: invalid conversion from 'int' to 'byte* {aka unsigned char*}' [-fpermissive]
etatP = HIGH;
^
Je ne vois pas trop comment écrire cette fonction pour ne pas avoir d'erreur de compilation et qu'elle fonctionne, c'est-à-dire qu'au retour de la fonction, le paramètre "etatPrec_1" soit modifié comme il faut.
Merci de votre aide.
Pierre