Bonjour,
pas super fort sur Arduino, je cherche simplement a allumer et éteindre progressivement une LED mais a différentes vitesse (fading in rapide et fading out très lent) . Auriez vos une piste a me donner? merci d avance.
Salut,
void fade(int consigne) {
for (inti=0;i<255;i++) {
analogWrite(LED,i);
delay(consigne)
}
}
Merci la promptitude de ta réponse. Mais je dois avouer que je ne vois pas vraiment la difference avec le schema basic Fade suivant :
int LED= 9;
int brightness = 0;
int fadeAmount = 5;
void setup() {
// declare pin 9 to be an output:
pinMode(LED, OUTPUT);
}
void loop() {
void fade(int fadeAmount) {
for (inti=0;i<255;i++) {
analogWrite(LED,i);
delay(fadeAmount)
}
Dans ce code d exemple, la vitesse fading in and out est la même. Comment puis je changer cela? Si cela est possible bien sur. Merci beaucoup
Ben le code exemple ne va pas compiler il manque deux accolades fermantes. De plus la fonction fade n'est pas appelée.
Il suffit d'écrire 2 fonctions : fadeIn et fadeOut
La première fait une boucle de 0 à 255 et la seconde de 255 à 0. Leur argument est le délai entre deux itérations de boucle. Il suffit d'appeler les deux fonctions avec un argument différent pour avoir des vitesses différentes.
Bonjour,
Il suffit de jouer sur les delay().
Exemple :
const byte PIN_LED = 9;
void setup() {
pinMode(PIN_LED, OUTPUT);
}
void loop() {
fadeIn(1000);
fadeOut(500);
}
void fadeIn(long duration) {
const delayTime = duration / 255;
for (byte i = 0; i < 255; ++i) {
analogWrite(PIN_LED, i);
delay(delayTime )
}
digitalWrite(PIN_LED, HIGH);
}
void fadeOut(long duration) {
const delayTime = duration / 255;
for (byte i = 255; i > 0; --i) {
analogWrite(PIN_LED, i);
delay(delayTime )
}
digitalWrite(PIN_LED, LOW);
}
bonjour
c'est magnifique en quelques lignes de langage C++ meme si il manque quelques ";" et la declaration type "delayTime", j'ai mis long puisque duration est long, au pif
il m'a fallu une heure hier pour trouver pourquoi mon instruction for "décrémental" ne fonctionnait pas sur le hard alors qu'il compilait bien
for (int i=10; i<=0; i--); {
xxxxxxxx
}
comme je ne connais que basic : for t=10 to 0 step -1
revenant aux fonctions fadein et fadeout : on pourrait mettre parametres (duration, pinumber) jusqu'à 6 pins (nbre de pwm UNO) ?
const byte PIN_3 = 3;
const byte PIN_5 = 5;
const byte PIN_6 = 6;
const byte PIN_9 = 9;
const byte PIN_10= 10;
const byte PIN_11 = 11;
void setup() {
pinMode(PIN_3, OUTPUT);
pinMode(PIN_5, OUTPUT);
pinMode(PIN_6, OUTPUT);
pinMode(PIN_9, OUTPUT);
pinMode(PIN_10, OUTPUT);
pinMode(PIN_11, OUTPUT);
}
void loop() {
fadeIn(1000, PIN_3);
fadeOut(500, PIN_3);
fadeIn(800, PIN_5);
fadeOut(250, PIN_5);
fadeIn(400,PIN_ 9);
fadeOut(500, PIN_9);
fadeIn(1000, PIN_10);
fadeOut(250, PIN_10);
}
void fadeIn(long duration, int pinum) {
const long delayTime = duration / 255;
for (byte i = 0; i < 255; ++i) {
analogWrite(pinum, i);
delay(delayTime);
}
digitalWrite(pinum, HIGH);
}
void fadeOut(long duration, int pinum) {
const long delayTime = duration / 255;
for (byte i = 255; i > 0; --i) {
analogWrite (pinum, i);
delay(delayTime);
}
digitalWrite(pinum, LOW);
}
çà compile, je n'ai pas le hardware sous la main
le fait que les 6 pins pwm dépendent de 3 timers et sont par paires influencent-ils duration ? aucune garantie sur le fonctionnement exact du code, je ne suis meme pas certain que le parametre pinum correspond à mes déclations des pins de l'arduino, je ne fais que jouer
Il faut différencier les timers et les fonctions qui y sont liées : ici un timer est lié à plusieurs registres comparateurs, donc sur un seul timer peuvent tourner plusieurs PWM