Auteur Sujet: A l'écrit ça va la pratique non  (Lu 20430 fois)

pn200

  • Newbie
  • *
  • Messages: 38
    • Voir le profil
A l'écrit ça va la pratique non
« le: février 17, 2019, 10:38:10 am »
Bonjour,
Je n'ai pas d'erreur à la vérification, mais à l'essai pratique ça bloque. Ce que j'ai fait me semble logique, mais surement pas celle d'Arduino.
Je vous met une copie de mon code.
Bon dimanche.
Bernard

const byte BP_B = 2; // BP_B sur D2
const byte ILS_B = 3; // ILS_B sur D3
const byte A3D = 4; // Aig3 directe
const byte A3C = 5; // Aig3 deviee
const byte Hp00_P3 = 6; // P3 à Hp00
const byte Hp0_B = 7; // Signal B lampe rouge
const byte Hp1_B = 8; // Signal B lampe verte
const byte Hp2_B = 9; // Signal B lampe orange
const byte Vr0_VrP = 10; // VrP lampes oranges
const byte Vr1_VrP = 11; // VrP lampes vertes

void setup(){
  pinMode (BP_B,INPUT_PULLUP);
  pinMode (ILS_B,INPUT_PULLUP);
  pinMode (A3D,INPUT_PULLUP);
  pinMode (A3C,INPUT_PULLUP);
  pinMode (Hp00_P3,INPUT_PULLUP);
  pinMode (Hp0_B,OUTPUT);
  pinMode (Hp1_B,OUTPUT);
  pinMode (Hp2_B,OUTPUT);
  pinMode (Vr0_VrP,OUTPUT);
  pinMode (Vr1_VrP,OUTPUT);
  // Output = HIGH alors lampe allumee
  // Output = LOW alors lampe eteinte
  digitalWrite (Hp0_B,HIGH); // B rouge allume
  delay (3000);
}

void loop(){

while (digitalRead (BP_B)== HIGH){ 
 if ( A3D == HIGH && Hp00_P3 == HIGH){
digitalWrite (Hp0_B,LOW); // Extinction lampe rouge
delay (200);
digitalWrite (Hp1_B,HIGH); // Lampe verte allumee
    digitalWrite (Vr0_VrP,HIGH); // VrP lampes oranges allumees
  }
}
 
  if ( A3D == HIGH && Hp00_P3 == LOW){
    digitalWrite (Hp0_B,LOW);
    delay (200);
    digitalWrite (Hp1_B,HIGH);
    digitalWrite (Vr1_VrP,HIGH); // Vrp lampes vertes allumees
  }

if ( A3C == HIGH){
    digitalWrite (Hp0_B,LOW); // Extinction lampe rouge
    delay (200);
    digitalWrite (Hp1_B,HIGH); // Lampe verte allumee
    digitalWrite (Hp2_B,HIGH); // Lampe orange allumee
    digitalWrite (Vr0_VrP,HIGH); // VrP lampes oranges allumees
  }
  while (digitalRead(ILS_B) == HIGH){
    // ILS_B active
  }
  digitalWrite (Hp1_B,LOW);
  digitalWrite (Hp2_B,LOW);
  digitalWrite (Vr0_VrP,LOW);
  digitalWrite (Vr1_VrP,LOW);
  delay (200);
  digitalWrite (Hp0_B,HIGH);
}
 
 
 
   
 
   
 
 
   
 
   

 
 

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : A l'écrit ça va la pratique non
« Réponse #1 le: février 17, 2019, 02:14:54 pm »
Cordialement,
Dominique

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : A l'écrit ça va la pratique non
« Réponse #2 le: février 17, 2019, 03:49:17 pm »
Bonjour,

Je ne sais pas trop ce que doit faire votre système mais, en regardant rapidement, on s’aperçoit qu’en plusieurs endroits vous utilisez le numéro de broche au lieu de la valeur qui y est lue. Par exemple :

if ( A3D == HIGH && Hp00_P3 == HIGH) {
ne devrait-il pas s’écrire plutôt :

 if ( digitalRead(A3D) == HIGH && digitalRead(Hp00_P3) == HIGH) {
???
Cordialement

pn200

  • Newbie
  • *
  • Messages: 38
    • Voir le profil
Re : A l'écrit ça va la pratique non
« Réponse #3 le: février 17, 2019, 05:33:59 pm »
Merci à vous deux, je modifie et je vous tiens au courant.
Question: Pourquoi la vérification ne m'a pa

pn200

  • Newbie
  • *
  • Messages: 38
    • Voir le profil
Re : A l'écrit ça va la pratique non
« Réponse #4 le: février 17, 2019, 05:35:57 pm »
Erreur,
Ma question: Pourquoi la vérification était bonne.
Bon dimanche

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : A l'écrit ça va la pratique non
« Réponse #5 le: février 17, 2019, 08:24:44 pm »
Parce que la « vérification » concerne la syntaxe et ce que j’appellerais la semantique de surface (typage des données), pas ce que j’appellerais la semantique profonde.

En l’occurrence comparer un numéro de broche à une constante, HIGH ou LOW, qui est également un nombre est syntaxiquement et sémantiquement (en surface) valide.
« Modifié: février 17, 2019, 08:54:27 pm par Jean-Luc »
Cordialement

pn200

  • Newbie
  • *
  • Messages: 38
    • Voir le profil
Re : A l'écrit ça va la pratique non
« Réponse #6 le: février 17, 2019, 09:27:48 pm »
Bonsoir
Jean Luc, c'est de la signalisation allemande (un signal d'entrée avec le Vorsignal) . L'allumage des LEDs est fonction de la position de l'aiguille A3 et du signal aval P3.
Après modification du code et l'essai tout fonctionne, ça remplacera mon système avec des NAND transistors.
Merci pour votre aide.
Bernard