LinkedIn YouTube Facebook
Szukaj

Wstecz
SoM / SBC

Prosta aplikacja na Arduino – sterownik linijki LED

Po zmontowaniu układu zgodnie z rysunkiem 3 należy go dołączyć do komputera osobistego kablem USB i można rozpocząć eksperymenty z programem. Na listingu 2 pokazano program pozwalający uzyskać efekt przesuwającego się punktu świetlnego.

 

Listing 2. Program sterujący linijką diod LED dla układu pokazanego na fot. 4 (prog_01.ino)

#define LED_POCZ 2
#define LED_KON 9

void setup()
{
  int i;
  //linie 2...9 jako wyjścia
  for (i = LED_POCZ; i <= LED_KON; i++) 
    pinMode(i, OUTPUT);
}

void loop()
{
  int i;
  //przesuwający się punkt
  for (i = LED_POCZ; i <= LED_KON; i++)
 {
    digitalWrite( i, HIGH );
    delay(200);
    digitalWrite( i, LOW );
  }

}

W pierwszych dwóch liniach programu, wykorzystując dyrektywę preprocesora #define, zdefiniowano dwie stałe: LED_POCZ i LED_KON o wartościach odpowiednio 2 i 9. Diody LED są dołączone do linii we/wy Arduino Uno o numerach: 2, 3, 4, 5, 6, 7, 8 i 9. W funkcji setup() linie te są ustawiane w tryb wyjściowy za pomocą funkcji:

  pinMode(i, OUTPUT);

Zdefiniowane stałe LED_POCZ i LED_KON odpowiadają pierwszej i ostatniej wykorzystywanej linii we/wy. W programie dostęp do tych linii jest realizowany za pomocą pętli for, która dla zwiększenia czytelności programu wykorzystuje te stałe:

  for (i = LED_POCZ; i <= LED_KON; i++)
    pinMode(i, OUTPUT);

Po ustawieniu wymaganej konfiguracji linii we/wy pożądany efekt, czyli przesuwający się punkt świetlny, uzyskuje się w pętli:

  for (i = LED_POCZ; i <= LED_KON; i++)
 {
    digitalWrite( i, HIGH );
    delay(200);
    digitalWrite( i, LOW );
  }

W każdej iteracji powyższej pętli jest zapalana kolejna dioda LED. Każda dioda świeci się przez 200 ms. Zmieniając wartość funkcji delay() można łatwo zmienić szybkość przesuwania się punktu świetlnego.

 

W tym miejscu warto zauważyć, że zmiana linii we/wy, do których są dołączone diody LED, w zasadzie demoluje nasz program. Niestety czasami projektując płytkę drukowaną okazuje się, że zmiana kolejności dołączenia tych diod, skutkowałaby znacznie łatwiejszą w wykonaniu płytką drukowaną. Jest łatwy sposób zabezpieczenia się przed tego typu niedogodnościami. Wystarczy do „adresowania” diod LED wykorzystać odpowiednio przygotowaną tablicę, tak jak to pokazano na listingu 3. Tablica leds[] zawiera numery linii we/wy, do których są dołączone diody LED. W przypadku układu pokazanego na rysunku 3 tablica leds[0] powinna wyglądać następująco:

int leds[] = {2, 3, 4, 5, 6, 7, 8, 9};

W programie odwołanie do pierwszej diody LED w linijce świetlnej odbywa się poprzez wywołanie pierwszego elementu tablicy, czyli leds[0], co zostanie w trakcie pracy programu zastąpione przez odwołanie do linii we/wy o numerze 2.

Jeżeli z jakichś powodów okaże się, że diody należy dołączyć w inny sposób, np. zamieniając diodę pierwszą z ostatnią (rysunek 6), to wystarczy zmienić zawartość tablicy leds[] bez modyfikowania reszty programu:

int leds[] = {9, 3, 4, 5, 6, 7, 8, 2};

 

Rys. 6. Widok połączeń Dołączenie 8 diod LED do Arduino Uno - wykonanie połączeń

Rys. 6. Widok połączeń Dołączenie 8 diod LED do Arduino Uno – wykonanie połączeń

 

Listing 3. Program sterujący linijką diod LED dla układu pokazanego na fot. 4 (prog_02.ino)

int leds[] = {2, 3, 4, 5, 6, 7, 8, 9};
#define LEDS_SIZE 8

void setup()
{
  int i;
  //linie z tablicy leds jako wyjścia
  for (i = 0; i < LEDS_SIZE; i++) 
    pinMode( leds[i], OUTPUT );
}

void loop()
{
  int i;
  //przesuwający się punkt
  for (i = 0; i < LEDS_SIZE; i++) 
 {
    digitalWrite( leds[i], HIGH );
    delay( 200 );
    digitalWrite( leds[i], LOW );
  }

}
Autor: Anna Kubacka