Zastosowanie z Arduino Uno R3.
Zastosowanie z moduł uruchomieniowy Atmega32.
Moduł do kupienia:
Przykład wykorzystania modułu diod LED oraz modułu klawiszowego.
Do podłączenia modułu diod LED do mikrokontrolera służy 7 pinów. Pin zero jest wspólny dla wszystkich diod możemy do niego podpiąć zasilanie lub masę w zależności czy chcemy by nasze diody świeciły gdy na na pinach 1 – 6 pojawi się stan niski lub wysoki. My zaprezentujemy przykład podłączenia modułów do Atmega32A. Listing kodu programu prezentujemy poniżej. Na początku należy skonfigurować piny jako wyjściowe. Dokonamy tego wykonując operację OR z rejestrem DDRx (rejestr kierunku danych). W naszym przykładzie moduł diod LED został podpięty do Portu A, pinów 1 – 7. Aby zapalić poszczególną diodę należy wykonać operację OR rejestru PORTA z wektore,m który składa się z samych zer, oraz jednej jedynki przesuniętej a daną ilość bitów. Na przykład można tego dokonać przez wykonanie instrukcji:
PORTA |=(1<<LED1);
Natomiast by zgasić diodę należy wykonać operację AND, by ustawić stan niski na wybranym bicie rejestru PORTA. Na przykład można tego dokonać przez wykonanie instrukcji:
PORTA &=!(0<<LED1);
Gotowy listing do sterowania świeceniem diod LED.
#include <avr/io.h> #include <util/delay.h> #define LED1 PA2 #define LED2 PA3 #define LED3 PA4 #define LED4 PA5 #define LED5 PA6 #define LED6 PA7 #define MASA PA1 #define MASAP PD1 #define K1 PD2 #define K2 PD3 #define K3 PD4 #define K4 PD5 void main(void) { //Ustawienie pinów jako wyjścia DDRA |= (1<<LED1)|(1<<LED2)|(1<<LED3)|(1<<LED4)|(1<<LED5)|(1<<LED6)|(1<<MASA); DDRD |= (1<<MASAP); PORTA = PORTA &(1<<1); //Ustawienie stanu początkowego diod PORTA |=(1<<LED1); PORTA |=(1<<LED2); PORTA |=(1<<LED3); PORTA |=(1<<LED4); PORTA |=(1<<LED5); PORTA |=(1<<LED6); DDRD &= ~(1<<K1)|(1<<K2)|(1<<K3)|(1<<K4); PORTD |=(1<<K1)|(1<<K2)|(1<<K3)|(1<<K4); while (1) { if (!(PIND & (1<<K1))) { PORTA &=!(0<<LED1); PORTA &=!(0<<LED2); PORTA &=!(0<<LED3); PORTA &=!(0<<LED4); PORTA &=!(0<<LED5); PORTA &=!(0<<LED6); _delay_ms(10000); } if (!(PIND &(1<<K2))) { PORTA |=(1<<LED1); PORTA |=(1<<LED2); PORTA |=(1<<LED3); PORTA |=(1<<LED4); PORTA |=(1<<LED5); PORTA |=(1<<LED6); _delay_ms(10000); } } }
Wykorzystanie z płytkami stykowymi.
Dodaj komentarz
Musisz się zalogować, aby móc dodać komentarz.