Fusion de deux programmes
Bonjour à tous,
Je me suis lancé dans un projet de montage leds représentant notre logo associatif (Chorale Cantabile) et après de longues recherches sur Internet la carte Arduino Nano s'imposa à moi afin des gérer diverses variantes de fonctionnement. Malgré les différents tutos visionnés, étant novice, je bloque encore sur la fusion de deux programmes. Ceux-ci,chenillard et enseigne, comportent la fonction "Delay" qui je sais me bloquent le programme. Pour les fusionner j'ai bien pris en compte un "void setup1", "void setup2", ainsi que "void loop1" et "void loop2" avec la fonction "millis"mais les messages d'erreurs que je ne comprends pas encore m'empéchent de continuer. Je ne vais pas pour autant abandonner ma formation d'Arduino, mais à cet instant serait'il possible que quelqu'un me vienne en aide. Merci d'avance.:):roll: P.S. Après les soudures terminées je posterais la photo du projet.
Voiçi donc les deux codes:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| //Fonction chenillard pour le projet Cantabile
//Représentant les notes
// 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
} |
Le deuxième:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| //fonction enseigne pour le projet Cantabile
//représentant le nom
//Initialisation des lignes 9 et 10, PWM, en sorties
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(8000); //IMPORTANT. for 3.9 milliseconds, we do nothing
//This means roughly, every 255 cycles that equals 1 second
} |
Fusion de deux programmes - modifier la fonction "Delay" par "Millis"
Bonjour,
J'ai pu enfin fusionner deux scketchs mais l'effet du fondu n'est plus identique à l'original. Il faudrait que j'utilise la fonction "Millis". Pouvez-vous m'apportez une suggestion pour le faire?
Merci :roll:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| //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 (500) ; // 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, 250 - number); //écris le contraire
number++; //augmenter le nombre
if (number == 250)
{
goingUp = false; //changer de direction, nous avons atteint le sommet
}
// délai de 500 millisecondes
delay(500) ;
// Recommence la séquence
}
}
} |