Jak się uczyć programowania? Najlepiej czytać kod innych programów. Starać się zrozumieć co robi każda linia. Zmieniać fragmenty programów i badać co się zmieniło w ich działaniu. Oprócz nauki programowania takie podejście w niezwykły sposób rozwija inteligencję.
Jak pisać własne programy? Zacznij od napisania najprostszej funkcji programu. Potem sprawdź, czy ta funkcja dobrze działa. Jeśli tak, to dopisz kolejne. Rozwijanie programu to dobra zabawa i dużo satysfakcji.
Podczas pisania programu nie martw się błędami. One zdarzają się zawsze. Ważne, żeby wyciągać z nich wnioski. Podobno profesjonalista to ten, który popełnił wystarczająco dużo błędów ;-).
Lepsze sterowanie lampką
We wcześniejszym artykule pokazałem tobie jak sterować wbudowaną w Arduino lampką "L".
Twój pierwszy program na Akademia Nettigo
Teraz rozwinę jej program tak, aby świeciła, gdy wydasz jej takie polecenie za pomocą komputera.
void setup() {
Serial.begin(9600);
Serial.setTimeout(0);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
if (Serial.available())
{
int numberFromComputer = Serial.parseInt();
if (numberFromComputer == 0) {
digitalWrite(LED_BUILTIN, LOW);
Serial.println("OFF");
}
else {
digitalWrite(LED_BUILTIN, HIGH);
Serial.println("ON");
}
}
}
Po wgraniu programu na płytkę, otwierasz "Monitor portu szeregowego". Jeśli nie wiesz jak, zajrzyj do artykułu opisującego Arduino IDE.
Opis Arduino IDE na Akademia Nettigo
Wpisz teraz w pole tekstowe cyfrę 1 i wyślij do Arduino. Wpisując 0 reakcja będzie odwrotna.
Opis funkcji setup
W części konfiguracyjnej "setup" włączam komunikację z komputerem na prędkość 9600 bodów. Ustawiam czas oczekiwania na polecenie na 0. Ustawiam pin lampki "L" jako wyjście.
Znaczenie nowych zaklęć:
- Serial.begin [ang. Port szeregowy.rozpocznij]
- Serial.setTimeout [ang. Port szeregowy.ustaw czas oczekiwania]
Opis funkcji loop
W pętli programu "loop" odbieram dane z komputera i włączam lub wyłączam lampkę w zależności od tego co odebrałem.
Znaczenie nowych zaklęć:
- if [ang. czy?]
- Serial.available [ang. Port szeregowy.czy coś odebrano?]
- int [ang. skrót od "Integger" - liczba całkowita (wszystkie liczby ujemne i dodatnie bez ułamków)]
- numberFromComputer [ang. numer z komputera]
- Serial.parseInt [ang. Port szeregowy.przetwórz liczbę całkowitą]
- Serial.println [ang. Port szeregowy.drukuj linię]
- else [ang. w przeciwnym przypadku]
Algorytm w "loop" działa tak:
- Czy odebrałem dane z komputera?
- Jeśli tak, to przetwórz je na liczbę całkowitą i zapamiętaj w zmiennej.
- Czy ta liczba to 0?
- Jeśli tak to wyłącz lampkę i wyślij do komputera napis "OFF" [ang. WYŁĄCZONA].
- W przeciwnym przypadku włącz lampkę i wyślij do komputera napis "ON" [ang. WŁĄCZONA].