Jak zwykle bywa przy początkach programowania, pierwszym programem jest hello world, bądź migająca dioda, która zastępuje przywitanie się ze światem zewnętrznym. Jakiś czas temu przedstawiłem konfigurację programu netbeans do cross-compilation dla naszej malinki, natomiast tym razem przedstawię w jaki sposób napisać pierwszy program z poziomu komputera PC a uruchamianego na RPI. Zaczynamy…
W pierwszej kolejności musimy połączyć się z naszym urządzeniem – wybieramy z listy rozwijalnej adres naszego rpi, bądź konfigurujemy nowe połączenie (poprzez wybranie z listy Manage Hosts). Po wybraniu odpowiedniego adresu łączymy się poprzez wybranie ikonki monitora – przed połączeniem jest koloru czerwonego, natomiast po połączeniu przybiera kolor zielony. Kolejnym krokiem jest utworzenie nowego projektu – utworzymy go na RPI. Wybieramy więc Create Remote C/C++ Project i w nowym oknie wybieramy typ tworzonego projektu. U nas będzie to typ Aplikacji w języku C/C++. Po wybrani przechodzimy dalej, do ustawień takich jak, nazwa projektu, lokalizacja projektu (warto ją zapamiętać/zapisać bo będzie później ona nam potrzebna w celu wywołania programu). W większości zostawiamy wszystko domyślnie.
Po zakończeniu konfiguracji mamy już wstępnie utworzony projekt, wraz z programem main.c. Aby otworzyć główny plik programu w drzewie projektów wybieramy utworzony wcześniej projekt, następnie przechodzimy do Source Files i rozwijamy go. Tutaj znajdować się będą wszystko pliki źródłowego dołączane do naszego projektu. Otwieramy plik main.c. Jest on już wstępnie wypełniony. Dołączone są podstawowe pliki nagłówkowe – standardowa biblioteka, oraz biblioteka obsługi wejść i wyjść. W pliku tym znajduje się również pierwsza struktura programu – w niej się wszystko dzieje ;). W funkcji main, przed return wpiszemy pierwszy program, który spowoduje wyświetlenie w konsoli hello world. Dopisujemy więc:
printf("Hello World\n");
printf powoduje wyświetlenie tekstu który znajduje się w nawiasach. Tak więc nasz program będzie wyglądał tak:
int main(int argc, char** argv){
printf("Hello World!\n");
return (EXIT_SUCCESS);
}
Po wpisaniu kodu wybieramy typ kompilacji – na początku proponuję pracować na DEBUG. Następnie budujemy (kompilujemy) nasz program, poprzez wybranie Build Project (nazwa naszego projektu). W oknie na samym dole programu netbeans, widzimy przebieg kompilacja. Tutaj również znajdują się informacje o ewentualnych błędach – errory i warningi. Po prawidłowo skompilowanym programie przyszła pora na uruchomienie naszego programu – przetestowanie go. Możemy to zrobić bez logowania się do rpi, poprzez wybranie opcji Run Project. Po uruchomieniu programu, w dolnej części netbeans pojawi się terminal połączony z RPI – w nim zobaczymy rezultat uruchomionego programu. HELLO WORLD!!
Gratuluję – mamy pierwszy program skompilowany i uruchomiony na naszej malince. Ale zaraz, zaraz – na razie uruchomiliśmy go z terminala naszego IDE. Przejdźmy więc do putty i połączmy się z naszą malinką. Następnie wpiszmy cd /home/pi…. (tutaj pełny adres katalogu gdzie zapisał się nasz projekt)… Niestety musimy znaleźć gdzie nasz plik się znajduje. Poniżej adres gdzie znajdował się mój program, wg niego dopasujcie swoją ścieżkę:
cd RPI/T01_HelloWorld/dist/Debug/GNU-Linux/
Aby uruchomić nasz program wpisujemy:
./t01_helloworld
Jest to nazwa pliku związana z nazwą naszego projektu. Tym oznaczeniem ./ powodujemy wykonanie naszego programu. Po wykonaniu tego polecenia zobaczymy kolejne przywitanie się z światem.
Teraz zwiększmy nasz program o następującą linijki:
char dane[] = "danielo88.cba.pl";
printf("\n\rOdwiedzajcie %s\n\r", dane);
Spowodują one wyświetlenie dodatkowego ciągu znaków, wykorzystując tablicę znaków char, oraz przepisanie/dodanie znaków z tej tablicy do ciągu znaków znajdujących się w printf.
Poniżej jak powinien wyglądać cały kod. Dodałem również w nim miganie diodą co 1s, przy wykorzystaniu biblioteki wiringpi (tutaj link). Niestety projekt ten został zakończony poprzez malkonentów, którzy zniechęcili autora tej biblioteki. Nie będę na chwilę obecną przedstawiał jak się tą biblioteką obsługuje wejścia i wyjścia – na to poświęcę osobny wpis. Chciałem jedynie pokazać jak wygląda wysterowywanie wyjść w rpi. Jeżeli chcecie możecie sami spróbować dodać ta bibliotekę do rpi, oraz do IDE – wszystkie niezbędne informacje znajdują się na stronie autora projektu.
#include <stdio.h>
#include <stdlib.h>
#include "wiringPi.h"
int main(int argc, char** argv){
//konfigiracja
pinMode(24,OUTPUT);
//program
printf("Hello World!\n");
digitalWrite(24,1); //wpisz do pinu 24 - 1 logiczne
delay(1000); //opóźnienie 1000ms
digitalWrite(24,0); //wpisz do pinu 24 - 0 logiczne
delay(1000); //opóźnienie 1000ms
char dane[] = "danielo88.cba.pl";
printf("\n\rOdwiedzajcie %s\n\r", dane);
return (EXIT_SUCCESS);
}

Tak więc po uruchomieniu programu mamy wyświetloną drugą linijkę, oraz w przypadku jeżeli udało Ci się dołączyć wiringPi do projektu, to również dioda będzie Ci migać.
Mam nadzieję, że udało mi się w prosty sposób pokazać pierwsze kroki w pisaniu programu na rpi, oraz jego uruchamianie. Jeżeli w jakimś miejscu popełniłem błędy proszę o wyrozumiałość i napisanie w komentarzu gdzie znalazłeś błąd.