LOCODUINO

Parlons Arduino => Bibliothèques => Discussion démarrée par: Guillaume le avril 17, 2015, 03:59:58 pm

Titre: Bibliothèque animations lumineuses
Posté par: Guillaume le avril 17, 2015, 03:59:58 pm
Bonjour,
quelques animations ont fait l'objet d'articles sur le site, d'autres ont été créées. Bref, celles-ci ont été compilées dans une bibliothèque très simple.
https://git.framasoft.org/g.macfly/AnimLum/tree/master (https://git.framasoft.org/g.macfly/AnimLum/tree/master)

Vous trouverez sur cette page les explications. Je la mets dans un premier temps ici avant de faire un article. Elle a besoin de tests supplémentaires pour parfaire certaines animations comme la cheminée avec une DEL rgb que je n'ai pas encore ;).
Rien de difficile, il suffit de créer l'objet que l'on veut avec les numéros de broches. Dans le setup la méthode setup avec le sens du courant ;) et après dans le loop la méthode update. Et la méthode off pour arrêter.
Voilà, amusez-vous bien.
Titre: Re : Bibliothèque animations lumineuses
Posté par: DDEFF le avril 17, 2015, 05:38:25 pm
Sympa, comme bibliothèque.

J'ai eu la curiosité d'acheter 100 LED pour 1,78 €, port compris !!!
Elles sont arrivées, mais, bien qu'éclairant de 3 couleurs (environ 30 vertes, 30 jaunes et 30 rouges), elles sont transparentes quand elles sont éteintes.
Comme il va falloir que je les teste une par une pour les trier (quel piège !), autant m'amuser un peu.
Merci Guillaume
J'ai bien aimé aussi le nom du site à la "Retour vers le futur"  ;D
Titre: Re : Bibliothèque animations lumineuses
Posté par: petitrain le avril 23, 2015, 03:06:53 pm
Salut Guillaume,
Bravo pour l'idée de la bibliothèque, facile à inclure dans des animations de décor plus complexes; mais ça serait bien de mettre un exemple ou deux dans ton dossier de téléchargement.
Titre: Re : Bibliothèque animations lumineuses
Posté par: Guillaume le avril 23, 2015, 03:28:28 pm
C'est prévu le dossier est déjà créé plus qu'à écrire et pousser sur le dépôt.
Je ne les ai pas fait car des améliorations sont à faire et les exemples changeront.
C'est encore en travaux, bcp de choses sont encore à faire pour parfaire la biblio, le readme manque de saut de lignes d'ailleurs.

Voici l'exemple général :
#include <animlum.h>
//entre parenthèses après le nom de l'objet ici animation, les broches utilisées pour les DEL

Chenillard animation(2,3,4,5,6,7); //broches non PWM
//Enseigne animation(2,3,4,5,6,7); //broches non PWM
//Phare animation(3); //broche PWM
//Feu animation(2,3,4,5,6,7); //broches non PWM RVO (feu 1) RVO (feu 2) pour l'ordre des broches
//SoudureArc animation(2);//broche non PWM
//Cheminee animation(9,10,11);//DEL RGB ordre : VRB, PWM au minimum sur le rouge.
//Lampadaire animation(3); //broche PWM

void setup() {
  animation.setup();
}

void loop() {
  animation.update();
}

Après il  faut jouer avec le commentage/décommentage et revoir les numéros de broches si nécessaire.
Le plus après est de combiner les animations ce qui sera facile. Si questions, j'essayerai d'y répondre.
Titre: Re : Bibliothèque animations lumineuses
Posté par: petitrain le avril 23, 2015, 03:50:39 pm
Encore bravo, on reconnait les pros...
Est-ce qu'on peut les mettre dans les Scheduletables de jean luc?
Titre: Re : Bibliothèque animations lumineuses
Posté par: Guillaume le avril 23, 2015, 04:05:36 pm
Un pro moi non.

Tel quelle non pour les tables de JLB, je l'avais écrite bien avant l'écriture de celle de JLB. J'avais même commencé une autre version pour gérer en fonction du temps, mais celle de JLB est plus simple. J'ai donc abandonné et me suis tourné vers la lib de Jean-Luc comme pour la simulation jour/nuit. Cela fait un bon exercice de code et je découvre encore plein de trucs

