Forums LR PRESSE

Où il est question de trains, petits et grands

  • Advertisement

Galère de débutant!

Toutes les discussions sur l'Arduino !

Modérateur: MOD

Re: Galère de débutant!

Publié: Sam 13 Fév 2016, 14:16 
Greg84 a écrit:voilà la vidéo du programme, pardonnez le câblage brouillon!
...............
J'ai réduit le délai à 3 seconde, pour raccourcir la vidéo, ça fonctionne..


Je vois que cela avance bien ! :applause:

Je reste en retrait mais si tu as une question, n'hésite pas.

Et vérifie bien la consommation de tes ampoules, une sortie Arduino ne délivre que 40 mA mais il est conseillé de ne pas dépasser 20 mA. (souvent les micro bulbes consomment dans les 40 ! :mort: )
Dernière édition par Arduino le Sam 13 Fév 2016, 14:18, édité 1 fois au total.
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1630
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Galère de débutant!

Publié: Sam 13 Fév 2016, 14:17 
merci! je savais pas comment faire, je répare donc pour le confort de tous:
Code: Tout sélectionner
/*Allume un aspect d'un signal, successivement toutes les 8 secondes
* Pin 8,9,10,11, 12 13
*/

int pinLed1 = 8;
int pinLed2 = 9;
int pinLed3 = 10;
int pinLed4 = 11;
int pinLed5 = 12;
int pinLed6 = 13;
int delai = 8000;

void setup() {
  // feu rouge1
  pinMode(pinLed1,OUTPUT);
  // feu rouge2
  pinMode(pinLed2,OUTPUT);
  // feu jaune A
  pinMode(pinLed3,OUTPUT);
  // feu vert
  pinMode(pinLed4,OUTPUT);
  // feux Jaunes Ralentissement
  pinMode(pinLed5,OUTPUT);
  // Oeilleton
  pinMode(pinLed6,OUTPUT);

  // Eteint tous les feux au début
  digitalWrite(pinLed1,LOW);
  digitalWrite(pinLed2,LOW);
  digitalWrite(pinLed3,LOW);
  digitalWrite(pinLed4,LOW);
  digitalWrite(pinLed5,LOW);
  digitalWrite(pinLed6,LOW);
}

void loop() {
  /* code principal:
   *  debut du programme: présentation du signal au carré
   */
  digitalWrite(pinLed1,HIGH);
  digitalWrite(pinLed2,HIGH);
  delay(delai);
  // ouverture au sémaphore
  digitalWrite(pinLed1,LOW);
  digitalWrite(pinLed2,HIGH);
  digitalWrite(pinLed6,HIGH);
  delay(delai);
  // passage à l'avertissement
  digitalWrite(pinLed2,LOW);
  digitalWrite(pinLed3,HIGH);
  digitalWrite(pinLed6,HIGH);
  delay(delai);
  // présentation du ralentissement 30
  digitalWrite(pinLed3,LOW);
  digitalWrite(pinLed5,HIGH);
  digitalWrite(pinLed6,HIGH);
  delay(delai);
  // passage au voie libre
  digitalWrite(pinLed4,HIGH);
  digitalWrite(pinLed5,LOW);
  digitalWrite(pinLed6,HIGH);
  delay(delai);
    //extinction des feux
  digitalWrite(pinLed4,LOW);
  digitalWrite(pinLed6,LOW);
  }

faire bref? sais pas faire
Avatar de l’utilisateur
Greg84
Fécond
 
Messages: 594
Inscrit le: Jeu 09 Sep 2010, 10:03
Localisation: Vedène
Âge: 38
Echelle pratiquée: HO,HOe,N
Prénom: Grégory
Club: Maison

Re: Galère de débutant!

Publié: Sam 13 Fév 2016, 14:19 
Bravo, tu apprends vite ! :D
J'ai rajouté quelque chose à mon dernier post, prends en connaissance c'est important.
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1630
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Galère de débutant!

Publié: Sam 13 Fév 2016, 15:29 
sergio11 a écrit:...Par contre, le problème vient de la gestion du temps. La fonction Delay() est utilisable si tu n'as rien d'autre à faire pendant ce temps, puisqu'elle arrête le microcontroleur
Dans ton cas il faut aussi gérer un autre tempo...celui de la fréquence du clignotement
Il faut donc gérer le temps avec la fonction millis() qui est un compteur de temps qui tourne en permanence.
Mais dans le cas de Greg84, il n'y a justement rien d'autre à faire que le clignotement donc on peut utiliser la fonction delay () pour le clignotement.
Alain17
Loquace
 
