Micro:bit – programowanie z wykorzystaniem Arduino IDE
Przejdę teraz do opracowania programu zgodnie z powyższymi założeniami (pełen kod programu można znaleźć w sekcji do pobrania na dole strony). Na początek deklaruję nazwy LED_CZERWONA oraz LED_ZIELONA, do których przypisane są numery pinów połączonych z odpowiednimi diodami.
//Micro:bit - programowanie z wykorzystaniem Arduino IDE // Program 1 //Autor: Patryk Mądry //Mikrokontroler 2018 r. int LED_CZERWONA = 0; int LED_ZIELONA = 1;
Następnie w funkcji setup() został umieszczony kod, który określa role pinów połączonych z diodami. Piny te powinny być ustawione jako wyjścia.
void setup() { pinMode(LED_CZERWONA, OUTPUT); pinMode(LED_ZIELONA, OUTPUT); }
W pętli głównej programu (loop()) znajduje się kod, który najpierw zapala diodę czerwoną i gasi diodę zieloną, a następnie, po opóźnieniu o wartości 1 sekundy, dioda czerwona jest gaszona, natomiast dioda zielona jest zapalana. Następnie znowu następuje 1-sekundowe opóźnienie i program jest powtarzany od początku.
void loop() { digitalWrite(LED_CZERWONA,HIGH); digitalWrite(LED_ZIELONA,LOW); delay(1000); digitalWrite(LED_CZERWONA,LOW); digitalWrite(LED_ZIELONA,HIGH); delay(1000); }
W drugim programie wykorzystano przyciski A oraz B umieszczone na płytce micro:bit do zapalania lub gaszenia diod LED.
Wciśnięcie przycisku A powoduje zapalenie diody czerwonej, natomiast przyciśnięcie przycisku B powolne zapalanie diody zielonej (pełen kod programu można znaleźć w sekcji do pobrania na dole strony).
Na początku programu należy dodać deklaracje pinów, do których podłączone są przyciski (Przycisk A – pin 5, przycisk B – pin 11)
//Micro:bit - programowanie z wykorzystaniem Arduino IDE //Program 2 //Autor: Patryk Mądry //Mikrokontroler 2018 r. int LED_CZERWONA = 0; int LED_ZIELONA = 1; int PRZYCISK_A = 5; int PRZYCISK_B = 11;
W funkcji konfiguracyjnej setup(), oprócz ustawiania pinów do których podłączone są diody LED jako wyjścia, powinny znaleźć się również definicje pinów, do których podłączone są przyciski A i B jako wejścia cyfrowe.
void setup() { pinMode(LED_CZERWONA, OUTPUT); pinMode(LED_ZIELONA, OUTPUT); pinMode(PRZYCISK_A, INPUT); pinMode(PRZYCISK_B, INPUT); }
W pętli głównej programu (loop()) sprawdzany jest stan przycisku A. Jeżeli jest on wciśnięty (na pinie 5 pojawił się stan niski), zostaje zapalona dioda czerwona, która świeci do momentu puszczenia przycisku. Wciśnięcie przycisku B spowoduje uruchomienie pętli for, w której jest zawarty kod zmieniający jasność diody zielonej od pełnego zgaszenia do najjaśniejszego zapalenia. Do tego celu wykorzystywany jest sygnał PWM generowany na pinie 2, poprzez użycie funkcji analogWrite. Po wykonaniu tej pętli, dioda zielona jest z powrotem gaszona.
void loop() { if( digitalRead(PRZYCISK_A)== LOW) { digitalWrite(LED_CZERWONA,HIGH); } else { digitalWrite(LED_CZERWONA,LOW); } if( digitalRead(PRZYCISK_B)== LOW) { for(int i=0;i<255; i++) { analogWrite(LED_ZIELONA,i); delay(10); } } digitalWrite(LED_ZIELONA,LOW); }
Działanie obu programów zostało przestawione na poniższym filmie:
Źródła:
- http://microbit.org/images/microbit-pins.jpg, dostęp: 12.03.2018 r.