Article de 2015 – Edit 03.03.16

Dans les caractéristiques de l’Arduino (Nano pour le cas présent), le courant des entrées/sorties est des 40ma. C’est bien pour allumer une LED mais on peut avoir besoin d’allumer plusieurs LED(s) avec une seul pin. C’est ce qu’on va essayer de faire.

Caractéristiques de l’Arduino nano – LIEN

Pour résoudre le problème, on peut utiliser un transistor qui fera office d’interrupteur et bien que contrôlé par l’Arduino, il ira puiser son courant ailleurs (sur une batterie externe par exemple).

Le transistor utilisé ici est le 2N2222 qui peut supporter un courant max de 800mA et une tension jusqu’a 40Volts si on se réfère à sa DataSheet. C’est bien suffisant pour le test.

Datasheet du 2n2222 – LIEN

Les LED(s) que j’utilise sont des LED(s) blanche, 3V, 20mA. On pourrait supposer installer 40 leds sur un seul transistor 2N2222, cepandant bien que débutant en la matière je suppose qu’il y a d’autres paramètres à prendre en compte comme la dissipation de la chaleur etc. C’est peut-être voir large, mais j’installerai maximum 10 leds par 2N2222. Si vous voulez en installer plus a vous de voir mais je déconseillerai d’aller jusqu’a 40. (Si un expert passe dans le coin je veux bien un petit contact via le blog pour l’instant…). De plus, pour le teste je n’ai mis que 5 LED(s).

Voilà le schéma que j’ai cablé,  la résistance utilisée entre la pin 9 et la base du 2n2222 est une résistance de 4.7K:

La batterie 6 volts correspond dans mon cas à 4piles AA de 1.5Volts chacunes. 5 piles sont conseillée pour monter l’alimentation à 7.5V.

2n2222_arduino

Pour l’expérience je me suis monté 5 LED(s) sur une plaque de prototypage:

montage_led_2n2222

Et le code

Je n’ai pas initialisé de variable de par la simplicité du code et de la rapidité pour le test.

 
              void setup() {
                pinMode(9, OUTPUT);
              }

              void loop() {
                
                int i;
                
                for(i = 0; i<255; i++){
                  analogWrite(9, i);   
                  delay(5);           
                }
                
                  for(i = 255; i>0; i--){
                  analogWrite(9, i);  
                  delay(5);  
                }
                
              }