Diody LED czyli jak migac i świecić

UWAGA -nowa wersja
Po prawie pięciu latach odświeżyliśmy ten wpis, tak by lepiej odpowiadał na pytania początkujących. Zamiast tego wpisu polecamy nowe Diody LED czyli jak migać i świecić

Ostatnio zapadła cisza na StarterKicie, bo przed świętami przygotowywałem się do Bootstrapa 9.4, które to przygotowania zajęły mi większość wolnego czasu. Teraz korzystając z dnia wolnego, który sobie po świętach zostawiłem, nadrabiam zaległości.

Poprzednio zajmowaliśmy się tym jak Arduino może odczytać wartość z zewnętrznego czujnika (fotorezystora). Teraz będziemy starać się odczyt pokazać.

Użyjemy do tego 7 diod LED, które ułożone w rząd będą tworzyć wskaźnik – im więcej światła pada na fotorezystor tym więcej diod się zapali. Zaczniemy od końca, czyli jak to wygląda w akcji.


Arduino’s Eye from Starter Kit on Vimeo.

Wybaczcie słabą jakość, ale kamera w komórce to jedyne czym dysponuję aby uwiecznić moje eksperymenty.

Widać jednak co się dzieje. Poza kadrem przybliżam i oddalam fotorezystor do lampy, kolejne diody zapalają się i gasną w miarę jak natężenie światła padające na fotorezystor rośnie i maleje.

Diody LED są zamocowane bezpośrednio na płytce prototypowej, przez sprytne wygięcie i przycięcie nóżek układają się w linię i jednocześnie trzymają się pewnie na płytce.

Dioda LED zamocowana na płytce prototypowej
Dioda LED zamocowana na płytce prototypowej

Zdjęcie jest trochę nieostre (znowu komórka w akcji) ale widać dobrze jak jest zamocowana dioda. W jednym z dolnych rzędów otworów w płytce prototypowej podłączona jest masa układu i wszystkie diody dzielą to jedno podłączenie.W jaki sposób wygięte są nóżki diody pokazuje następne zdjęcie.

Pojedyncza dioda przygotowana do montażu
Pojedyncza dioda przygotowana do montażu

 

Schemat elektryczny połączenia diod LED z Arduino

Masa z Arduino (Gnd) zostaje podłączona do dolnego rzędu na płytce prototypowej. Dzielnik napięcia z fotorezystorem zostaje wpięty między masę a zasilanie z Arduino. Jako drugi rezystor użyłem 5,7 kΩ. Mając na uwadze, że rezystancja mojego fotorezystora zmienia się od kilkuset Ω do kilku MΩ mierzone napięcie na rezystorze 5,7kΩ będzie się wahać między prawie 5V a ledwo nad 0V, dlatego wartości odczytywane z wejścia analogowego będą w pełnej skali od 0 do 1023.

Tutaj na prośbę czytelników rysunek układu we Fritzingu:

Schemat na płytce stykowej połączenia diod LED z Arduino

Wszystkie diody zostają podłączone do szyny z masą. Każda z diod zostaje dopięta do wyjść cyfrowych Arduino przez rezystor. Rolą tego rezystora jest ograniczenie maksymalnego prądu jaki popłynie przez diodę. Nie chodzi o bezpieczeństwo diody ale wyjścia cyfrowego Arduino.

KOD:

// pin 1 nie jest używany
// gdy wartość jest 0 - to nie ma świecić
int leds[] = {-1,2,3,4,5,6,7,8};
int photoPin = 0;
int size = 8;
int val = 0;

void setup()
{
  //ustawiamy
  for (int i=1; i< size; i++) {
    pinMode(leds[i], OUTPUT);
  }
}

void loop()
{
  val = analogRead(photoPin);
  val = val/128;
  for (int i=1;i<size;i++) {
    if (i <= val ) {
      digitalWrite(leds[i], HIGH);
    } else {
      digitalWrite(leds[i], LOW);
    }
  }
  delay(200);
}

leds jest tablicą zawierające numery wyjść cyfrowych, do których podłączyliśmy kolejne diody. Ponieważ tablica jest numerowana od zera, wpisując nieistniejącą wartość wyjścia oraz pracując na indeksie tablicy zawsze od 1, pomijając zerowy, gdy natężenie światła jest najsłabsze gasną wszystkie diody.

Nasz wyświetlacz ma 8 stanów (od 1 do 7 diod świecących oraz stan zerowy ze zgaszonymi wszystkimi diodami) dlatego wartość odczytaną z wejścia analogowego dzielimy przez 128, uzyskując wynik od 0 do 7, co określa nam które diody mamy zaświecić.

Podsumowanie

Jest to pierwszy z postów, w którym zajmujemy się diodami LED, w jednym z następnych będzie o tym, jak wybrnąć z sytuacji gdy chcemy sterować diodami LED w liczbie większej niż 14. W takim przypadku odpada nam rozwiązanie użyte w tym układzie, gdzie jedno wyjście cyfrowe steruje jedną diodą.