Feux PN clignotant avec allumage - extinction progressive

Toutes les discussions sur l'Arduino !

Modérateur : MOD

Répondre
Avatar du membre
Class66240
Bavard
Messages : 67
Enregistré le : sam. 03 oct. 2009, 01:13
Localisation : Paris
Âge : 65

Feux PN clignotant avec allumage - extinction progressive

Message par Class66240 » lun. 02 mars 2015, 14:07

Oui, vous allez me dire que "ça n'a rien de révolutionnaire"... Et bien si, peut-être !!!!
En effet l'allumage et l'extinction progressive de la led fait appel à une sortie PWM. Ok rien d'extraordinaire, sauf que la led ne s'éteint jamais complètement... Damned. Je me suis dit : et si j'utilisais la sortie d'abord en PWM, puis en digital. On va voir : et ça fonctionne !!! L'originalité (?) programme est de faire fonctionner une même Pin en sortie en mode PWM (tension varie de 0 à 5V ou en mode digital (0 ou 5 V)... Cela fonctionne... mais ce n'est peut-être pas un scoop ?
A+

Code : Tout sélectionner

// Feux PN clignotant avec allumage - extinction progressive (fait appel à une sortie "PWM")
// Le programme a d'abord été compilé sur un UNO V3, puis adapté aux pins de l'ATtiny45 - voir brochage en fin de programme.
// Ensuite on utilise l'Arduino UNO V3 pour programmer l'ATtiny45 (avant charger le bootloader 8 Mhz car l'ATtiny45 est livré "vierge".
// Version pour ATtiny45 Testé OK  
// ok avec feux PN et résistance de 330 Ohms - 
// Le montage est fait sur une plaque de circuit imprimé à bandes. 

	int i = 0;
	const int LED0 = 0; // 2 Led connectée sur Pin 5 (pin PWM) avec une résistance de 330 ou 470 ohms
	const int LED1 = 1; // 2 Led connectée sur Pin 6 (pin PWM) avec une résistance de 330 ou 470 ohms

void setup() {
	pinMode(LED0, OUTPUT);
	pinMode(LED1, OUTPUT);
}

void loop() {
    delay(400); 
    for (int i = 0; i < 80; i++){        
    analogWrite(LED0, i);
    analogWrite(LED1, i);
    delay(5); 
  }
    delay(400);  
    for (int i = 80; i > 0; i--){
    analogWrite(LED0, i);
    analogWrite(LED1, i);
    delay(5);
  }
    digitalWrite(LED0,LOW); // nécessaire pour extinction complète led
    digitalWrite(LED1,LOW); // car analogWrite n'arrive pas à 0
    // delay(100);
}
    // ATMEL ATTINY45 / ARDUINO
    //
    //                           +-\/-+
    //  Ain0       (D  5)  PB5  1|      |8   VCC
    //  Ain3       (D  3)  PB3  2|      |7   PB2  (D  2)  INT0  Ain1   
    //  Ain2       (D  4)  PB4  3|      |6   PB1  (D  1)        pwm1   
    //  GND                     4|      |5   PB0  (D  0)        pwm0   
    //                            +----+
Réseau N - MS Minitrix

Avatar du membre
jlb
Fécond
Messages : 694
Enregistré le : jeu. 04 oct. 2012, 16:38
Echelle pratiquée : N
Prénom : Jean-Luc
Site Internet : http://modelleisenbahn.triskell.org

Re: Feux PN clignotant avec allumage - extinction progressiv

Message par jlb » lun. 02 mars 2015, 14:13

Bonjour,

C'est normal que ça n'arrive pas à 0 car ta boucle s'arrête à 1 :

Code : Tout sélectionner

for (int i = 80; i > 0; i--){
    analogWrite(LED0, i);
    analogWrite(LED1, i);
    delay(5);
}
remplace i>0 par i>=0

Avatar du membre
Class66240
Bavard
Messages : 67
Enregistré le : sam. 03 oct. 2009, 01:13
Localisation : Paris
Âge : 65

Re: Feux PN clignotant avec allumage - extinction progressiv

Message par Class66240 » lun. 02 mars 2015, 17:14

jlb a écrit :Bonjour,
C'est normal que ça n'arrive pas à 0 car ta boucle s'arrête à 1 :
remplace i>0 par i>=0
Bonjour jlb, merci de ton explication... moi qui pensait avoir fait une découverte, ben euh non... :oops:
Ta sagacité à déboguer est toujours aussi grande, merci .
C'est ce partage que j'apprécie dans nos échanges. :mrgreen:
Réseau N - MS Minitrix

Répondre