Messages: 1253
Inscrit le: Ven 21 Juil 2006, 15:36
Localisation: Entre Cognac, Ré et Oléron

Re: Galère de débutant!

Publié: Sam 13 Fév 2016, 15:56 
Juste dans mon cas, l'oeilleton doit être allumé en même temps que le clignotement de certains feux, c'est grave? Docteurs
Les micro-lampes sont alimentées par le transfo, via les transistors. Mon transfo débite 1A, suffisant à priori, pour tout alimenter.
faire bref? sais pas faire
Avatar de l’utilisateur
Greg84
Fécond
 
Messages: 594
Inscrit le: Jeu 09 Sep 2010, 10:03
Localisation: Vedène
Âge: 38
Echelle pratiquée: HO,HOe,N
Prénom: Grégory
Club: Maison

Re: Galère de débutant!

Publié: Sam 13 Fév 2016, 16:24 
Greg84 a écrit:Juste dans mon cas, l'oeilleton doit être allumé en même temps que le clignotement de certains feux, c'est grave? Docteurs
Les micro-lampes sont alimentées par le transfo, via les transistors. Mon transfo débite 1A, suffisant à priori, pour tout alimenter.


Non pas grave, tu allumes l'œilleton et tu n'y penses plus ; pendant ce temps, tu fais clignoter tes lampes. Et Alain17 a raison, tu peux utiliser delay puisque tu ne fais rien d'autre... sauf si tu dois faire clignoter deux lampes à des rythmes différents (mais cela, je ne pense pas), auquel cas tu utilises millis().

Et pour les lampes, vu que tu utilises des transistors, alors aucun problème (as-tu réfléchi à l'ULN2803 : un simple CI qui remplace 8 transistors d'un coup ?)
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1630
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Galère de débutant!

Publié: Sam 13 Fév 2016, 16:50 
Oui, pensé à l'ULN2803, il est en commande, il devrait arriver....bientôt, c'est loin l'Asie.
Bon demain je tente un nouveau code avec la fonction delay, le devoir m'appelle....
faire bref? sais pas faire
Avatar de l’utilisateur
Greg84
Fécond
 
Messages: 594
Inscrit le: Jeu 09 Sep 2010, 10:03
Localisation: Vedène
Âge: 38
Echelle pratiquée: HO,HOe,N
Prénom: Grégory
Club: Maison

Re: Galère de débutant!

Publié: Sam 13 Fév 2016, 17:17 
Y a un truc que j'ai pas du comprendre... il utilise déjà la fonction delay pour changer d'indication toutes les 8 secondes, il ne peut donc pas l'utiliser pour le clignotement des feux... toutes les 500 ms environ..; ou alors il faut que je révise mes bases!!!!! :?:
Avatar de l’utilisateur
sergio11
Bavard
 
Messages: 58
Inscrit le: Ven 08 Jan 2016, 22:20
Localisation: 11 Ouveillan
Âge: 64
Echelle pratiquée: N
Prénom: Serge

Re: Galère de débutant!

Publié: Sam 13 Fév 2016, 17:33 
sergio11 a écrit:Y a un truc que j'ai pas du comprendre... il utilise déjà la fonction delay pour changer d'indication toutes les 8 secondes, il ne peut donc pas l'utiliser pour le clignotement des feux... toutes les 500 ms environ..; ou alors il faut que je révise mes bases!!!!! :?:


Non, il utilise le delay entre deux phases de positionnement de feux.
Je m'explique :
Allumer voie libre (vert)
delay 8 secondes (vert est allumé pendant 8 secondes)
éteindre vert
Allumer sémaphore
delay 8 secondes (sémaphore allumé pendant 8 secondes)
éteindre sémaphore
faire clignoter rouge en utilisant delay et période de 1 seconde 8 fois (on aura bien 8 secondes de clignotement)
etc...

Son programme étant un séquenceur (comme celui de la gare à deux voies), il peut utiliser delay et le remplacer par un équivalent si nécessaire.
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1630
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Galère de débutant!

Publié: Sam 13 Fév 2016, 17:52 
Excuse moi de contester le professeur.. Mais je ne comprends pas la fonction delay comme cela...
Il présente une indication puis delay(8000)... pour moi l'indication reste présentée mais elle est figée par arrêt du processeur pendant 8s donc impossible pendant ce temps de faire clignoter un feu...puis au bout de 8s on passe à l'indication suivante et de nouveau delay arrête tout..

Je viens de modifier mon croquis comme il a fait et lors de la présentation du Rouge Clignotant le feu reste éteint
Avatar de l’utilisateur
sergio11
Bavard
 
