[Kurs] Programowanie w C/C++ (Arduino) #2

W poprzednim artykule omówiliśmy instalację i uruchamianie środowiska, natomiast w tej części kursu omówiony zostanie sam język C, zagadnienia związane z programowaniem oraz stworzymy i opiszemy pierwszy program dla Arduino. Zapraszam!

poprzednia część  «-» kolejna część ⇒

>>> Kursy www.MechatroBot.pl <<<

Język C – podstawowa wiedza

Rozpocznijmy od wstępnej wiedzy na temat podstawowych i (zazwyczaj) niezbędnych do programowania elementów używanych w języku C oraz struktury programu.

baner11

Komentarze

Czym są i po co są komentarze? Otóż jest to źródło informacji na temat samego programu. Z komentarzy korzystać będziesz Ty sam, jak i osoby pracujące z programem. Komentarz blokowy umieszcza się między sekwencją znaków „/*” a „*/”, a komentarz liniowy rozpoczyna się sekwencją „//” a kończy znakiem końca linii.


/* To jest komentarz
blokowy */

// to jest komentarz liniowy ...Przykład:
#define ledpin 8 /*w tym komentarzu wpisujesz przydatne informacje, np. "czerwona Dioda na pinie nr 8" */

Struktura programu


W przypadku Arduino program podzieliłbym na 3 części: Wstęp, sekwencje startowe (void setup), rozwinięcie: właściwe zadanie (void loop)

