In diesem Beitrag möchte ich dir zeigen, wie du LEDs am Mikrocontroller ESP32-C3 mit LuatOS System programmieren kannst.
Im letzten Beitrag ESP32-C3 mit LuatOS System und im neuen YouTube Video ESP32-C3 mit LuatOS System programmieren habe ich dir gezeigt, wie du ein einfaches “Hello World!” auf der seriellen Schnittstelle ausgibst.
Hier soll es nun darum gehen, wie du eine LED über die vorhandenen GPIO Pins steuerst.
Mikrocontroller ESP32-C3 mit LuatOS System
In diesem Beitrag verwende ich den bereits vorgestellten ESP32-C3 mit LuatOS System.
Bezug
Den mir vorliegenden Mikrocontroller habe ich recht günstig über aliexpress.com für knapp 4 € inkl. Versandkosten erworben. Derzeit (stand 08.08.2022) habe ich leider keine andere Quelle für einen solchen Mikrocontroller gefunden.
Benötigte Ressourcen für den Nachbau
Wenn du die nachfolgenden kleinen Beispiele nachbauen möchtest, dann benötigst du folgende Ressourcen:
- einen ESP32-C3 mit LuatOS System,
- ein USB-C Datenkabel,
- drei, 5 mm, LEDs (rot, gelb, grün),
- drei 220 Ohm Widerstände,
- ein 170 Pin Breadboard, sowie
- diverse Breadboardkabel, 10 cm, männlich-männlich
Tools für die Programmierung und den Upload des Programmes
Des Weiteren benötigst du die Software Visual Studio Code für die Programmierung sowie die LuatTools für den Upload des Programmes.
Pinout des ESP32-C3
Für den Aufbau der Schaltung benötigen noch das Pinout des Mikrocontrollers, welches ich dir hier gerne zeigen möchte.
Die Grafik habe ich von der Wiki-Seite https://wiki.luatos.com/chips/esp32c3/board.html entnommen. Auf dieser Seite findest du noch weitere Informationen zu den Pins und Features des Mikrocontrollers.
Auf der Seite https://wiki.luatos.com/_static/bom/esp32c3.html findest du eine interaktive Sicht auf den hier verwendeten Mikrocontroller.
Programmieren einer LED am GPIO Pin des ESP32-C3 mit LuatOS System
Kommen wir jetzt zum eigentlichen Thema, dem Programmieren einer LED am ESP32-C3. Ich gehe in diesem Abschnitt davon aus, dass bei dir die Anwendung Visual Studio Code und die LuatTools installiert und lauffähig sind.
In diesem Video erläutere ich dir, wie du die Schaltung aufbaust und programmierst. Dieses Mal in englischer Sprache. Das Ganze war ein Wunsch einiger meiner Follower auf Instagram, ich hoffe somit einige mehr mit meinem Content zu erreichen.
Aufbau der Schaltung
Als Erstes wollen wir eine 5 mm LED an den GPIO0 des Mikrocontrollers anschließen, dafür benötigen wir neben der besagten LED noch einen Vorwiderstand von 220 Ohm, 2 Breadboardkabel sowie ein 170 Pin Breadboard.
Programmieren in Visual Studio Code
Erstellen wir im zweiten Schritt nun das kleine Programm, um die 5 mm LED zum Blinken zu bringen.
PROJECT = "LED" VERSION = "0.1" sys = require("sys") led = gpio.setup(0,0,gpio.PULLUP) local state = false sys.timerLoopStart(function() led(state and 0 or 1) log.info("led", state) state = not state end,500) sys.run()
Nachdem wir nun eine LED zum Blinken gebracht haben, schließen wir eine weitere an und steuern diese im gleichen Intervall wie die Erste. Dazu müssen wir lediglich die neue LED initialisieren und in der Timer-Funktion den gleichen Status zuweisen.
PROJECT = "LED blink" VERSION = "0.1" sys = require"sys" led_red = gpio.setup(0,0,gpio.PULLUP) led_blue = gpio.setup(1,0,gpio.PULLUP) local state = false sys.timerLoopStart(function() led_red(state and 0 or 1) led_blue(state and 0 or 1) state = not state log.info("led status = ", state) end, 250) sys.run()
Abschließen möchte ich damit, die beiden LEDs im wechsel blinken zu lassen, dafür benötigen ein zusätzliches Statusfeld. Dieses Statusfeld initialisieren wir mit “true” und haben somit unser Wechsel blinken erzeugt.
PROJECT = "LED blink" VERSION = "0.1" sys = require"sys" led_red = gpio.setup(0,0,gpio.PULLUP) led_blue = gpio.setup(1,0,gpio.PULLUP) local state_red = false local state_blue = true sys.timerLoopStart(function() led_red(state_red and 0 or 1) led_blue(state_blue and 0 or 1) state_red = not state_red state_blue = not state_blue log.info("red led status = ", state_red) log.info("blue led status = ", state_blue) end, 250) sys.run()