Après, je n'ai pas en tête tous les trucs de sa biblio. Je m'y mettrais quand j'aurais déterminé le sujet et le nombre des animations que j'aurais sur le réseau, avec la gestion manuelle et automatique et voir si on peut facilement l'incorporer ou pas.
Titre: Re : Bibliothèque animations lumineuses
Posté par: Guillaume le mai 26, 2015, 11:51:06 am
Bonjour,
mise à jour de la bibliothèque avec mise en ligne de deux exemples.
La bibliothèque a aussi migré sous drapeau Locoduino.org à l'adresse :
https://git.framasoft.org/locoduino.org/AnimLum

Le développement vers une v2 est en cours. Il faut que je règle quelques problèmes.
Titre: Re : Bibliothèque animations lumineuses
Posté par: Guillaume le mai 29, 2015, 11:33:28 pm
Problème résolu. Et le nettoyage a été fait.
La bibliothèque a changé, plus d'argument dans le constructeur, mise en place de tableaux pour les animations de plusieurs broches, etc...
Voir le readme pour les explications ainsi que les exemples.
https://git.framasoft.org/locoduino.org/AnimLum/

A vous de jouer

Titre: Re : Bibliothèque animations lumineuses
Posté par: petitrain le juin 01, 2015, 01:45:55 pm
Bonjour Guillaume,
J'ai chargé ta version 2 de la bibliothèque.
Quand j'essaie de compiler tes exemples, l'IDE me dit : "erreur de compilation"
et je ne comprend pas pourquoi...
Titre: Re : Bibliothèque animations lumineuses
Posté par: Guillaume le juin 01, 2015, 03:26:26 pm
Ben c'est une bonne question. De mon coté cela compile et ont été testés sur un arduino pro mini.
D'une part, tout programme compile ou pas ?
Et ensuite il nous faut plus d'informations sur l'IDE version et le système.

Je suis sous Linux avec la 1.6.4 d'Arduino.cc.
Mes exemples compilent sur plusieurs ordis et distributions ;)
Ouvre peut être un nouveau post pour décrire ton problème si cela n'est pas dû à ma biblio. J'en doute elle est parfaite ;)
Titre: Re : Bibliothèque animations lumineuses
Posté par: petitrain le juin 01, 2015, 07:02:43 pm
Moi je suis sur Mac(OS X version 10.6.8 )  8)  mais ma version de l'IDE est un peu ancienne (version 1.0.1). :-\
Aucun des exemples que tu donnes compile : toujours "erreur de compilation".
Dessous il y a tout un tas d'explication mais je suis incapable de comprendre:

In file included from chenillard.cpp:1:
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:17: error: ISO C++ forbids initialization of member 'eOFF'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:17: error: making 'eOFF' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:17: error: ISO C++ forbids in-class initialization of non-const static member 'eOFF'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:18: error: ISO C++ forbids initialization of member 'eON'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:18: error: making 'eON' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:18: error: ISO C++ forbids in-class initialization of non-const static member 'eON'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:33: error: ISO C++ forbids initialization of member 'temps'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:33: error: making 'temps' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:33: error: ISO C++ forbids in-class initialization of non-const static member 'temps'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:34: error: ISO C++ forbids initialization of member 'compteur'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:34: error: making 'compteur' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:34: error: ISO C++ forbids in-class initialization of non-const static member 'compteur'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:49: error: ISO C++ forbids initialization of member 'temps'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:49: error: making 'temps' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:49: error: ISO C++ forbids in-class initialization of non-const static member 'temps'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:51: error: ISO C++ forbids initialization of member 'compteur'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:51: error: making 'compteur' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:51: error: ISO C++ forbids in-class initialization of non-const static member 'compteur'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:52: error: ISO C++ forbids initialization of member 'b'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:52: error: making 'b' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:52: error: ISO C++ forbids in-class initialization of non-const static member 'b'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:53: error: ISO C++ forbids initialization of member 'c'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:53: error: making 'c' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:53: error: ISO C++ forbids in-class initialization of non-const static member 'c'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:71: error: ISO C++ forbids initialization of member 'temps'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:71: error: making 'temps' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:71: error: ISO C++ forbids in-class initialization of non-const static member 'temps'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:72: error: ISO C++ forbids initialization of member 'compteur'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:72: error: making 'compteur' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:72: error: ISO C++ forbids in-class initialization of non-const static member 'compteur'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:73: error: ISO C++ forbids initialization of member 'e'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:73: error: making 'e' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:73: error: ISO C++ forbids in-class initialization of non-const static member 'e'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:86: error: ISO C++ forbids initialization of member 'compteur'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:86: error: making 'compteur' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:86: error: ISO C++ forbids in-class initialization of non-const static member 'compteur'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:87: error: ISO C++ forbids initialization of member 'temps'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:87: error: making 'temps' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:87: error: ISO C++ forbids in-class initialization of non-const static member 'temps'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:89: error: ISO C++ forbids initialization of member 'montageinverse'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:89: error: making 'montageinverse' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:89: error: ISO C++ forbids in-class initialization of non-const static member 'montageinverse'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:102: error: a brace-enclosed initializer is not allowed here before '{' token
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:102: error: ISO C++ forbids initialization of member 'lum'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:102: error: making 'lum' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:102: error: invalid in-class initialization of static data member of non-integral type 'int [32]'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:103: error: ISO C++ forbids initialization of member 'compteur'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:103: error: making 'compteur' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:103: error: ISO C++ forbids in-class initialization of non-const static member 'compteur'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:104: error: ISO C++ forbids initialization of member 'temps'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:104: error: making 'temps' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:104: error: ISO C++ forbids in-class initialization of non-const static member 'temps'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:117: error: ISO C++ forbids initialization of member 'boucle'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:117: error: making 'boucle' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:117: error: ISO C++ forbids in-class initialization of non-const static member 'boucle'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:119: error: ISO C++ forbids initialization of member 'temps'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:119: error: making 'temps' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:119: error: ISO C++ forbids in-class initialization of non-const static member 'temps'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:120: error: ISO C++ forbids initialization of member 'compteur'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:120: error: making 'compteur' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:120: error: ISO C++ forbids in-class initialization of non-const static member 'compteur'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:137: error: ISO C++ forbids initialization of member 'temps'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:137: error: making 'temps' static
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/AnimLum/animlum.h:137: error: ISO C++ forbids in-class initialization of non-const static member 'temps'
Titre: Re : Bibliothèque animations lumineuses
Posté par: petitrain le juin 01, 2015, 07:37:09 pm
Je viens d'essayer sur un portable PC avec Windows 7 et une version de l'IDE de 1.0.5 mais ça ne compile pas non plus
Les mêmes commentaires apparaissent ....  :(
Titre: Re : Bibliothèque animations lumineuses
Posté par: Guillaume le juin 01, 2015, 08:30:02 pm
Et si tu mettais à jour ;)

