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é: Dim 14 Fév 2016, 23:27 
Comme je ne pouvais pas terminer cette journée sans cogiter sur ce code, le voici!
il fonctionne, pas eu le temps de faire la vidéo...(surtout de la mettre en ligne).
voilà ma solution:
j'ai inclus au début du code, deux lignes de code de délai, un de 8s destiné au aspects fixes du panneau et un de 8s/16, c'est-à-dire 500ms, destiné lui à assurer la fréquence du clignotement.
comme précisé par Sergio11, la sortie commandant l’œilleton est mise à l'état haut dès le passage au sémaphore puis disparait du code, elle est mise à l'état bas à la fin, je préfère la laisser comme ça, certes cela m'obligera à réécrire la ligne en cas d'autre usage, mais je n'en suis pas là!!!
cela donne un code un peu long TRES CERTAINEMENT simplifiable!, mais pour un début, l'effet escompté est atteint!
ce qui donne donc le défilement suivant: C, S, Scli, A, Acli, R30, Acli+R60, R60, VL, VLcli;

Code: Tout sélectionner
/*Allume un aspect d'un signal, successivement toutes les 8 secondes
* Pin 8,4,10,11, 12 13
*/

int pinLed1 = 8;
int pinLed2 = 4;
int pinLed3 = 10;
int pinLed4 = 12;
int pinLed5 = 11;
int pinLed6 = 7;
int delai = 8000;
int delai2 = 500;

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);
  // passage rouge cli
  delay(delai);
  digitalWrite(pinLed2,HIGH);
  delay(delai2);
  digitalWrite(pinLed2,LOW);
  delay(delai2);
  digitalWrite(pinLed2,HIGH);
  delay(delai2);
  digitalWrite(pinLed2,LOW);
  delay(delai2);
  digitalWrite(pinLed2,HIGH);
  delay(delai2);
  digitalWrite(pinLed2,LOW);
  delay(delai2);
  digitalWrite(pinLed2,HIGH);
  delay(delai2);
  digitalWrite(pinLed2,LOW);
  delay(delai2);
  digitalWrite(pinLed2,HIGH);
  delay(delai2);
  digitalWrite(pinLed2,LOW);
  delay(delai2);
  digitalWrite(pinLed2,HIGH);
  delay(delai2);
  digitalWrite(pinLed2,LOW);
  delay(delai2);
  digitalWrite(pinLed2,HIGH);
  delay(delai2);
  digitalWrite(pinLed2,LOW);
  delay(delai2);
  digitalWrite(pinLed2,HIGH);
  delay(delai2);
 
  // passage à l'avertissement
  digitalWrite(pinLed2,LOW);
  digitalWrite(pinLed3,HIGH);
  delay(delai);
 
  // présentation jaune cli
  digitalWrite(pinLed3,HIGH);
  delay(delai2);
  digitalWrite(pinLed3,LOW);
  delay(delai2);
  digitalWrite(pinLed3,HIGH);
  delay(delai2);
  digitalWrite(pinLed3,LOW);
  delay(delai2);
  digitalWrite(pinLed3,HIGH);
  delay(delai2);
  digitalWrite(pinLed3,LOW);
  delay(delai2);
  digitalWrite(pinLed3,HIGH);
  delay(delai2);
  digitalWrite(pinLed3,LOW);
  delay(delai2);
  digitalWrite(pinLed3,HIGH);
  delay(delai2);
  digitalWrite(pinLed3,LOW);
  delay(delai2);
  digitalWrite(pinLed3,HIGH);
  delay(delai2);
  digitalWrite(pinLed3,LOW);
  delay(delai2);
  digitalWrite(pinLed3,HIGH);
  delay(delai2);
  digitalWrite(pinLed3,LOW);
  delay(delai2);
  digitalWrite(pinLed3,HIGH);
  delay(delai2);
  digitalWrite(pinLed3,LOW);
  delay(delai2);
 
  // présentation du ralentissement 30
  digitalWrite(pinLed5,HIGH);
  delay(delai);
 
  // presentation ralentissement 60 combiné
  digitalWrite(pinLed5,HIGH);
  digitalWrite(pinLed3,HIGH);
  delay(delai2);
  digitalWrite(pinLed5,LOW);
  digitalWrite(pinLed3,LOW);
  delay(delai2);
  digitalWrite(pinLed5,HIGH);
  digitalWrite(pinLed3,HIGH);
  delay(delai2);
  digitalWrite(pinLed5,LOW);
  digitalWrite(pinLed3,LOW);
  delay(delai2);
  digitalWrite(pinLed5,HIGH);
  digitalWrite(pinLed3,HIGH);
  delay(delai2);
  digitalWrite(pinLed5,LOW);
  digitalWrite(pinLed3,LOW);
  delay(delai2);
  digitalWrite(pinLed5,HIGH);
  digitalWrite(pinLed3,HIGH);
  delay(delai2);
  digitalWrite(pinLed5,LOW);
  digitalWrite(pinLed3,LOW);
  delay(delai2);
  digitalWrite(pinLed5,HIGH);
  digitalWrite(pinLed3,HIGH);
  delay(delai2);
  digitalWrite(pinLed5,LOW);
  digitalWrite(pinLed3,LOW);
  delay(delai2);
  digitalWrite(pinLed5,HIGH);
  digitalWrite(pinLed3,HIGH);
  delay(delai2);
  digitalWrite(pinLed5,LOW);
  digitalWrite(pinLed3,LOW);
  delay(delai2);
  digitalWrite(pinLed5,HIGH);
  digitalWrite(pinLed3,HIGH);
  delay(delai2);
  digitalWrite(pinLed5,LOW);
  digitalWrite(pinLed3,LOW);
  delay(delai2);
  digitalWrite(pinLed5,HIGH);
  digitalWrite(pinLed3,HIGH);
  delay(delai2);
  digitalWrite(pinLed5,LOW);
  digitalWrite(pinLed3,LOW);
  delay(delai2);
  //presentation ralentissement 60
  digitalWrite(pinLed5,HIGH);
  delay(delai2);
  digitalWrite(pinLed5,LOW);
  delay(delai2);
   digitalWrite(pinLed5,HIGH);
  delay(delai2);
  digitalWrite(pinLed5,LOW);
  delay(delai2);
   digitalWrite(pinLed5,HIGH);
  delay(delai2);
  digitalWrite(pinLed5,LOW);
  delay(delai2);
   digitalWrite(pinLed5,HIGH);
  delay(delai2);
  digitalWrite(pinLed5,LOW);
  delay(delai2);
   digitalWrite(pinLed5,HIGH);
  delay(delai2);
  digitalWrite(pinLed5,LOW);
  delay(delai2);
  digitalWrite(pinLed5,HIGH);
  delay(delai2);
  digitalWrite(pinLed5,LOW);
  delay(delai2);
  digitalWrite(pinLed5,HIGH);
  delay(delai2);
  digitalWrite(pinLed5,LOW);
  delay(delai2);
  digitalWrite(pinLed5,HIGH);
  delay(delai2);
  digitalWrite(pinLed5,LOW);
  delay(delai2);
  digitalWrite(pinLed5,HIGH);
  delay(delai2);
  digitalWrite(pinLed5,LOW);
  delay(delai2);
   
  // passage au voie libre
  digitalWrite(pinLed4,HIGH);
  digitalWrite(pinLed5,LOW);
  delay(delai);
  //présentation du vert cli
  digitalWrite(pinLed4,LOW);
  delay(delai2);
  digitalWrite(pinLed4,HIGH);
  delay(delai2);
  digitalWrite(pinLed4,LOW);
  delay(delai2);
  digitalWrite(pinLed4,HIGH);
  delay(delai2);
  digitalWrite(pinLed4,LOW);
  delay(delai2);
  digitalWrite(pinLed4,HIGH);
  delay(delai2);
  digitalWrite(pinLed4,LOW);
  delay(delai2);
  digitalWrite(pinLed4,HIGH);
  delay(delai2);
  digitalWrite(pinLed4,LOW);
  delay(delai2);
  digitalWrite(pinLed4,HIGH);
  delay(delai2);
  digitalWrite(pinLed4,LOW);
  delay(delai2);
  digitalWrite(pinLed4,HIGH);
  delay(delai2);
  digitalWrite(pinLed4,LOW);
  delay(delai2);
  digitalWrite(pinLed4,HIGH);
  delay(delai2);
  digitalWrite(pinLed4,LOW);
  delay(delai2);
  digitalWrite(pinLed4,HIGH);
  delay(delai2);
    //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é: Lun 15 Fév 2016, 01:11 
