Utilisation variables et conditions en sorties

Bonjour les Arduinautes,

j'ai un peu de mal avec l'usage des variables et conditions, notamment en sorties , les exemples trouvés étant souvent partiels, il doit me manquer quelque chose, car je n'obtiens pas ce que je veux.

En modifiant par exemple les variables rec,an et st dans le loop du code exemple suivant, j'obtiens le résultat escompté. Toutefois, en cours de programme, une ou plusieurs ligne de code doivent vraisemblablement faire appel automatiquement aux valeurs changeantes de ces mêmes variables.
Aussi avec divers essais différents, soit rien ne se produit, soit c'est invariablement le résultat d'une condition qui s'effectue sans tenir compte des éléments qui la conditionne.

int rec= 6;
int st = 10;
int an= 8;


void setup()

{
pinMode(6,OUTPUT);
pinMode(10,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
pinMode (8,OUTPUT)
}
void loop() {
 
  rec=1;                                     // lignes codées autrement dans un code correcte
  an =0;                                     //                        "
  st=1;                                       //                        "  
  if (( rec == 1) && ( st == 1)){
  digitalWrite (12,HIGH);
  }
  else
  digitalWrite (12,LOW);
  if (( an == 1) && (st == 1)){
    digitalWrite(11,HIGH);
  }
  else digitalWrite(11,LOW);
  }

Les tutos à ce propos ne sont pas toujours évidents pour un débutant. Vos conseils ou renvoi à un cours plus compréhensible , voir détaillé me sera d'une aide appréciable. Merci.

Bonjour,

J'ai l'impression que tu confonds l'état des entrées et leur numéro.

Je te conseille d'utiliser des noms de variables (et constantes) plus explicites

const int pinRec = 6;
const int pinSt = 10;
const int pinAn = 8;

Ensuite tu pourras (éventuellement) créér des variables pour l'état des entrées:

int rec=digitalRead(pinRec)

Merci Kamill,

à vrai dire , je me suis mal exprimé.

En conséquence, ai repris un exemple de code précis et l'ai essayé avant de revenir sur le sujet.

le code suivant fonctionne pour les entrées correctement, les leds des sorties 1,2 et 3 s'allument sur appui respectfs boutons 1,2 et 3.

Par contre aucune réaction des sorties 4 et 5 découlant des conditions en fin de code.

D'où l'objet de ce post, concernant l'utilisation des variables en sorties.

Je me doute bien avoir loupé quelque chose, à savoir quoi et où!

const int sortie1 =6;
 int etatSortie1;

 const int sortie2 = 10;
 int etatSortie2;

const int sortie3 = 12;
int etatSortie3;

 const int sortie4 = 11;
 int etatSortie4;

 const int sortie5 = 8;
 int etatSortie5;

  const int bouton1 =2;
  int etatBouton1;
  
  const int bouton2 = 3;
    int etatBouton2;

    const int bouton3 = 4;
    int etatBouton3 ;

void setup() {
  pinMode(sortie1,OUTPUT);
  pinMode(sortie2,OUTPUT);
  pinMode(sortie3,OUTPUT);
  pinMode(sortie4,OUTPUT);
  pinMode(sortie5,OUTPUT);
  pinMode(bouton1,INPUT_PULLUP);
  pinMode(bouton2,INPUT_PULLUP);
  pinMode(bouton3,INPUT_PULLUP);
 etatBouton1= HIGH;
 etatBouton2= HIGH;
 etatBouton3=HIGH;


}

void loop() {
  etatBouton1= digitalRead(bouton1);
  etatBouton2 = digitalRead(bouton2);
  etatBouton3=digitalRead(bouton3);
  
  if (etatBouton1 == LOW)digitalWrite (sortie1,HIGH);
  else {
  digitalWrite(sortie1,LOW);
}

if (etatBouton2 == LOW)digitalWrite(sortie2,HIGH);
else {
 digitalWrite(sortie2,LOW);
}

if ( etatBouton3 == LOW)digitalWrite( sortie3,HIGH);
else {
  digitalWrite(sortie3,LOW);
}

if (( sortie1 == 1) && (sortie2 == 1))
digitalWrite(sortie4,HIGH);

if (( sortie1== 1) && (sortie3== 1))
digitalWrite(sortie5,HIGH);


}

C'est toujours le même problème. Tu confonds la pin et l'état de la pin
Ce n'est pas

if (( sortie1 == 1) && (sortie2 == 1))
digitalWrite(sortie4,HIGH);

mais

if (( digitalRead(sortie1) == 1) && (digitalRead(sortie2) == 1))
digitalWrite(sortie4,HIGH);

Remarque: sortie4 et sortie5 ne sont jamais remises à LOW.

if (( sortie1 == 1) && (sortie2 == 1))
digitalWrite(sortie4,HIGH);

sortie1 et sortie2 sont numéros des pins, et ne changent jamais.
Tu dois tester etatSortie1 et 2

[Edit : cramé par kamill à la photo finish]

Et il va falloir se préoccuper des rebonds des boutons...

Merci à vous deux,Kamill et Bigill

La solution de Bigill m'est apparue immédiatement après réponse à Kamill, effectivement la condition se faisant avec la variable etatSortie et non la constante pin. Aussi l'ai-je déjà testée sans succès et suis désolé de n'avoir pas corrigé mon post aussitôt. Pourquoi ça ne fonctionne pas ainsi? il semblerait pourtant que.....

Quant à celle de Kamill, Bingo, c'est la bonne.

l'usage de digitalRead en sortie est rarement cité dans les exemples rencontrés, plutôt réservés aux entrées, d'où ma source d' égarement entre autre..;

Avec digital Read, on lit l'état de la pin nommée.
Avec etatSortie, on compare la valeur vraie ou fausse de la variable int affectée, par la fonction == à une référence 1 ou 0.

Comme le dit Bigill, ça devrait jouer!