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).
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
- 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
- Jeśli posiadasz tylko jedną diodę spraw by zaczęła migać w taki sposób by nadać sygnał SOS.