LOCODUINO
Parlons Arduino => Débuter => Discussion démarrée par: pn200 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);
}
-
Svp :commencer par cela :
http://www.locoduino.org/spip.php?article25 (http://www.locoduino.org/spip.php?article25)
-
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) {
???
-
Merci à vous deux, je modifie et je vous tiens au courant.
Question: Pourquoi la vérification ne m'a pa
-
Erreur,
Ma question: Pourquoi la vérification était bonne.
Bon dimanche
-
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.
-
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