Hello World, czyli świecąca dioda LED

W każdym języku programowania, którego byśmy się nie uczyli, pierwszym zadaniem jakie wykonuje początkujący programista to napisanie prostego programu wyświetlającego tekst „Hello World”. W przypadku programowania mikrokontrolerów takie zagadnienie też jest możliwe do realizacji, jednak wymagałoby ono użycia wyświetlacza LCD, który nie jest już tak prostym do opanowania elementem podczas pierwszego zadania. O wiele prostszym zadaniem i równocześnie odpowiednikiem „Hello World” z innych języków programowania jest program, który zaświeca diodę LED.

Hello World

Do napisania takiego programu i skonstruowania układu będziemy potrzebowali:

  • mikrokontroler – ja użyję ATmega8
  • diody LED w dowolnym kolorze
  • rezystora 220Ω (1/4W)

No to zaczynamy… Zakładam, że każdy na chwilę obecną ma do mikrokontrolera podpięty programator oraz napięcie zgodnie z wcześniejszym moim artykułem.

Konstrukcja naszego układu powinna być następująca nóżkę PB1 mikrokontrolera łączymy z katodą naszej diody led, a anodę za pomocą rezystora łączymy  z linią zasilania naszej płytki stykowej (tak jak na poniższym zdjęciu).

swiecaca_dioda_led.jpg

Teraz nasz kod programu

#include <avr/io.h>

int main(void){
    while(1){
        DDRB = (1<<PB1);
    }
return 0; }

Tradycyjnie na początku naszego programu dołączamy podstawową bibliotekę wejścia-wyjścia. Tworzymy także główna funkcję naszego programu, zawierającą nieskończoną pętlę z głównym kodem naszego programu:

DDRB = (1<<PB1);

Ustawia on na lini PB1 niskie napięcie, dzięki czemu prąd przepływający przez diodę led będzie miał połączenie z GND i didoda zacznie świecić.

Czyż nie jest to proste… Hello World!!! mój drogi przyjacielu. Twój układ jest poprawnie zbudowany, a program swietnie napisany.

Miganie diody LED

Pójdźmy teraz krok dalej i zmuśmy naszą diodę led do tego by migała. Powiedzmy, niech program działa tak, że dioda przez 0.5 sekundy świeci, a nastepnie na 0.5 sekundy gaśnie.

Pierwszą rzeczą jaką musimy dodać to możliwość korzystania z funkcji odpowiedzialnych za przeczekanie pewnego okresu czasu

#include <avr/delay.h>

A następnie zmodyfikować naszą główną pętlę w nastepujący sposób

    while(1){
DDRB = (1<<PB1);
_delay_ms(500);
DDRB = (0<<PB1);
_delay_ms(500);
}

Kolejne linijki pętli są odpowiedzialne za następujące rzeczy:

  • włączenie niskiego napiecia na linii PB1 (dioda się zaświeca)
  • odczekanie 500 ms (0.5 sekundy)
  • wyłączenie niskiego napięcia na linii PB1 (dioda gaśnie)
  • odczekanie 500 ms

Zadania

  1. Spróbuj pobawić się jednocześnie dwoma diodami. Jeśli posiadasz np. diodę czerwoną i niebieską to zrób coś na wzór koguta jak na radiowozie
  2. Jeśli posiadasz tylko jedną diodę spraw by zaczęła migać w taki sposób by nadać sygnał SOS.
Hello World, czyli świecąca dioda LED
Przewiń na górę