J'ai installé la v1.0 sous mon nux et cela compile. C'est une erreur de lib plus globale, il ne reconnait pas certains types de variables.
Si dominique ou jlb ne répond pas, aborde les ;)
Je n'y connais rien en mac. GNU/Linux c'est mieux ;)
Titre: Re : Bibliothèque animations lumineuses
Posté par: DDEFF le juin 09, 2015, 12:58:34 pm
Bonjour PetitTrain,
C'est effectivement très important de mettre à jour, surtout qu'il y a eu un gros changement, justement après la version 1.0.1.
Je suis sur windows 8.1 (une merveille ...  ;)  ) et ça fonctionne parfaitement. Version IDE : 1.6.4.
Juste un problème : j'ai dû changer #include <animlum.h> en #include "animlum.h" au début du .ino. Un problème classique.
Titre: Re : Bibliothèque animations lumineuses
Posté par: Guillaume le juin 09, 2015, 01:22:59 pm
Les <> et "" permettent normalement de différencier les biblio officielles ou non mais l'IDE ne fait pas la différence. J'ai pris les <> car c'est ce qu'il me sortait lors de l'inclusion de la lib. ET ca marche comme cela.

Une merveille... je ne sais pas tu es seul juge ;) je ne connais plus windows depuis un grand moment.
Titre: Re : Bibliothèque animations lumineuses
Posté par: Guillaume le novembre 20, 2015, 01:39:04 pm
Après ce que l'on va appeler la V1, une v2 est en cours de développement.
L'idée est de reprendre les ScheduleTables de jlb.
Les objets animations lumineuses seront des enfants de ScheduleTableAction pour permettre l'incorporation de ces objets dans les tables.

L'écriture du code sera un peu plus longue mais le temps sera géré dans le code et proprement et vous pourrez le changer à votre guise :

Un exemple pourrait être un chenillard
Les deux include pour les 2 biblio et ensuite

<code>
ScheduleTable cycle(3, 1500);
Chenillard chen();
byte tab[]={3,6,9};

void setup(){
chen.setup(3, tab);
cycle.at(500, chen);
cycle.at(900, chen);
cycle.at(1400, chen);
cycle.start();
}

void loop(){
ScheduleTable::update();
}
</code>

Vous pourrez jeter des coups d'oeil dans le dépôt : https://git.framasoft.org/g.macfly/AnimLumV2

Les essais sont en cours, je commencerais à pousser la semaine prochaine. Ce sera pour les animations qui sont fixes et non dépendantes de l'aléatoire.