LOCODUINO
Parlons Arduino => Vos projets => Discussion démarrée par: Guillaume le janvier 25, 2015, 09:29:14 am
-
Bonjour,
un petit avis à la population ici :
je suis en train de recoder des programmes d'animations lumineuses qui emploient la fonction delay() afin de passer à la fonction millis(). En effet, la fonction delay() est bloquante et ne permet pas d'ajouter d'autres choses à coté puisque le programme patiente tranquillement pendant le delay(), d'où ce changement de code.
Pour le moment, des animations que vous voyez sur le site, feu tricolore, chenillard et enseigne ont été transcrits. D'autres viendront à savoir soudure à l'arc et phare.
D'où cette demande, avez-vous des idées d'animations lumineuses que l'on peut trouver sur un réseau ?
ps : le cycle jour/nuit est dans mes tuyaux mais est un peu plus spécial
-
Bonjour Guillaume,
il y a le feu de cheminée dans une maison campagnarde mais aussi l'incendie d'un immeuble.
une télévision dans un salon
Des néons avec un problème de starter dans une usine.
Des manèges d'un parc.
Ps: Pour le jour et nuit, j'ai déjà fait un programme avec le détecteur de luminosité LTD si tu veux.
en reprenant par exemple le code du feu et du chenillard pour un fonctionnement différent la nuit.
-
Je retiens toutes tes propositions et les mets dans ma to do list.
Je suis preneur de tes exemples, et même mieux on a tjs besoin d'aide.
Edit : même en ville maintenant c'est bon le feu ;)
-
Il y a aussi :
- un flash de photographe/radar
- une étincelle de pantographe sur caténaire (avec une micro led)
- des lumières dans les appartements d'un immeuble
- réverbère (avec une lumière faible durant plusieurs secondes pour ensuite faire une sorte de flash et prendre une luminosité ambiante)
- une scène de concert (plusieurs couleurs)
Bref, il y a de quoi faire pas mal de choses.
-
Bonsoir Francis8,
Merci t'apporter tes lumières ;D
-
Il y a aussi les chenillards des lampes de travaux, les girophares, les lanternes de phares et les communications code morse lumineux pour les marins...
Sans oublier les signalisations clignotantes des PN,...
-
Quelques animations sont rapport avec un système de détection :
flash de radar avec voiture, feux de PN avec le train, flash photographe avec un truc qui arrive vers lui. Ca peut faire l'objet de module indépendants.
Faire un girophare ou phare dans le vrai est difficile, une application approchante a été réalisée.
Réverbère et lumières dans les maisons/appartements sont dans la todo list.
Merci
Réponse de Hubert
Pour le phare de type marin, j'ai fais un projet en ho mais pour un gyrophare, vu la petitesse du système, j'ai pas encore trouvé une solution performante sauf masqué l'arrière de la lanterne, celà reviens à un chenillard bleu (rampe véhicule de gendarmerie).
Pour type unique il faut trouver une astuce qui permet de faire tourner la DEL dans un espace très restreint.
Sinon il existe en HO le type de gyrophare bleu ou orange tournant sur certains véhicule, pas besoin d'un Arduino.
http://youtu.be/VbrunyxboB8 (http://youtu.be/VbrunyxboB8)
ou
http://youtu.be/5WlfLPvy5SA (http://youtu.be/5WlfLPvy5SA)
-
Ne peut on pas tout simplement refaire la fonction delay() mais qui ne soit pas bloquante ...
-
Réécrire la fonction delay(). Cela veut dire qu'il faut toucher à la syntaxe Arduino et cela est bien au dessus de mes maigres compétences.
Coder avec des millis() est vraiment différent de delay mais pas bien plus difficile. Il est sûr que coder avec delay est plus proche de notre facon de voir mais millis() s'en approche tout autant, l'histoire de l'oeuf et du postier est marquante. Après cela développe aussi beaucoup la panoplie des différentes fonctions que l'on utilise avec millis() : des if switch for etc ainsi que la manipulation des variables.
-
Réécrire delay n'est pas si simple. D'accord au lieu d'attendre que le temps passe, on bloque l'appelant de delay. Ensuite que fait-on ? Il faudrait pouvoir donner la main à un autre programme. Puis quand le temps serait écoulé, préempter cet autre programme et redonner la main à celui qui était bloqué. Évidemment cet autre programme peut lui même appeler delay.
Réécrire delay c'est en fait ecrire un système d'exploitation multitâche préemptif. Pas aussi compliqué qu'un système d'exploitation pour machine de bureau mais quand même assez compliqué à ecrire.
-
Si je ne m'abuse, on peut jouer au trampoline donc
private joke.
-
Les idées basiques ne sont pas toujours les meilleures, mes connaissances en programmation sont assez limitées.
-
Pas de souci, c'est une question comme il en existe d'autres. (J'en ai posé des questions comme cela ne t'inquiète pas et j'avais même la réponse sous les yeux...)
-
L'idée est très bonne. Mais c'est diablement coton a mettre en oeuvre :)
-
Ne peut on pas tout simplement refaire la fonction delay() mais qui ne soit pas bloquante ...
Bonjour,
Pour cela la fonction millis() existe en remplacement de delay().
le delay() bloque l'execution sur le processeur pendant le temps donné en variable qui s'exprime en milliseconde.
Pour éviter que le registre d'éxecution soit bloqué, on utilise la fonction millis() qui permet aux instructions de continuer en séquence.
Il est plus difficile de gerer cette fonction mais quand on comprend le fonctionnement, c'est facile.