| simulation semaphore 3 feux | |
|
+10railyRabbit SixtyFive SavignyExpress RE 460 VAUBAN38 jlb Dodesir patpovil Jojo37 piston93 14 participants |
|
Auteur | Message |
---|
piston93 Membre
Age : 64 Localisation : seine st denis Nombre de messages : 11011 Date d'inscription : 01/11/2007
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 13:41 | |
| non SLP est bien branchée comme tu me l'a conseillé, sur sortie 6. Ainsi que je l'ai dit, je suis les consignes surtout sur des sujets que je suis loin de maitriser.
a un moment, j'ai eu détection sans rien avec un cycle rouge jaune rouge jaune. puis la même chose avec un passage éclair sur le vert. Puis plus tard dans l'après midi vert mais sans détection des machines, par contre détection quand passage d'un doigt au dessus du capteur. |
|
| |
jlb Membre
Age : 60 Localisation : Ici Nombre de messages : 1544 Date d'inscription : 31/12/2011
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 14:18 | |
| Ok, et donc tu as bien un pinMode(pinSLP, OUTPUT); digitalWrite(pinSLP, HIGH); dans setup() - Citation :
a un moment, j'ai eu détection sans rien avec un cycle rouge jaune rouge jaune. puis la même chose avec un passage éclair sur le vert.
Les deux doivent être identiques. Le passage par le vert sur le premier a été tellement bref que tu ne l'as pas vu. Un faux positif. On peu corriger ça par logiciel en ne validant une détection que si il y a 2 lectures LOW avec un intervalle de disons 30ms. Essaye ça avant de charcuter tes traverses. Donc au lieu d'avoir simplement : - Citation :
if (digitalRead(pinCapteur) == LOW) {
blah blah blah
}
On utilise une variable permettant de se rappeler l'état précédent du capteur. Comme ceci : - Citation :
byte etatPrecedentCapeur = HIGH;
void loop() { byte nouvelEtatCapteur = digitalRead(pinCapteur); if (nouvelEtatCapteur == LOW && etatPrecedentCapeur == LOW) {
blah blah blah
} etatPrecedentCapeur = nouvelEtatCapteur; delay(30); // entre 20 et 50 ms }
De cette manière, il faut 2 lectures à LOW espacées de 30ms pour valider une détection - Citation :
Puis plus tard dans l'après midi vert mais sans détection des machines, par contre détection quand passage d'un doigt au dessus du capteur.
Je pense que la détection doit être limite limite avec du noir. La sensibilité doit sans doute varier selon la température ce qui explique ce comportement différent. Quand j'avais essayé avec un wagon, le dessous noir n'était pas détecté. J'ai bien peur qu'il faille mettre une étiquette blanche sous la locomotive. |
|
| |
piston93 Membre
Age : 64 Localisation : seine st denis Nombre de messages : 11011 Date d'inscription : 01/11/2007
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 16:18 | |
| voilà, j'ai fait les corrections, cela donne ceci, pour vérification - Citation :
/* les numéros de pin des LED de manière à avoir leur couleur en clair dans le programme */ const int ledRouge = 2; const int ledOrange = 3; const int ledVerte = 4; const int pinCapteur = 5; const int pinSLP = 6; void setup() { pinMode(pinSLP, OUTPUT); digitalWrite(pinSLP, HIGH); pinMode(pinCapteur, INPUT); pinMode(ledRouge, OUTPUT); pinMode(ledOrange, OUTPUT); pinMode(ledVerte, OUTPUT); digitalWrite(ledVerte, HIGH); digitalWrite(ledRouge, LOW); digitalWrite(ledOrange, LOW); byte etatPrecedentCapteur = HIGH;
}
void loop() { byte nouvelEtatCapteur = digitalRead(pinCapteur); if (digitalRead(pinCapteur) == LOW) { // Un objet est présent au dessus du capteur // On démarre la séquence des feux //on eteint le vert digitalWrite(ledVerte, LOW); /* Allume le rouge 15 secondes */ digitalWrite(ledRouge, HIGH); /* Attend que le capteur soit démasqué */ while (digitalRead(pinCapteur) == LOW); delay(15000); digitalWrite(ledRouge, LOW);
/* Allume le orange 15 secondes */ digitalWrite(ledOrange, HIGH); delay(15000); digitalWrite(ledOrange, LOW); /* Allume le vert */ digitalWrite(ledVerte, HIGH);
} // accolade qui ferme le if etatPrecedentCapteur = nouvelEtatCapteur; delay(30) //espacement de lecture en LOW pour detection } // accolade qui ferme la fonction loop()
avant que je compile et fasse televerser (en trimbalant le portable dans mon "atelier" pour le branchement USB sur l'arduino fixé sous le module ) |
|
| |
piston93 Membre
Age : 64 Localisation : seine st denis Nombre de messages : 11011 Date d'inscription : 01/11/2007
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 16:21 | |
| le byte nouvelEtatCapteur = digitalRead(pinCapteur) est bien avant le if conditionnel? |
|
| |
jlb Membre
Age : 60 Localisation : Ici Nombre de messages : 1544 Date d'inscription : 31/12/2011
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 16:26 | |
| Le if est pas bon et il manque la déclaration de la variable etatPrecedentCapteur avant loop() Comme ceci : - Citation :
byte etatPrecedentCapteur = HIGH;
void loop() { byte nouvelEtatCapteur = digitalRead(pinCapteur); if (nouvelEtatCapteur == LOW && etatPrecedentCapteur == LOW) { // Un objet est présent au dessus du capteur // On démarre la séquence des feux // on eteint le vert digitalWrite(ledVerte, LOW); /* Allume le rouge */ digitalWrite(ledRouge, HIGH); /* Attend que le capteur soit démasqué */ while (digitalRead(pinCapteur) == LOW); /* Attend 15 secondes */ delay(15000); digitalWrite(ledRouge, LOW); /* Allume le orange 15 secondes */ digitalWrite(ledOrange, HIGH); delay(15000); digitalWrite(ledOrange, LOW); /* Allume le vert */ digitalWrite(ledVerte, HIGH); } etatPrecedentCapteur = nouvelEtatCapteur; delay(30); // entre 20 et 50 ms }
|
|
| |
piston93 Membre
Age : 64 Localisation : seine st denis Nombre de messages : 11011 Date d'inscription : 01/11/2007
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 16:57 | |
| après modif quand je fait verifier/compiler j'ai en bas dans la bande orange expected `i'before '}' token |
|
| |
jlb Membre
Age : 60 Localisation : Ici Nombre de messages : 1544 Date d'inscription : 31/12/2011
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 17:20 | |
| (désolé j'étais également dans mon atelier)
Hmm, j'ai pas ça. Il y a un numéro de ligne à côté de l'erreur ?
Peux-tu copier-coller l'entièreté de ton code (avec le formatage forum) |
|
| |
piston93 Membre
Age : 64 Localisation : seine st denis Nombre de messages : 11011 Date d'inscription : 01/11/2007
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 17:23 | |
| en fait je viens de corriger, cela donne - Citation :
/* les numéros de pin des LED de manière à avoir leur couleur en clair dans le programme */ const int ledRouge = 2; const int ledOrange = 3; const int ledVerte = 4; const int pinCapteur = 5; const int pinSLP = 6; void setup() { pinMode(pinSLP, OUTPUT); digitalWrite(pinSLP, HIGH); pinMode(pinCapteur, INPUT); pinMode(ledRouge, OUTPUT); pinMode(ledOrange, OUTPUT); pinMode(ledVerte, OUTPUT); digitalWrite(ledVerte, HIGH); digitalWrite(ledRouge, LOW); digitalWrite(ledOrange, LOW);
} byte etatPrecedentCapteur = HIGH;
void loop() { byte nouvelEtatCapteur = digitalRead(pinCapteur); if (nouvelEtatCapteur == LOW && etatPrecedentCapteur == LOW) { // Un objet est présent au dessus du capteur // On démarre la séquence des feux // on eteint le vert digitalWrite(ledVerte, LOW); /* Allume le rouge */ digitalWrite(ledRouge, HIGH); /* Attend que le capteur soit démasqué */ while (digitalRead(pinCapteur) == LOW); /* Attend 15 secondes */ delay(15000); digitalWrite(ledRouge, LOW); /* Allume le orange 15 secondes */ digitalWrite(ledOrange, HIGH); delay(15000); digitalWrite(ledOrange, LOW); /* Allume le vert */ digitalWrite(ledVerte, HIGH); } etatPrecedentCapteur = nouvelEtatCapteur; delay(30); // entre 20 et 50 ms }
le double == et le double && signifient une répetition? |
|
| |
jlb Membre
Age : 60 Localisation : Ici Nombre de messages : 1544 Date d'inscription : 31/12/2011
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 17:28 | |
| Le double == est le test d'égalité, le && est le ET logique. Donc la condition du if est vrai si
nouvelEtatCapteur vaut LOW ET que etatPrecedentCapteur vaut LOW
Autrement dit, il faut que la valeur renvoyée par le capteur soit LOW deux fois de suite et à un intervalle de 30ms |
|
| |
patpovil Membre
Age : 62 Localisation : Amagney Nombre de messages : 466 Date d'inscription : 17/01/2011
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 17:51 | |
| la version corrigé - Code:
-
/* les numéros de pin des LED de manière à avoir leur couleur en clair dans le programme */ const int ledRouge = 2; const int ledOrange = 3; const int ledVerte = 4; const int pinCapteur = 5; const int pinSLP = 6; int etatPrecedentCapteur; void setup() { pinMode(pinSLP, OUTPUT); digitalWrite(pinSLP, HIGH); pinMode(pinCapteur, INPUT); pinMode(ledRouge, OUTPUT); pinMode(ledOrange, OUTPUT); pinMode(ledVerte, OUTPUT); digitalWrite(ledVerte, HIGH); digitalWrite(ledRouge, LOW); digitalWrite(ledOrange, LOW); byte etatPrecedentCapteur = HIGH;
}
void loop() { byte nouvelEtatCapteur = digitalRead(pinCapteur); if (digitalRead(pinCapteur) == LOW) { // Un objet est présent au dessus du capteur // On démarre la séquence des feux //on eteint le vert digitalWrite(ledVerte, LOW); /* Allume le rouge 15 secondes */ digitalWrite(ledRouge, HIGH); /* Attend que le capteur soit démasqué */ while (digitalRead(pinCapteur) == LOW); delay(15000); digitalWrite(ledRouge, LOW);
/* Allume le orange 15 secondes */ digitalWrite(ledOrange, HIGH); delay(15000); digitalWrite(ledOrange, LOW); /* Allume le vert */ digitalWrite(ledVerte, HIGH);
} // accolade qui ferme le if etatPrecedentCapteur = nouvelEtatCapteur; delay(30); //espacement de lecture en LOW pour detection }//accolade qui ferme la fonction loop() La doc Sharp du capteur recommande un montage transversale par rapport à l'objet en mouvement peut être une piste pour améliorer la fiabilité de la detection |
|
| |
piston93 Membre
Age : 64 Localisation : seine st denis Nombre de messages : 11011 Date d'inscription : 01/11/2007
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 18:00 | |
| j'ai fait le televersement rognetediou cela reste au vert en permanence restons |
|
| |
jlb Membre
Age : 60 Localisation : Ici Nombre de messages : 1544 Date d'inscription : 31/12/2011
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 18:03 | |
| Bonjour patpovil - patpovil a écrit:
- la version corrigé
[snip] Dans setup() : - Citation :
byte etatPrecedentCapteur = HIGH;
Cette déclaration de variable locale masque la déclaration de la variable globale. L'initialisation de cette dernière n'est pas faite du coup Le if n'est pas bon - Citation :
La doc Sharp du capteur recommande un montage transversale par rapport à l'objet en mouvement peut être une piste pour améliorer la fiabilité de la detection
Oui, le positionnement n'est pas idéal mais le mettre transversalement n'est pas possible, les optiques se retrouvent sous les rails.
Dernière édition par jlb le Dim 12 Jan 2014 - 18:07, édité 1 fois |
|
| |
jlb Membre
Age : 60 Localisation : Ici Nombre de messages : 1544 Date d'inscription : 31/12/2011
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 18:04 | |
| Le capteur est propre ? Sinon étiquette blanche |
|
| |
patpovil Membre
Age : 62 Localisation : Amagney Nombre de messages : 466 Date d'inscription : 17/01/2011
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 18:19 | |
| Mea culpa Je n'avais pas vu cette ligne byte etatPrecedentCapteur = HIGH; dans le setup |
|
| |
piston93 Membre
Age : 64 Localisation : seine st denis Nombre de messages : 11011 Date d'inscription : 01/11/2007
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 18:37 | |
| essai avec un morceau de forex, pas de detection à hauteur de chassis, mais detection à vers 1,3cm au dessus de la surface du rail. je vais devoir descendre le capteur et donc être obliger des traverses encore des essais à faire |
|
| |
VAUBAN38 Membre
Age : 73 Localisation : GRENOBLE Nombre de messages : 502 Date d'inscription : 04/02/2012
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 19:35 | |
| Effectivement le détecteur Sharp GP2Y0D810Z0F 10cm est donné pour une distance de détection comprise entre 2 et 10 cm. Son petit frère le GP2Y0D805Z0F va lui de 0.5 à 5 cm. Il serait peut-être plus adapté au positionnement entre rails.
|
|
| |
jlb Membre
Age : 60 Localisation : Ici Nombre de messages : 1544 Date d'inscription : 31/12/2011
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 19:37 | |
| Ben voilà qu'il se décide à se conformer à sa datasheet celui là
Essaye de descendre le capteur sans couper les traverses dans un premier temps. |
|
| |
piston93 Membre
Age : 64 Localisation : seine st denis Nombre de messages : 11011 Date d'inscription : 01/11/2007
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 21:09 | |
| - jlb a écrit:
- Ben voilà qu'il se décide à se conformer à sa datasheet celui là
Essaye de descendre le capteur sans couper les traverses dans un premier temps. je verrai cela demain. |
|
| |
piston93 Membre
Age : 64 Localisation : seine st denis Nombre de messages : 11011 Date d'inscription : 01/11/2007
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 21:15 | |
| - VAUBAN38 a écrit:
- Effectivement le détecteur Sharp GP2Y0D810Z0F 10cm est donné pour une distance de détection comprise entre 2 et 10 cm.
Son petit frère le GP2Y0D805Z0F va lui de 0.5 à 5 cm. Il serait peut-être plus adapté au positionnement entre rails.
je veux bien mais le trouver d'ici jeudi me parait impossible et en plus il me me faudrait déjà sur un circuit semblable à celui que j'ai si tu as la solution, je suis preneur pour plus tard ou pour une autre situation genre gestion d'une petite gare cachée pour un réseau d'expo |
|
| |
VAUBAN38 Membre
Age : 73 Localisation : GRENOBLE Nombre de messages : 502 Date d'inscription : 04/02/2012
| Sujet: Re: simulation semaphore 3 feux Dim 12 Jan 2014 - 21:29 | |
| Personnellement sur les tuyaux de jlb, j'utilise le modèle de chez Pololu trouvable à cette adresse : http://www.generationrobots.com/fr/400785-capteur-de-proximit%C3%A9-infrarouge-digital-sharp-5cm-de-pololu.htmlD'ici jeudi, çà risque en revanche d'être chaud (bien que l'expédition soit rapide) ! mais en plus il n'en reste que deux en stock ! Pour ce qui est de la taille, le détecteur est identique donc ta réservation devrait convenir, quant au circuit support il est à priori (d'après ta photo) plus petit que ton modèle (taille du circuit 9x22 mm) ce qui ne devrait donc pas être un souci. Bon courage |
|
| |
piston93 Membre
Age : 64 Localisation : seine st denis Nombre de messages : 11011 Date d'inscription : 01/11/2007
| Sujet: Re: simulation semaphore 3 feux Lun 13 Jan 2014 - 10:52 | |
| - VAUBAN38 a écrit:
- Personnellement sur les tuyaux de jlb, j'utilise le modèle de chez Pololu trouvable à cette adresse :
http://www.generationrobots.com/fr/400785-capteur-de-proximit%C3%A9-infrarouge-digital-sharp-5cm-de-pololu.html
D'ici jeudi, çà risque en revanche d'être chaud (bien que l'expédition soit rapide) ! mais en plus il n'en reste que deux en stock !
Pour ce qui est de la taille, le détecteur est identique donc ta réservation devrait convenir, quant au circuit support il est à priori (d'après ta photo) plus petit que ton modèle (taille du circuit 9x22 mm) ce qui ne devrait donc pas être un souci.
Bon courage je verrai donc plus tard. Là je vais être trop juste. J'ai mis des cales de deux mm d'épaisseur, le capteur est donc un peu descendu. Après essai, à condition de l'étiquette blanche indiquée par jlb, cela fonctionne sans problème. |
|
| |
piston93 Membre
Age : 64 Localisation : seine st denis Nombre de messages : 11011 Date d'inscription : 01/11/2007
| Sujet: Re: simulation semaphore 3 feux Mer 15 Jan 2014 - 11:42 | |
| e viens de recevoir le capteur de VAUBAN38, la poste est vraiment rapide!!! par contre il ne comporte que trois branchements GND, OUT et Vin par rapport au précédent. Pour celui ci, la sortie SLP avait été raccordée à l'arduino et une ligne de code lui était consacrée. Dans le cadre du nouveau capteur, est il nécessaire de réécrire le programme en enlevant la ligne de code concernée, ou cela va-t-il fonctionner tout de même? |
|
| |
jlb Membre
Age : 60 Localisation : Ici Nombre de messages : 1544 Date d'inscription : 31/12/2011
| Sujet: Re: simulation semaphore 3 feux Mer 15 Jan 2014 - 11:50 | |
| Sur ce modèle SLP est connecté à +5V sur la breakout board. Donc tu n'a plus à t'en soucier Tu peux laisser ou enlever la ligne de code, ça n'a pas d'importance Le programme tel qu'il est fonctionnera pareil |
|
| |
piston93 Membre
Age : 64 Localisation : seine st denis Nombre de messages : 11011 Date d'inscription : 01/11/2007
| Sujet: Re: simulation semaphore 3 feux Mer 15 Jan 2014 - 12:05 | |
| merci jlb une chose de moins à faire |
|
| |
VAUBAN38 Membre
Age : 73 Localisation : GRENOBLE Nombre de messages : 502 Date d'inscription : 04/02/2012
| Sujet: Re: simulation semaphore 3 feux Mer 15 Jan 2014 - 14:50 | |
| [quote="piston93"]e viens de recevoir le capteur de VAUBAN38, la poste est vraiment rapide!!! Tu as simplement eu la chance de tomber sur un pigeon voyageur qui volait plus vite que les autres ! ( sans doute un accro à l'E.P.O - Eau Pastis Olives ) Récemment j'ai eu un paquet qui a mis une semaine 1/2 pour faire 100 kms .... même en vélo j'aurai fait plus vite Bonne adaptation pour ton Pololu |
|
| |
Contenu sponsorisé
| Sujet: Re: simulation semaphore 3 feux | |
| |
|
| |
| simulation semaphore 3 feux | |
|