Großer Bruder: Espressif ESP32

Seite 5: Blink-Programm

Inhaltsverzeichnis

Während es bei einem mit der Arduino-Oberfläche erstellten Programm recht einfach ist, eine LED mit den bekannten Funktionen blinken zu lassen, sieht dies bei einem direkt auf den Espressif SDK APIs aufsetzenden Programmcode zwar etwas komplizierter aus, bietet dabei aber deutlich mehr Möglichkeiten bei der Entwicklung. Wir haben dazu ein Projekt vorbereitet. Nachdem das Projekt in Eclipse eingebunden ist, sehen wir uns die Datei user_Main.c genauer an. Zunächst muss die gpio.h Header-Datei eingebunden werden, um auf die Funktionen für die Pins zugreifen zu können.

Einbinden der Header-Datei

Der GPIO wird in diesem Fall per GPIO_AS_OUTPUT(LED_PIN) und der Angabe des Pins (LED_PIN wird in der Datei include/user_config.h definiert) als Ausgang gesetzt und mit GPIO_OUTPUT_SET(LED_PIN, 1) auf High gesetzt und damit angeschaltet.

Um die LED tatsächlich im Intervall blinken zu lassen, benötigen wir die Funktion blinkIntervalTimer, die per ESP32-Software-Timer die Funktion blink in einer vordefinierten Zeitspanne (Variable: interval) aufruft.

Programmcode für das Blink-Programm unter Eclipse

Die Dokumentation zu den Espressif SDK APIs, auf denen dieses Beispiel aufsetzt, findet man im Github-Repository zum ESP32 freeRTOS SDK unter documents. Noch eine kleine Besonderheit bei diesem Projekt - zumindest zu dem Zeitpunkt des Tests der Eclipse-Umgebung: Die Bibliotheken unter ./Espressif/ESP32_RTOS_SDK/driver_lib mussten manuell eingebunden werden. Dies geschieht über den Eintrag #includegpio.h im Code von user_main_c. Und auch die Pfade im Makefile mussten angepasst werden.Dies geschieht in unserem Beispiel, indem man bei der Makefile-Variable EXTRA_INCDIR den Eintrag $(SDK_BASE)/driver_lib/include hinzugügt. Das stellt sicher, dass die zuvor inkludierte gpio.h auch gefunden werden kann. Falls also unerwartet Fehlermeldungen erzeugt werden, lohnt es sich immer zu schauen, ob auf die verwendeten Bibliotheken auch zugegriffen werden kann.