sitemap link mailform link home

GPIO programmieren in C

Beitrag vom 18.1.2016

Wir wollen nun ein kleines C-Programm schreiben, das unsere LED am GPIO-Pin 11 (physisch) bzw. am wiringPi-Port 0 blinken lässt.

Dazu wollen wir die Entwicklungsumgebung Externer Link Code::Blocks nutzen.

Die Entwicklungsumgebung Code::Blocks ist viel mehr als nur ein einfacher Texteditor, mit dem man C/C++-Programme schreiben kann. Die Verwaltung komplexer Programmierprojekte wird erheblich vereinfacht und eine Vielzahl von Compilern für die verschiedensten Programmiersprachen lassen sich einbinden.

1. Code::Blocks installieren

Anm.: Die Bibliothek wiringPi sollte bereits installiert sein!

Wir öffnen LXTerminal (Konsole)

LXTerminal

Bevor man etwas installiert, wird immer ein Raspbian-Update durchgeführt.
Dazu gibt man in der Konsole (LXTerminal) den Befehl sudo apt-get update ein:

  pi@raspberrypi: ~ $ sudo apt update                               

  pi@raspberrypi: ~ $ sudo apt upgrade                               

Code::Blocks herunterladen und installieren:

  pi@raspberrypi: ~ $ sudo apt install codeblocks            

Code::Blocks mir Root-Rechten starten (sonst blinkt es später nicht):

  pi@raspberrypi: ~ $ sudo codeblocks                                 

Code::Blocks öffnet sich:

CodeBlocks

Wir wählen File - New -Project:

CodeBlocks

Wir wählen Console application:

CodeBlocks

Hier einfach Next klicken:

CodeBlocks

Als Programmiersprache wählen wir C:

CodeBlocks

Num müssen wir einen Projekttitel eingeben und einen Projekt-Ordner auswählen oder anlegen:

CodeBlocks

Hier muss nichts geändert werden, sofern der GNU GCC Compiler sichtbar ist:

CodeBlocks

Mit einem Klick auf Finish wird ein Projekt-Baum BlinkLED1 angelegt, der bereits eine Datei main.c enthält. Das übliche Hello-World-Programm ist bereits vorbereitet:

CodeBlocks

Falls bei "Build and Run" die Fehlermeldung 255 erscheint, dann fehlt xterm und muss installiert werden:

  pi@raspberrypi: ~ $ sudo apt install xterm                          

 

Da wir die Bibliothek wiringPi verwenden wollen, müssen wir noch die Compiler-Optionen bearbeiten:

CodeBlocks

Unter Other linker options tragen wir ein -lwiringPi:

CodeBlocks

Nun können wir das Hello-World-Programm in main.c so modifizieren, dass die LED eingeschaltet wird. Zuerst ergänzen wir oben #include wiringPi.h . (Achtung: Die Klammern können aus technischen Gründen nicht dargestellt werden).

Dann schreiben wir innerhalb der geschweiften Klammern wiringPiSetup();
-> Semikolon am Zeilenende nicht vergessen!

Dabei sehen wir bereits, dass uns Code::Blocks bei der richtigen Schreibweise hilft und die korrekten Befehle anbietet:

CodeBlocks

Tippen Sie die noch fehlenden Zeilen bitte ab und speichern Sie einmal über File - Save file.

Dann klicken Sie bitte auf Build and run:

CodeBlocks

Die LED an Pin 11 (physisch) des GPIO sollte nun leuchten.

Dafür sorgt der Befehl digitalWrite(0, 1).

Die NULL bedeutet Pin 11 (physisch) nach der Logik der Bibliothek wiringPi.

Die EINS ist eine logische EINS und bedeutet Strom an für die LED.

Die Pinbelegung ist etwas verwirrend. Siehe auch den Abschnitt GPIO programmieren in C (Konsole). Da kann man im Screenshot: GPIO READALL die verschiedenen Bezeichnungen und Nummerierungen der GPIO-Pins vergleichen.

 

Nun wollen wir aber die LED tatsächlich blinken lassen. Dazu muss der Programmcode folgendermaßen ergänzt werden:

CodeBlocks

Danach wieder Build and run klicken:

CodeBlocks

Jetzt sollte die LED sehr schnell insgesamt 100 Mal blinken.

.

Letzte Änderung:
March 23. 2023 21:04:40
«    top    »