| 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 29 Déc 2013 - 11:35 | |
| - jlb a écrit:
- piston93 a écrit:
- y a-t-il besoin de virer une traverse?
J'ai fait les essais montrés sur la vidéo sans virer de traverse. J'ai aussi essayé en descendant le capteur (c'est à dire par collé au dessous des traverses) de 5mm et ça fonctionne. Si on éloigne trop, les traverses gênent J'avais zappé la vidéo à quoi ça sert que tu te décarcasse j'attendais pour la pose de la voie. Je vais donc faire une ouverture dans le plan de voie de la taille du capteur. Je ne couperai pas de traverse, il sera toujours temps de le faire après. |
|
| |
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 6 Jan 2014 - 0:25 | |
| c'est un peu hors sujet quoi que! mise en place (temporaire du detecteur IR) ouverture creusée dans la piste de roulement il se loge sans problème et affleure juste la surface mise en place des rails, les capteurs ne sont pas (ou peu) masqués par les traverses collage des rails et ballastage faits (détecteur enlevé bien sur ) on va pouvoir attaquer la partie arduino je me suis procuré le bouquin de C tavernier, mais ce n'est pas gagné J'ai aussi parcouru en grande partie les fils du forum LR sur le sujet mais il y a trop de termes inconnus donc incompréhensibles (pour l'instant) et de digressions qui me font décrocher en l'état, je pense saisir le branchement des leds mais comment connecter le détecteur IR à l'arduino? Il comporte 5 connections, sont-elles toutes nécessaires? conclusion, y a du boulot et encore je ne parle pas du programme
Dernière édition par piston93 le Mar 7 Jan 2014 - 0:01, é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 Lun 6 Jan 2014 - 7:51 | |
| Salut Pascal - piston93 a écrit:
collage des rails et ballastage faits (détecteur enlevé bien sur )
Joli travail d'intégration ! - Citation :
on va pouvoir attaquer la partie arduino je me suis procuré le bouquin de C tavernier, mais ce n'est pas gagné J'ai aussi parcouru en grande partie les fils du forum LR sur le sujet mais il y a trop de termes inconnus donc incompréhensibles (pour l'instant) et de digressions qui me font décrocher
Ça va venir, tu vas voir. - Citation :
en l'état, je pense saisir le branchement des leds mais comment connecter le détecteur IR à l'arduino? Il comporte 5 connections, sont-elles toutes nécessaires? Pas toutes : Au dos du capteur tu as le nom des broches : Connecte OUT à une des E/S numériques de l'Arduino. Par exemple la 5 (étant donné que dans le bout de code que j'avais posté pour les feux, 2, 3 et 4 sont employés pour les LED). Dans le programme, il faudra : 1 - donner un petit nom à cette broche, au début du programme, à l'extérieur des fonctions setup() et loop() : - Citation :
const int pinCapteur = 5;
2 - dans setup(), indiquer que cette broche est en entrée - Citation :
pinMode(pinCapteur, INPUT);
3 - dans loop(), lire le capteur et si il détecte quelque chose (c'est à dire pinCapteur est à l'état bas), démarrer la séquence des feux. - Citation :
if (digitalRead(pinCapteur) == LOW) { // Un objet est présent au dessus du capteur // On démarre la séquence des feux ... }
À la place des ... on aura le programme d'allumage de la séquence des feux. Pour l'instant, tu peux simplement allumer une des LED de ton sémaphore qui est normalement câblé comme ceci : Pour allumer une des LED, il faut mettre un état haut (HIGH) sur la broche correspondante. Par exemple on va allumer la LED rouge. Donc, au début du programme, à l'extérieur des fonctions setup() et loop() : - Citation :
const int ledRouge = 2;
Dans setup(), il faut mettre cette broche en sortie : - Citation :
pinMode(ledRouge, OUTPUT);
(pour compléter, il faut faire de même pour les autres broches affectées aux LED) Et donc loop() serait : - Citation :
void loop() { if (digitalRead(pinCapteur) == LOW) { // Un objet est présent au dessus du capteur // Allume le feu rouge digitalWrite(ledRouge, HIGH); } else { // rien au dessus du capteur // eteint le feu rouge digitalWrite(ledRouge, LOW); } }
|
|
| |
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 6 Jan 2014 - 8:31 | |
| merci jlb pour ton aide étant pressé par le temps, je ne peux pas maintenant m'investir suffisamment dans le truc et te laisse le plus gros du boulot j'espère au passage que d'autres en profite car malgré mes lacunes, je trouve l'arduino très intéressant. - jlb a écrit:
- Citation :
en l'état, je pense saisir le branchement des leds mais comment connecter le détecteur IR à l'arduino? Il comporte 5 connections, sont-elles toutes nécessaires? Pas toutes :
Au dos du capteur tu as le nom des broches :
bon pour le branchement, GND OK, OUT OK, SLP et VCC se raccordent à la même connexion sur le uno? ou bien on choisit l'une ou l'autre? |
|
| |
jlb Membre
Age : 60 Localisation : Ici Nombre de messages : 1544 Date d'inscription : 31/12/2011
| Sujet: Re: simulation semaphore 3 feux Lun 6 Jan 2014 - 8:57 | |
| - piston93 a écrit:
- bon pour le branchement, GND OK, OUT OK, SLP et VCC se raccordent à la même connexion sur le uno? ou bien on choisit l'une ou l'autre?
Il faut connecter les deux Il n'y qu'un seul 5V sur l'Arduino Uno. Donc soit tu soudes un fil entre SLP et VCC sur les broches du capteur, soit tu raccordes le SLP à une broche logique de l'Arduino et tu mets cette broche en sortie et à l'état haut. Par exemple la broche 6. Au début de ton programme tu aurais : - Citation :
const int pinSLP = 6;
Dans setup() tu aurais : - Citation :
pinMode(pinSLP, OUTPUT); digitalWrite(pinSLP, HIGH);
C'est ce que je ferais car c'est plus élégant et ça demande moins de travail de soudure et on peut imaginer que dans le futur tu réutilises ce capteur pour un usage où tu auras besoin de le mettre inactif à certains moments en mettant pinSLP à l'état bas. Et puis si par mégarde je me suis planté et qu'il faille mettre SLP à l'état bas au lieu de l'état haut pour que le capteur fonctionne, il suffit de changer une ligne de code plutôt que de sortir le fer à souder Il faut penser logiciel
Dernière édition par jlb le Lun 6 Jan 2014 - 9:03, édité 2 fois |
|
| |
VAUBAN38 Membre
Age : 73 Localisation : GRENOBLE Nombre de messages : 502 Date d'inscription : 04/02/2012
| Sujet: Re: simulation semaphore 3 feux Lun 6 Jan 2014 - 9:00 | |
| [quote="piston93"]merci jlb pour ton aide étant pressé par le temps, je ne peux pas maintenant m'investir suffisamment dans le truc et te laisse le plus gros du boulot j'espère au passage que d'autres en profite car malgré mes lacunes, je trouve l'arduino très intéressant. [quote="jlb"] Rassures toi d'autres en profite (moi entre autres !) Je me suis largement appuyé sur vos échanges pour avancer sur mon projet de gare cachée. Le bout de programme est écrit, et testé et çà marche ! Pour le positionnement des capteurs j'ai privilégié une détection par le dessus (puisque dans une zône cachée) plus facile à mettre en oeuvre et qui évite le risque d'éléments pertubateurs se déposant sur les lentilles. Et au passage je confirme que l'Arduino c'est génial et très accessible ! |
|
| |
jlb Membre
Age : 60 Localisation : Ici Nombre de messages : 1544 Date d'inscription : 31/12/2011
| Sujet: Re: simulation semaphore 3 feux Lun 6 Jan 2014 - 9:02 | |
| Effectivement on peut mettre le capteur au plafond à plus de 5cm pour le modèle courte distance, plus de 10cm pour l'autre Content de voir que tu progresses de ton côté aussi VAUBAN38 |
|
| |
piston93 Membre
Age : 64 Localisation : seine st denis Nombre de messages : 11011 Date d'inscription : 01/11/2007
| |
| |
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 6 Jan 2014 - 23:42 | |
| - jlb a écrit:
- piston93 a écrit:
- d'ailleurs pour raccorder à l'arduino, c'est CECI qu'il faut?
Par exemple. Pense à mettre de la gaine thermorétractable sur les soudures pour bien isoler.
pour l'instant, n'ayant pas de gaine thermorétractable, je me contente d'isoler les soudures avec du vernis à ongles |
|
| |
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 6 Jan 2014 - 23:55 | |
| pour résumer le déroulement
rien sur la voie (au dessus du capteur) feux vert passage d'une loco (ou d'une rame) feu rouge qui reste allumé X secondes, le vert s'éteint puis bascule sur feu jaune qui reste allumé X secondes, le rouge et le vert sont éteints puis bascule sur le feu vert (le jaune s’éteint) qui reste allumé tant que rien ne passe sur le capteur, le rouge et le jaune restant éteints. |
|
| |
RE 460 membre s'en étant allé
Localisation : region Pays de la LOIRE Nombre de messages : 19883 Date d'inscription : 17/10/2008
| Sujet: Re: simulation semaphore 3 feux Mar 7 Jan 2014 - 0:11 | |
| Il y en a chez les castomerlin de la gaine thermo |
|
| |
VAUBAN38 Membre
Age : 73 Localisation : GRENOBLE Nombre de messages : 502 Date d'inscription : 04/02/2012
| Sujet: Re: simulation semaphore 3 feux Mar 7 Jan 2014 - 8:38 | |
| Bonjour, Désolé de disgresser quelque peu du sujet initial, mais comme c'est le seul sujet consacré à l'Arduino ....J'espère que Piston93 ne m'en tiendra pas rigueur - Sur une Arduino, peut-on utiliser indifféremment les entrées digitales, celles dont le numéro est précédé du signe ~ ont-elles un fonctionnement spécifique ? - Existe-t-il un moyen de faire "sauter" un ensemble d'instructions dans le déroulement du programme si une condition est remplie (Equivalence du IF .......GO TO.......... en Basic) Petite suggestion à Jlb (si ton temps disponible le permet) : compte tenu de ta maîtrise de l'Arduino, et de tes qualités pédagogiques indéniables (ne rougis pas ! ) pourquoi ne pas animer une partie initiation Arduino axée sur la réalisation de petits montages tels que le sémaphore, gestion de gare, passage à niveau etc .... En restant dans le simple et le concret. J'ai essayé de suivre sur le forum LR l'initiation dite "pour les nuls" mais c'est devenu rapidement un échange entre "spécialistes" et les nuls (dont je suis) sont vite largués !! A+ |
|
| |
jlb Membre
Age : 60 Localisation : Ici Nombre de messages : 1544 Date d'inscription : 31/12/2011
| Sujet: Re: simulation semaphore 3 feux Mar 7 Jan 2014 - 9:00 | |
| Bonjour - VAUBAN38 a écrit:
- Bonjour,
- Sur une Arduino, peut-on utiliser indifféremment les entrées digitales, celles dont le numéro est précédé du signe ~ ont-elles un fonctionnement spécifique ?
Ces entrées/sorties sont soit numériques (donc emploi de digitalRead et digitalWrite), soit, si elles sont configurées en sortie (pinMode( pin, OUTPUT); ) des PWM (analogWrite). le nom analogWrite n'est pas très bien choisi car il ne s'agit pas d'une valeur analogique mais bien d'une PWM donc un signal carré dont le rapport état haut sur cycle est réglable de 0 à 255. - Citation :
- Existe-t-il un moyen de faire "sauter" un ensemble d'instructions dans le déroulement du programme si une condition est remplie (Equivalence du IF .......GO TO.......... en Basic)
Oui, tu as un exemple dans le code que j'ai mis plus haut et que je recopie ici : - Citation :
if (digitalRead(pinCapteur) == LOW) { // Un objet est présent au dessus du capteur // Allume le feu rouge digitalWrite(ledRouge, HIGH); } else { // rien au dessus du capteur // eteint le feu rouge digitalWrite(ledRouge, LOW); }
Si la condition entre les parenthèses après le if est vraie alors le code situé entre la première paire d'accolades sera exécuté (allumage du feu). Si elle est fausse alors le code situé entre la seconde paire d'accolades sera exécuté (extinction du feu). Bien qu'il existe aussi un goto, je déconseille d'utiliser cette instruction non structurée qui conduit rapidement à du code spaghetti. - Citation :
Petite suggestion à Jlb (si ton temps disponible le permet) : compte tenu de ta maîtrise de l'Arduino, et de tes qualités pédagogiques indéniables (ne rougis pas ! ) pourquoi ne pas animer une partie initiation Arduino axée sur la réalisation de petits montages tels que le sémaphore, gestion de gare, passage à niveau etc .... En restant dans le simple et le concret.
Pourquoi pas, ça sera au rythme de mes disponibilités. Le sémaphore est en cours le passage a niveau c'est grosso-modo le même programme que le sémaphore excepté que la séquence déclenchée consiste à piloter un servo-moteur (un poil plus compliqué si on veut prendre en compte un nouveau train alors que la séquence du train précédent n'est pas terminée). Pour la gare c'est plus compliqué
Dernière édition par jlb le Mar 7 Jan 2014 - 13:37, édité 1 fois |
|
| |
VAUBAN38 Membre
Age : 73 Localisation : GRENOBLE Nombre de messages : 502 Date d'inscription : 04/02/2012
| Sujet: Re: simulation semaphore 3 feux Mar 7 Jan 2014 - 9:14 | |
| J'avais bien effectivement vu le IF.....ELSE..... mais je faisais plutôt référence au cas d'une condition qui si elle est satisfaite entraîne l'abandon de toute une partie de la séquence du programme (plusieurs instructions consécutives) Dans ce cas le GOTO est plus facile à gérer, (à user avec modération effectivement, sinon --> Spaghetti !) Tu indiques qu'il existe, mais comment l'utilises tu ? En basic il renvoie à un numéro de ligne, mais en Arduino ? Comment l'adresses-tu ? A+ |
|
| |
jlb Membre
Age : 60 Localisation : Ici Nombre de messages : 1544 Date d'inscription : 31/12/2011
| Sujet: Re: simulation semaphore 3 feux Mar 7 Jan 2014 - 9:20 | |
| Dans ce cas j'utiliserais un if avec la condition inverse : - Code:
-
if (condition pour continuer l'exécution) { // instruction qui ne seront pas faites si la condition est fausse }
Je n'ai jamais utilisé le goto en C. |
|
| |
SavignyExpress Membre
Age : 61 Localisation : yyy Nombre de messages : 2043 Date d'inscription : 10/10/2010
| Sujet: Re: simulation semaphore 3 feux Mar 7 Jan 2014 - 12:47 | |
| - jlb a écrit:
- Je n'ai jamais utilisé le goto en C.
Moi non plus et je n'en ai jamais eu besoin. Le seul cas, qui peut s'apparenter à un goto, est l'instruction "break" pour sortir d'une boucle avant d'avoir effectué toutes les itérations. Bonne journée à tous. |
|
| |
VAUBAN38 Membre
Age : 73 Localisation : GRENOBLE Nombre de messages : 502 Date d'inscription : 04/02/2012
| Sujet: Re: simulation semaphore 3 feux Mar 7 Jan 2014 - 14:33 | |
| Désolé de ma question semble-t-il incongrue mais comme je l'ai écris plus haut mes connaissances en programmation datent du basic et là le GOTO existait et rendait beaucoup de services ! Bon, il ne me reste plus qu'à apprendre à m'en passer et à faire preuve de réflexion Va falloir réveiller les neurones |
|
| |
SavignyExpress Membre
Age : 61 Localisation : yyy Nombre de messages : 2043 Date d'inscription : 10/10/2010
| Sujet: Re: simulation semaphore 3 feux Mer 8 Jan 2014 - 8:18 | |
| Hello Vauban38, Si tu as fait du Basic, le langage C ne devrait pas te poser trop de problèmes, du moins tant que tu ne te frottes pas aux pointeurs ! Voici l'équivalence entre le C "sans goto" et un programme semblable "avec goto" en pseudo-code Basic des années 1980. Langage C - Code:
-
if (a > b) { i = i + 1; } else { i = i + 2; }
Basic des années 1980 avec numéros de lignes - Code:
-
10 if a <= b goto 40 20 let i = i + 1 30 goto 50 40 let i = i + 2 50 rem suite du programme
Je pense que la structuration en blocs du C est plus lisible. Avec le goto, il faut raisonner en logique inverse dans la condition if. |
|
| |
VAUBAN38 Membre
Age : 73 Localisation : GRENOBLE Nombre de messages : 502 Date d'inscription : 04/02/2012
| Sujet: Re: simulation semaphore 3 feux Mer 8 Jan 2014 - 9:11 | |
| Merci Savigny pour cet exemple concret. C'est un peu déconcertant quand on a de vieilles habitudes de se mettre à raisonner "à l'envers", mais c'est bon pour entretenir les neurones Alors on va s'y mettre avec le sourire et la fleur au fusil !! |
|
| |
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 8 Jan 2014 - 19:17 | |
| retour sur mon sémaphore, est ce que ceci est valable - 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); }
void loop() { 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 5 secondes */ digitalWrite(ledRouge, HIGH); delay(5000); digitalWrite(ledRouge, LOW);
/* Allume le orange 5 secondes */ digitalWrite(ledOrange, HIGH); delay(5000); digitalWrite(ledOrange, LOW); /* Allume le vert */ digitalWrite(ledVerte, HIGH);
}
j'ai fais une compilation de ce que jlb a proposé. |
|
| |
jlb Membre
Age : 60 Localisation : Ici Nombre de messages : 1544 Date d'inscription : 31/12/2011
| Sujet: Re: simulation semaphore 3 feux Mer 8 Jan 2014 - 19:28 | |
| Ça m'a l'air ok sauf 1 - Il manque une accolade fermante, celle du if, à mettre juste avant la dernière accolade qui ferme le loop() 2 - il manque l'état initial de ton feu : il faut ajouter des digitalWrite à la fin de setup pour démarrer avec le feu vert (donc HIGH pour le vert, LOW pour le orange et le rouge). Il n'y a plus qu'à tester PS: dans le menu Edition de l'IDE Arduino, tu as un item « copier pour le forum » qui te mettra dans le presse-papier de quoi coller sur le forum avec la coloration syntaxique. |
|
| |
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 8 Jan 2014 - 19:41 | |
| comme cela - 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);
}
void loop() { }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 5 secondes */ digitalWrite(ledRouge, HIGH); delay(5000); digitalWrite(ledRouge, LOW);
/* Allume le orange 5 secondes */ digitalWrite(ledOrange, HIGH); delay(1000); digitalWrite(ledOrange, LOW); /* Allume le vert */ digitalWrite(ledVerte, HIGH); }
|
|
| |
jlb Membre
Age : 60 Localisation : Ici Nombre de messages : 1544 Date d'inscription : 31/12/2011
| Sujet: Re: simulation semaphore 3 feux Mer 8 Jan 2014 - 19:47 | |
| setup() c'est ok loop c'est plutôt comme ça - Citation :
void loop() { 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 5 secondes */ digitalWrite(ledRouge, HIGH); delay(5000); digitalWrite(ledRouge, LOW); /* Allume le orange 5 secondes */ digitalWrite(ledOrange, HIGH); delay(1000); digitalWrite(ledOrange, LOW); /* Allume le vert */ digitalWrite(ledVerte, HIGH); } // Ça c'est l'accolade qui ferme le if } // Ça c'est l'accolade qui ferme la fonction loop()
|
|
| |
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 8 Jan 2014 - 23:29 | |
| - jlb a écrit:
- Il n'y qu'un seul 5V sur l'Arduino Uno.
par contre il y a deux GND pour les feux, je prend ce lui du coté broches digitales mais pour le capteur, lequel? |
|
| |
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 8 Jan 2014 - 23:32 | |
| - jlb a écrit:
- setup() c'est ok
loop c'est plutôt comme ça
- Citation :
void loop() { 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 5 secondes */ digitalWrite(ledRouge, HIGH); delay(5000); digitalWrite(ledRouge, LOW); /* Allume le orange 5 secondes */ digitalWrite(ledOrange, HIGH); delay(1000); digitalWrite(ledOrange, LOW); /* Allume le vert */ digitalWrite(ledVerte, HIGH); } // Ça c'est l'accolade qui ferme le if } // Ça c'est l'accolade qui ferme la fonction loop()
je ferai les modifications demain et si possible les essais après ma "journée de sommeil" là je profite d'un temps de pose pour consulter le forum |
|
| |
Contenu sponsorisé
| Sujet: Re: simulation semaphore 3 feux | |
| |
|
| |
| simulation semaphore 3 feux | |
|