//podstawowe ustawienia, zmienne itp.
void setup() {
//Instrukcje, które wykonają się jeden raz
/* Tutaj możesz np. ustawić czy dany pin ma być wyjściem (generować sygnał) czy
też wejściem - sygnał odbierać */
// Tutaj umieszczasz także sekwencje startowe - np. włączenie świateł }
void loop() {
//Instrukcje, które będą wykonywały się w koło (w pętli)
/* Tutaj umieszczasz właściwy program, który po zakończeniu będzie się
uruchamiał ponownie  */
}

W praktyce wstęp to będą definicje, tworzenie zmiennych globalnych (dla całego programu) itp., funkcja void setup będzie zawierała ustawienia dotyczące np. pinów (czy ma być wejście, wyjściem…) oraz sekwencje startowe np. (w przypadku robota) ustawienie się w odpowiedniej pozycji, uruchomienie świateł i odtworzenie dźwięku powitalnego.

W kolejnej funkcji (void loop) znajdzie się właściwy program – czyli to ca ma wykonywać się przez cały czas (w pętli). Na razie może się to wydawać trudne aczkolwiek po wykonaniu kilku praktycznych zadań powinieneś wszystko zrozumieć.

Funkcje – czyli podstawa programowania?

Funkcje możesz napisać samodzielnie, aczkolwiek (jak to zwykle bywa) istnieje również inna prostsza możliwość – skorzystać z gotowych funkcji udostępnionych przez producentów. W tym kursie będziemy korzystać z  funkcji dostarczanych w bibliotekach razem z Arduino IDE.

Dla nas jest to wygodne, ponieważ raz zadeklarowaną funkcję możemy wywoływać dowolną ilość razy bez żmudnego powielania tych samych linii kodu – wystarczy nazwa funkcji. Funkcje mają dodatkowo określony typ – czyli wynik, a właściwie rodzaj wyniku. Może to być liczba, znak lub coś jeszcze innego.

—————————————————————

Funkcja (procedura) loop jest pętlą nieskończoną. Znajdują się w niej instrukcje, które powinny wykonywać się bez przerwy.

 

Zapamiętaj! Po każdym rozkazie umieszczamy średnik „;”!

Inne przydatne funkcje

W tym przypadku pozwolę sobie (na razie) nie opisywać dokładniej każdej z funkcji natomiast umieszczam linki do ich opisu na oficjalnej stronie Arduino.cc

Wszystkie funkcje zostaną zastosowane i opisane w praktyce jeszcze w tym artykule tak więc nie musisz na razie ich poznawać.

Zmienne

Mini-komputery, a szczególnie Arduino mają mało pamięci. Wymyślono więc różne rodzaje zmiennych liczbowych. Przechowują różne zakresy liczb, im mniejszy, tym mniej zajmuje pamięci.

  • int – przechowuje liczby od -32768 do 32767, zajmuje 2 bajty pamięci
  • word – przechowuje liczby od 0 do 65535, zajmuje 2 bajty pamięci
  • byte – przechowuje liczby od 0 do 255, zajmuje 1 bajt pamięci
  • char – przechowuje liczby od -128 do 127, zajmuje 1 bajt pamięci
  • long – przechowuje liczby od -2 milionów do 2 milionów, zajmuje 4 bajty pamięci
  • unsigned long – przechowuje liczby od 0 do 4 milionów, zajmuje 4 bajty pamięci

Po co nam zmienne? Ten przykład dobrze to obrazuje:

int przyklad = 1;
...
digitalWrite(przyklad, HIGH);
delay(200);
digitalWrite(przyklad, LOW);
...

O co chodzi? Przy kompilacji program zastępuje wszystkie słowa przyklad (przykładowa nazwa zmiennej) na cyfrę 1. Dzięki temu, jeżeli nagle będziemy chcieli zmienić pin z 1 na 4, nie będziemy musieli edytować połowy kodu a tylko jedną cyfrę na początku. Takie coś nazywamy zmienną globalną, czyli taką, która istnieje od początku, do końca funkcjonowania programu. Skoro już tyle wiemy, przejdźmy do prawdziwej praktyki!

Pierwszy program

Teraz po tak długim wstępie teoretycznym jesteśmy w stanie napisać nasz pierwszy prawdziwy program dla Arduino. Wgrywać program już umiemy więc opisywać tego nie będę dodam tylko, że do zobaczenia efektu działania tego kodu nie potrzebujemy dosłownie niczego – steruje on bowim diodą, która jest już wbudowana w Arduino na pinie 13:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
/*Komentarz: program sterujący diodą LED wbudowaną w Arduino na pinie 13.
Więcej informacji na >> http://www.mechatrobot.pl << */

int led = 13; /* definiujemy zmienną "led" dla pinu 13, czyli przypisujemy 
pinowi 13 nazwę "led" */

void setup() {
pinMode(led, OUTPUT); //Konfiguracja pinu 8 jako wyjście
}

void loop() {
  digitalWrite(led, HIGH); //Włączenie diody na pinie 13
  delay(1000); //Odczekanie 1 sekundy - "delay" = opóźnienie
  digitalWrite(led, LOW); //Wyłączenie diody
  delay(1000); //Odczekanie jednej sekundy
//void loop to pętla - program będzie się restartował w nieskończoność
}

baner11

Zakończenie + podsumowanie

Mam nadzieję, że ten poradnik pomoże Wam wejść w świat programowania i ułatwi poznanie podstaw języka C. Dzielcie się swoimi przemyśleniami, doświadczeniami oraz uwagami w komentarzach – to bardzo motywuje 😀

Oczywiście czekam również na krytykę, która pomoże mi w przygotowaniu kolejnej części, w której to zaczniemy zajmować się bezpośrednią komunikacją z komputerem z wykorzystaniem serial portu oraz poznamy ciekawe przykłady zastosowań Arduino.

Polecam zajrzeć również na oficjalną stronę Arduino gdzie znajdziecie bardzo dużo przykładów i przydatnych informacji na temat języka C https://www.arduino.cc/en/Reference/HomePage 

 

poprzednia część  «-» kolejna część 

>>> Kursy www.MechatroBot.pl <<<

 

 

Karol Wojsław

Karol Wojsław -- licealista, założyciel i redaktor Mechatrobot.pl. Interesuje się robotyką i elektroniką oraz informatyką. Z racji swojego wieku nie ma ogromnej wiedzy, ale wytrwale dąży do tego, aby artykuły, które publikuje były coraz lepsze.