Bonjour à tous,
Pouvez-vous m'apportez votre aide ou conseils pour modifier un programme sur lequel je travaille et qui concerne un projet de sculpture en leds. Après avoir fusionné deux sketchs, un chenillard de quatre(series) de leds ainsi qu'un effet fondu de deux(series) de leds et tous deux avec la fonction "delay", le résultat final ne correspond plus aux effets initiaux. Au vu des différentes recherches que j'ai fait il semblerait que le plus judicieux serait de passer par la fonction millis. Malgré les différents tutos j'ai du mal à concevoir ce changement. Mon projet se trouve en pièce jointe, voici aussi les deux codes utilisés ainsi que la fusion des deux.Votre aide serait la bienvenue. Merci d'avance.
/*
* Programme pour arduino uno
* Projet APTE Loco-Revue
* par C. Bézanger Octobre 2013
* Licence GNU GPLv3
*
* Ce programme réalise un chenillard.
* Il fait flasher successivement six DEL oranges relées aux sorties 4 à 7
* Puis il réalise une pause de 500 millisecondes avant de recommencer
*/
// Initialisation des lignes 4 à 7 en sortie
void setup () {
pinMode (4, OUTPUT) ;
pinMode (5, OUTPUT) ;
pinMode (6, OUTPUT) ;
pinMode (7, OUTPUT) ;
}
// Fonction loop
void loop () {
// Extinction de toutes les DEL au départ du programme
for (byte i = 4 ; i <= 7 ; i++) {
digitalWrite (i, LOW) ; // éteint la DEL reliée à la broche i
}
// Boucle pour faire flasher les DEL
for (byte i = 4 ; i <= 7 ; i++) {
digitalWrite (i, HIGH) ; // allume la DEL sur broche i
delay (500) ; // durée du flash 500 millisecondes
digitalWrite (i, LOW) ; // éteint la DEL
}
// délai de 500 millisecondes
delay (500) ;
// Recommence la séquence
}
//fonction fondu pour le projet Cantabile
//représentant le nom
int pin1 = 9; //PWM pin
int pin2 = 10; //PWM pin
void setup() {
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
}
byte number = 0;
bool goingUp = true; //This sets the direction
void loop() {
if(goingUp) //this will be true the first time we run and true until we set it false
{
analogWrite(pin1, number);
analogWrite(pin2, 230 - number); //write the opposite
number++; //increase number
if(number == 230)
{
goingUp = false; //switch direction, we reached the top
}
}
else //we are going down here
{
analogWrite(pin1, number);
analogWrite(pin2, 230 - number);
number = number - 5; //decrease number by a factor of 5
//normally -1 means 1 second for 255 loops()
//but we want 0.2 seconds, so that's a 1/5th of a second
//so go 5 times faster than on the fadeUp
if(number <= 5)
{
goingUp = true; //switch direction again, going up
number = 5; //just in case it went in the negative, reset to 0
}
}
delayMicroseconds(3921); //IMPORTANT. for 3.9 milliseconds, we do nothing
//This means roughly, every 255 cycles that equals 1 second
}
Et la fusion des deux
//Projet animation d'une Partition Musicale, la portée et la clef de sol seront en leds fixes.
//Seul l'Arduino Nano gérera une fonction chenillard pour un ensemble de quatres leds (Notes) et une fonction fondu deux leds (Nom)
//Initialisation des lignes 4 à 7 en sorties pour Notes
// Initialisation des lignes 9 à 10 en sorties PWM pour Nom
void setup ()
{
pinMode (4, OUTPUT) ;
pinMode (5, OUTPUT) ;
pinMode (6, OUTPUT) ;
pinMode (7, OUTPUT) ;
pinMode (9, OUTPUT) ;
pinMode (10, OUTPUT);
}
byte number = 0;
bool goingUp = true; //Cela définit la direction
// Fonction loop
void loop () {
// Extinction de toutes les DEL au départ du programme
for (byte i = 4 ; i <= 7 ; i++) {
digitalWrite (i, LOW) ; // éteint la DEL reliée à la broche i
}
// Boucle pour faire flasher les DEL
for (byte i = 4 ; i <= 7 ; i++) {
digitalWrite (i, HIGH) ; // allume la DEL sur broche i
delay (1000) ; // durée du flash 500 millisecondes
digitalWrite (i, LOW) ; // éteint la DEL
}
{
if(goingUp) //ce sera vrai la première fois que nous courrons et vrai jusqu'à ce que nous le définissions faux
{
analogWrite(9, number);
analogWrite(10, 230 - number); //écris le contraire
number++; //augmenter le nombre
if(number == 230)
{
goingUp = false; //changer de direction, nous avons atteint le sommet
}
// délai de 500 millisecondes
delay(500) ;
// Recommence la séquence
}
}
}