Je pense que ton code doit fonctionner et c'est bien le but recherché ; son écriture peut être condensée, donc meilleure lecture pour un autre programmeur, en utilisant une boucle for pour les lignes qui se répètent jusqu'à 8 fois. Compare le nombre d'octets utilisés sans et avec la boucle for.
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1631
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Galère de débutant!

Publié: Lun 15 Fév 2016, 18:24 
C'est pas moi qui vais te donner de leçon mais c'est une réelle satisfaction d'arriver à un premier code qui fonctionne. De mon côté, cet exercice m'intéresse tout particulièrement car il me permet d'avancer dans ma formation. J'ai beaucoup lu d'articles sur Arduino, j'ai suivi la formation de Christian, mais entre savoir ce que peux faire cette petite bête et l'écrire correctement.... et surtout que je découvre au fur et à mesure de nouvelles façons de produire le même résultat.
Je poursuis donc mon travail ..je vous montrerai ça dans quelques jours
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é: Lun 15 Fév 2016, 19:11 
Absolument, ce qui compte, c'est que cela fonctionne !

Ensuite, il est toujours possible de réécrire son programme pour qu'il tienne moins de place en mémoire, et surtout pour faire de la belle programmation.

Un peu comme une langue étrangère ; au début, ce qui compte, c'est de se faire comprendre ; petit à petit, on utilise de meilleures tournures de phrases car entendues ici ou là. Un jour, on parle parfaitement bien, sans même s'en rendre compte.
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1631
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Galère de débutant!

