Pour améliorer l'animation autour du ruban à LED , j'ai mis un Arduino Uno pour allumer et éteindre les Leds de façon progressive.
Le ruban à LED pour une longueur de 90 cms consomme 0.25A . Une sortie d'Arduino n'est pas prévue pour des intensités de ce type. (Lintensité max par broche est 40mA tout en sachant que l'Arduino est limitée à 200mA toutes broches Entrées et Sorties confondues.
Du coup j'ai interfacé le pilotage du ruban par un transistor 2N2222A.
Sur le schéma suivant j'ai symbolisé le ruban par 3 leds et la résistance R2 (Non nécessaire avec un ruban à Led) . Le montage est alimenté 12V .
Le seul point délicat pour ce montage c'est le calcul de la résistance R1 (Rb)
Dans un 1er temps , on calcule le courant dans la base du transistor
Ib=Ic/Hfe
2n2222a :Hfe : 75 courant max IC 0.8A
Ib =0.25 / 75 = 0.0033A ->3.3mA
Ensuite on calcule la valeur de la résistance Rb
Rb=Vcc-0.65 / Ib
Rb=5-0.65 / 0.0033 = 1318 Ω -> 1.2 K
pour une bonne saturation on divise par 2 ou 3 la valeur de Rb
Maintenant le programme :
// Gestion eclairage module N
// By Olivier PETIT
// Nov 2016
int S1 = 2; // Bouton poussoir S1 Allumage
int S2= 4; // Bouton poussoir S2 Arret
int led =13;
int ruban_led = 9;
int compteur = 0;
bool E_S1,E_S2;
void setup() {
pinMode(S1,INPUT_PULLUP);
pinMode(S2,INPUT_PULLUP);
pinMode(led,OUTPUT);
pinMode(ruban_led,OUTPUT);
}
void loop() {
E_S1 = digitalRead(S1);
E_S2 = digitalRead(S2);
if (E_S1 == LOW) {
while(compteur!=250)
{
compteur=compteur+5;
delay(200);
analogWrite(ruban_led,compteur);
}
analogWrite(ruban_led,255);
compteur = 0;
digitalWrite(led, HIGH);
}
if (E_S2 ==LOW) {
compteur =250;
while(compteur!=0)
{
compteur=compteur-5;
delay(200);
analogWrite(ruban_led,compteur);
}
digitalWrite(led, LOW);
}
}
Et voilà un petit exemple simple , mettant en oeuvre un ruban à LED et un Arduino Uno