LOCODUINO
Parlons Arduino => Vos projets => Discussion démarrée par: Guillaume le avril 12, 2015, 02:56:52 pm
-
Bonjour,
je souhaite sur mon module HOe mettre une simulation jour/nuit avec des bandes de LED. J'en possède une à ton chaud. Il existe aussi des tons froids.
Je sais que froid c'est plutôt la journée et chaud c'est lever et coucher de soleil.
Avant de faire des tests, est-ce que par hasard quelqu'un s'est penché sur ce point ?
-
Oui, Patrick a travaillé là dessus :
http://jurasecondairen.blogspot.fr/2012/11/jour-et-nuit.html
Même si je pense que le matin, c'est blanc pur à l'aube avant que le soleil se lève puis plus chaud au levé du soleil.
À moduler pour simuler un temps nuageux avec des couleurs plus froides
Et puis ses propres goûts :)
-
Je ne m'en rappelais plus de celui-là.
Je vais prendre cela déjà comme exemple pour
Chacun a ses propres valeurs. J'avais trouvé ces trucs sur un site de photos pour une histoire de balance des blancs.
On va mettre en application cela alors
-
Et voila un premier jet, il y a des choses à refaire de toute façon, et forcément à simplifier le code :
//Bibliothèque
#include <ScheduleTable.h>
//Variables pour les tables
//Laisser à 1 pour un cycle de 24h en 24 min, pour accélérer, augmenter jusqu'à 200 max
const byte acceleration = 1;
//----------------------------
//Table générale
const byte actionTable = 4;
ScheduleTable cycle(actionTable, 1440, (1000/acceleration)); //24 min rééls pour un jour de 24h
//--------------------
//Table jour/nuit pour le soleil (ton chaud et froid)
ScheduleTable leverchaud(1, (470/acceleration));
ScheduleTable coucherchaud(1, (235/acceleration));
ScheduleTable leverfroid(1, (470/acceleration));
ScheduleTable coucherfroid(1, (235/acceleration));
// Pin des pwm
const byte pinchaud = 3;
const byte pinfroid =5;
//Variables pour pwm
byte chaudpwm = 0;
byte froidpwm = 0;
void setup() {
// ajout des taches sur la table générale
cycle.at(600, setleverchaud);
cycle.at(1140, setcoucherchaud);
cycle.at(360, setleverfroid);
cycle.at(1080, setcoucherfroid);
//ajout sur table annexe
leverchaud.at(0, pwmleverchaud);
leverfroid.at(0, pwmleverfroid);
coucherchaud.at(0, pwmcoucherchaud);
coucherfroid.at(0, pwmcoucherfroid);
cycle.start();
pinMode(pinchaud, OUTPUT);
pinMode(pinfroid, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
ScheduleTable::update();
}
//Fonctions pour les scheduleTable
void setleverfroid(){
leverfroid.start(255);
}
void setcoucherfroid(){
coucherfroid.start(255);
}
void setleverchaud(){
leverchaud.start(255);
}
void setcoucherchaud(){
coucherchaud.start(255);
}
void pwmleverfroid(){
froidpwm++;
analogWrite(pinfroid, froidpwm);
}
void pwmcoucherfroid(){
froidpwm--;
analogWrite(pinfroid, froidpwm);
}
void pwmleverchaud(){
chaudpwm++;
analogWrite(pinchaud, chaudpwm);
}
void pwmcoucherchaud(){
chaudpwm--;
analogWrite(pinchaud, chaudpwm);
}
-
bonjour à tous,
Je reprends la parole après un long silence, je vois que le forum est toujours actif...
Je n'ai toujours pas testé les sheduleTable de Jean Luc, ça a l'air vraiment simples.
Pour répondre à ta question, sur mes modules, j'ai testé pas mal de choses pour le jour et la nuit et je n'ai pas encore décidé quoi prendre:
J'ai mis des rubans de leds RGB en soutien pour augmenter les tons chauds le matin et le soir, du blanc/bleu pour pour les journées froides d'hiver et pour la pleine lune.
J'ai mis aussi un ruban de blanc chaud mais je ne sais pas si je vais le garder ( trés jaune)
J'ai mis des ampoules halogène qui me donne la température de couleur que j'aime bien ( comme on a dans le sud!) mais, le problème avec les halogènes c'est la consommation de courant. Je voudrais les passer en 220v avec un gradateur commandé par arduino mais je n'ai rien trouvé de simple encore.
Un problème que j'ai trouvé avec les rubans de leds, c'est le manque d'inertie des leds par rapport aux ampoules à filament.
Quand la PWM est très basse et lente, la lumière monte et descend par escalier et je n'aime pas beaucoup!!!
Sinon, Patrick m'avait envoyé un petit programme pour commander tout ça, bien sympa, si ça t'intéresse?
Je compte bien m'y remettre mais je manque de temps....
-
Je garde cela en tête c'est enregistré. Je vais dans un premier temps faire avec les bandes de led j'ai juste la place pour mettre de front une bande de chaque chaud et froid. Je n'ai mis qu'un mini bandeau pour que ca tienne en carton. Tout mon module est fait en carton ;).
Les autres idées je garde pour les prochains.
Effectivement le pb du palier peut être. Il faut que je testes en exploitation réelle. J'attends les transistors.
Après, peut être qu'il y a à prendre en compte la fréquence des PWM, comme ce n'est pas une tension continue pure. Avec un transformateur analogique, je n'ai pas vraiment de souci, condensateur aussi ?
Le code que j'ai pondu correspond au diagramme de patrick de juraensecondaire.
L'inertie est à faire avec le programme ;)
Concernant le code, sur les animations lumineuses, je me débrouille. J'aime bien faire par moi-même. La biblio de jlb avance bien le truc, c'est suffisant pour le moment.
-
Bonjour,
J'avais noté cette manque de finesse dans la gradation pour les faibles valeurs de PWM et j'ai reprogrammé le timer 1 pour avoir une PWM 16 bits au lieu de 8 bits sur les 2 broches 9 et 10. On se retrouve avec 65536 pas au lieu de 256, ce qui résout le problème.
Mais je n'ai que 2 rubans.
Ceci dit en utilisant un Mega, il y a un paquet de timers 16 bits et donc un paquet de PWM 16 bits.
Il y a un exemple de code ici : http://www.ofrecordings.com/2014/03/16/how-to-set-up-16-bit-pwm-with-an-arduino-uno-atmega328/
-
Bonjour,
ceci dit l'arduino due facilitera le problème ;) avec la fonction resolution de l'analog. Heureusement pour moi...
Après, les bandes éclairent à partir de 8V (en tout cas les miennes). Finalement, on peut penser (enfin moi), que la montée finalement est très rapide sur peu de pas (vers la fin) et fait cette impression d'escalier au lieu de montée progressive. Peut être est-ce le souci ?
Avis aux spécialistes.
-
Le comportement n'est pas du tout le même entre alimentation en tension continue et alimentation en PWM
En tension continue, il faut que ça passe le seuil de 3 DEL en série (elles sont montées comme ça) pour que ça éclaire. Ça doit effectivement faire dans les 8V.
En PWM, le seuil est passé au premier cran et tu as donc un éclairage 1/256e du temps
Effectivement l'Arduino Due est sympa de ce point de vue :)