Publié: Lun 15 Fév 2016, 23:30 
sergio11 a écrit:C'est pas moi qui vais te donner de leçon mais c'est une réelle satisfaction d'arriver à un premier code qui fonctionne. De mon côté, cet exercice m'intéresse tout particulièrement car il me permet d'avancer dans ma formation. J'ai beaucoup lu d'articles sur Arduino, j'ai suivi la formation de Christian, mais entre savoir ce que peux faire cette petite bête et l'écrire correctement.... et surtout que je découvre au fur et à mesure de nouvelles façons de produire le même résultat.
Je poursuis donc mon travail ..je vous montrerai ça dans quelques jours

C'est vrai, je suis vraiment satisfait d'avoir réussi à écrire un bout de code qui fonctionne, alors certes je suis parti au départ d'un fragment de code déjà écrit, mais cela m'a permis de me familiariser avec une syntaxe particulière, l'interface IDE, la compilation vers les différents type de cartes, et quelques fonctions simples.
Ce n'est que le début , du coup je planche sur cette boucle FOR, dont j'avoue pour l'instant je n'ai pas bien saisi la syntaxe, ni l'application associée à ma simple led ( dans les cours, on parle d'incrementer des cases de tableau, là je sèche...). Mais je vais trouver.
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é: Mar 16 Fév 2016, 10:53 
Félicitation Gregory pour cet entêtement à vouloir réussir de toi-même.

Je suis persuadé que la boucle for sera bientôt maitrisée. Je reste néanmoins à ta disposition si tu bloques.

Le cours va s'orienter vers des petites choses pratiques comme justement les boucles for, while, etc... Bref, mettre en pratique les règles de programmation.

A plus.
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1631
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Galère de débutant!

Publié: Mer 17 Fév 2016, 23:44 
Alors je vais suivre ces cours! De ce pas, car j'ai pas mal de projets à développer avec l'arduino.
J'en ferai état quand j'y arriverai, je préfère commencer à publier quand les projets sont un peu avancés pour ne pas qu'ils soient trop longs à suivre.
Les suivants sont, l'ajout d'animations ( là je ne crée rien, tout est déjà fait), l'autre en revanche sera plus complexe: cycle jour/ nuit ( mon réseau est équipé de rubans Led blanches et bleues), avec éclairage des éléments de décors du réseau, je dois pour le moment trouver avec quel transistor je vais pouvoir assurer la variation de 300 Leds.....et environ une cinquantaine de micro-lampes, enfin presque 10A...
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é: Jeu 18 Fév 2016, 09:51 
2N3055 transistor de puissance Darlington NPN 60V et 15 A ! :D

Et il y en a sûrement d'autres... :siffle:
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1631
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Galère de débutant!

Publié: Jeu 18 Fév 2016, 13:36 
Merci! Ça tombe bien j'en ai plein en stock, je m'en servais pour faire mes régulateurs traction.
J'esperais d'ailleurs cette référence !
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é: Ven 19 Fév 2016, 09:32 
Il vaut mieux prendre un MOSFET qu'un transistor bipolaire, ça ne chauffera pas