Messages: 58
Inscrit le: Ven 08 Jan 2016, 22:20
Localisation: 11 Ouveillan
Âge: 64
Echelle pratiquée: N
Prénom: Serge

Re: Galère de débutant!

Publié: Sam 13 Fév 2016, 18:56 
sergio11 a écrit:...Il présente une indication puis delay(8000)... pour moi l'indication reste présentée mais elle est figée par arrêt du processeur pendant 8s donc impossible pendant ce temps de faire clignoter un feu...
ça tombe bien puisque pendant que l'indication (indication fixe comme le carré, l'avertissement, le sémaphore...) est présentée, il n'y a pas d'autres feux à faire clignoter !!!
sergio11 a écrit:...puis au bout de 8s on passe à l'indication suivante et de nouveau delay arrête tout..
Je viens de modifier mon croquis comme il a fait et lors de la présentation du Rouge Clignotant le feu reste éteint
Relit bien ce qu'Arduino vient d'écrire :
Arduino a écrit:...faire clignoter rouge en utilisant delay et période de 1 seconde 8 fois (on aura bien 8 secondes de clignotement)
Alain17
Loquace
 
Messages: 1253
Inscrit le: Ven 21 Juil 2006, 15:36
Localisation: Entre Cognac, Ré et Oléron

Re: Galère de débutant!

Publié: Sam 13 Fév 2016, 20:06 
Voyons le problème autrement... le programme est une suite (une séquence) de delay de 8s, entre ces délais on change les indications et on repart pour 8s ou le micro ne fait plus rien que de compter le temps... comment alors que le micro exécute un delay de 8s il peut aussi exécuter un autre délay pour faire clignoter l'indication clignotante.
Pour moi il y a deux délais qui se superposent...
J'ai modifié le code que j'avais fait avec des boutons pour qu'il fonctionne en automatique avec délay... il marche très bien mais pour l'indication clignotante, le feu est éteint ou allumé au fixe suivant que l'on met Low ou High en premier dans la séquence de clignotement.
Si je suis dans l'erreur il faut qu'on m'explique quel est le code car je n'y arrive pas...Merci pour cet échange instructif
Avatar de l’utilisateur
sergio11
Bavard
 
Messages: 58
Inscrit le: Ven 08 Jan 2016, 22:20
Localisation: 11 Ouveillan
Âge: 64
Echelle pratiquée: N
Prénom: Serge

Re: Galère de débutant!

Publié: Sam 13 Fév 2016, 20:21 
Relit le message d'Arduino du 13 Fév 2016 17:33 : pour le rouge clignotant, le delay de 8s est remplacé par 8 x (delay de 0.5s pour Eteint + delay de 0.5s pour Allumé) !
Alain17
Loquace
 
Messages: 1253
Inscrit le: Ven 21 Juil 2006, 15:36
Localisation: Entre Cognac, Ré et Oléron

Re: Galère de débutant!

Publié: Sam 13 Fév 2016, 20:46 
Ok je crois avoir compris la méthode... mais cela modifie complètement le principe chaque fois qu'on rencontre une indication clignotante..
Le clignotement étant de 70 battements minutes cela fait environ 16 fois delay(500)... comment écrit-on cela? il faut un compteur?
Dans son programme il y a un grand nombre d'indications clignotantes..vert cli, jaune cli, rouge cli, Ralentissement Cli, Rappel de ralent Cli, Avertissement Cli+ rappel de ralentissementCli, feu blanc cli... ou à peu près... j'en ai oublié
Avatar de l’utilisateur
sergio11
Bavard
 
Messages: 58
Inscrit le: Ven 08 Jan 2016, 22:20
Localisation: 11 Ouveillan
Âge: 64
Echelle pratiquée: N
Prénom: Serge

Re: Galère de débutant!

Publié: Sam 13 Fév 2016, 20:53 
Pardon... j'etais en train d'écrire quand ta réponse est arrivée... j'avais compris à table...comme quoi manger porte conseil...!!!
Excuse moi pour mon entêtement, je suis novice et ne peut pas laisser quelque chose incompris sinon je n'avance pas... je me doutais qu'en contestant Christian, j'étais certainement dans l'horreur..!! mais pourrais tu me donner une indication de la gestion de delay ... x fois delay avant de poursuivre la suite du programme... je ne le vois qu'avec incrémentation d'un compteur..!!
Merci
Avatar de l’utilisateur
sergio11
Bavard
 
Messages: 58
Inscrit le: Ven 08 Jan 2016, 22:20
Localisation: 11 Ouveillan
Âge: 64
Echelle pratiquée: N
Prénom: Serge

PrécédentSuivant

Retour vers Arduino

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 6 invité(s)