variation intensité en clignotement led en meme temps.

NorinRad
dim, 12/27/2020 - 14:54
Bonjour,
j'essaie de m'initier a la programmation d'un arduino pour des effets de lumières dans un 1er temps.
J'aimerais faire clignoter une led et faire varier sont intensité en même temps.
J'ai donc trouver un programme de variation de l'intensité et j'ai essayé de lui coller le fameux "blink" pour avoir le clignotement. Le programme fonctionne mais les opérations sont réalisées l'une après l'autre et pas en même temps...
J'aimerais comprendre pourquoi.
Voila le code :
// --- Programme Arduino ---
// par X. HINAULT - 01/2010// --- Que fait ce programme ? ---
/* Fait varier la luminosité d'une LED connectée sur la broche 3*/// --- Fonctionnalités utilisées ---
// --- Circuit à réaliser ---
// Connecter une LED et sa résistance sur la broche 3 (configurée en sortie)//**************** Entête déclarative *******
// A ce niveau sont déclarées les librairies, les constantes, les variables...// --- Inclusion des librairies utilisées ---
// --- Déclaration des constantes ---
// --- constantes des broches ---
const int LED=3; //declaration constante de broche
// --- Déclaration des variables globales ---
int i=0; // variable de boucle// --- Initialisation des fonctionnalités utilisées ---
//**************** FONCTION SETUP = Code d'initialisation *****
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programmevoid setup() { // debut de la fonction setup()
// --- ici instructions à exécuter au démarrage ---
pinMode(LED, OUTPUT); //met la broche en sortie
} // fin de la fonction setup()
// ********************************************************************************//*************** FONCTION LOOP = Boucle sans fin = coeur du programme *************
// la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tensionvoid loop(){ // debut de la fonction loop()
for (i=0; i<=255;i++){ // boucle for compte de 0 à 255
analogWrite(LED,i); // génère une impulsion sur la broche de largeur i = la luminosité augmente
delay(10); // pause de 10 ms entre chaque "cran"
} // fin de la boucle for
for (i=0; i<=255;i++){ // boucle for compte de 0 à 255
analogWrite(LED,255-i); // génère une impulsion sur la broche de largeur 255-i
// = la luminosité baissedelay(10); // pause de 10 ms entre chaque "cran"
} // fin de la boucle for
// --- ici instructions à exécuter par le programme principal ---
{
digitalWrite(LED, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}} // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
// ********************************************************************************// --- Fin programme ---
hercule124
lun, 12/28/2020 - 10:02
bonjour,
normal que les opérations s'executent l'une après l'autre
tu utilises uniquement des boucles ,mais aucune conditions .
tu restes dans ta boucle.
Walter
lun, 12/28/2020 - 18:44
Comme le dit Hercule tes trois boucles sont exécutées sequentiellements, donc logiquement tu devrait avoir:
ta première boucle qui allume progressivement ta LED en 2550 ms
ta deuxième boucle qui éteint ta LED en 2550 ms
ton groupe de code entre accolade fait clignoter une fois ta led.
Et ta fonction "loop" est appeler en boucle par le "system" arduino
Comme le dit Hercule, il faut que tu utilise une structure conditionnelle (un if ... else)
qui ferra ton clignotement, par exemple ton bloque "if" allumera progressivement ta LED et ton bloque "else" éteindra progressivement ta LED.
Essaye de changer ton code pour corresponde à ce que l'on t'a décrit et on pourra te le corriger si nécessaires