J'ai dessiné et réalisé une carte une carte avec 2 MOSFET pour commander 2 rubans de 300 LEDs, un ton chauds et un ton froid. Si ça t'intéresse. Le logiciel utilise une PWM 16 bits car en 8 bits le premier cran allumait déjà les LED trop fort et la commande est faite par radio à 433MHz pour éviter de passer des fils.
Avatar de l’utilisateur
jlb
Fécond
 
Messages: 667
Inscrit le: Jeu 04 Oct 2012, 15:38
Echelle pratiquée: N
Prénom: Jean-Luc

Re: Galère de débutant!

Publié: Ven 19 Fév 2016, 09:50 
Pour que le MOSFET ne chauffe pas sous 10 ampères, il faut vraiment le choisir avec un Ron le plus faible possible. Si tu as une référence à conseiller à Greg, donne la lui. D'apres ce que j'ai compris, il n'a pas que des DEL mais aussi des lampes à commander.
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1631
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Galère de débutant!

Publié: Ven 19 Fév 2016, 10:33 
Il s'agit d'un IRF540N, Ron de 44mΩ

Sous 10A, ça dissipe 4,4W

Mais on trouve des Ron plus faibles comme http://www.tme.eu/fr/details/auirfb8407 ... rectifier/

1,4mΩ donc 0,14W sous 10Ω

Sur ce type d'engin, le bracelet antistatique est indispensable. Le toucher c'est le fusiller.
Avatar de l’utilisateur
jlb
Fécond
 
Messages: 667
Inscrit le: Jeu 04 Oct 2012, 15:38
Echelle pratiquée: N
Prénom: Jean-Luc

Re: Galère de débutant!

Publié: Dim 21 Fév 2016, 20:17 
Là messieurs ! Cela devient très technique!, mes connaissances en électronique sont TRÈS limitées ! Mais je veux bien apprendre.
Bon déjà, je vais revenir à mon signal, avec les lampes ça ne fonctionne pas, j'explique:
J'ai transféré le code sur un Arduino NANO, effectué le test du programme sur la Breadboard, qui m'a servi à valider le code, là cela fonctionne. Je connecte le tout à mon petit circuit à base de 2n2222 connectés comme suit; les émetteurs à 0V, les bases connectées à chaque sorties Arduino via une résistance de 1kOhms, et les collecteurs eux, sont connectés au +7,5v en passant par chaque micro-lampe.
Résultat, seules deux lampes s'allument au fixe, le programme ne défile pas et la led L de l'arduino clignote.
J'enrage......
Dernière édition par Greg84 le Dim 21 Fév 2016, 20:36, édité 1 fois au total.
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é: Dim 21 Fév 2016, 20:35 
Pour parler d'autre chose, le cycle jour/nuit, pour voir où il est destiné, voir mon réseau "Cadillan".
Pour faire bref:
L'eclairage général, jour, 210 Leds blanc ton chaud, nuit/ 75 Leds bleues.
Quais, 10 lampadaires à ampoules,
Gare, Leds (6, trois pièces éclairées)
Remise, ruban de Leds, (9 Leds)
Halle , ruban de Leds, (6 Leds),
Réservoir, 3 Leds,
ville, 6 lampadaires à ampoules,
Vitrine café, 2 Leds,
Hôtel, 3 Leds,
Tout ce petit monde est branché sur la même alim....!
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é: Jeu 06 Oct 2016, 22:04 
Bonsoir, je remonte un peu ce fil, pas pour le problème du code initial mais pour une autre "surprise"!
je suis en train de câbler mon module sur la fête foraine, qui va faire massivement appel à l'Arduino ( la faute à Locoduino...) pour les animer.
j'utilise des Arduino NANO montés sur des cartes support à borniers et des Arduino Uno en boitier. pour le moment seulement 4 Nano sont posés et un seul est opérationnel ( les autres attendent leur code).
voulant passer aux tests après vérification que mes alims étaient bien connectées et délivraient la bonne tension ( 10,5V), j'ai connecté mon nano à la broche VIN, et le GND à la masse du circuit d'alim (commune à tous les arduinos).
seulement voilà.....la led power est bien allumée, le code est bon, mais rien ne démarre! alors qu'en connectant avec une fiche USB, ça fonctionne bien?????
je suis certains que la solution est simplissime mais je ne la trouve pas.
SI quelqu'un pouvais me mettre sur une piste!!!!!SVP

PS: j'oubliais, les sorties commandent via une résistance de 1kOhm, des transistors, connectés au circuit "puissance" (pour n'alimenter que les moteurs et les leds des façades).
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

PrécédentSuivant

Retour vers Arduino

Qui est en ligne ?

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