2024
|
|
Mit Zehn Zeilen Zum Ziel - Scripting on ESP32 |
|
TestBildUhr auf CYD ESP32-2432S028R
espScript32 für ESP32, ESP32-S2, ESP32-C3 und ESP32-S3
|
Seit Mitte '24 funktioniert die Skriptsprache vom RP2040 und dem ESP8266 auch auf den aktuellen ESP32-Varianten. Das Cheap Yellow Display mit seinem ESP32 Wroom wird mit Bild und Touch unterstützt.
Ziel dieser Sprache ist es mit wenigen Programm-Zeilen eine gestellte Aufgabe schnell zu lösen. Durch die verschiedenen eingebauten Bibliotheken reicht schon eine Zeile, um z. B. auf dieses Display zu schreiben: tft.print("Hallo Welt."). Doch nun zu dieser gestellten Aufgabe: Ein nostaliges Testbild mit laufender Zeitanzeige.
Dank der Internetanbindung zeigt das Testbild die aktuelle Uhrzeit sekundengenau, es erinnert so an Zeiten, als es am Nachmittag noch solche Ausstrahlungen im analogen Fernsehen gab. Die technische Realisierung erfolgt in diesen zehn Zeilen:
1
2
3
4
5
6
7
8
9
10 | tft.rotation(1)
tft.text.font(3)
tft.cls()
tft.bmp("/uploads/testbild.jpg")
tft.text.color(-1,0,1)
while true
tft.text.cursor(320/2-tft.text.width("00:00:00")/2,240/2+3)
tft.print(time("time"))
pause 1000
wend
|
Das Bild im JPG-Format 320*240 ist vorher über das File-Menü zum ESP hochgeladen worden. Auch die geglättete Schrift #3 aus der rechten Vergrößerung, liegt unter dem Namen /uploads/NotoSansBold15.vlw in diesem Verzeichnis. Sie stammt aus der Bibliothek TFT_eSPI und lag hinter diesem Link: TFT_eSPI/ examples/ Smooth Fonts/.../ Font_Demo_1/ data...
Ton und Licht hinzufügen
Das nachfolgende geringfügig längere Programm
- dimmt die rote LED langsam mit dem Verstreichen der Minute
- lässt alle drei RGB-LED 5 Sekunden vor der vollen Stunde blitzen
- legt an Pin 22 einen 1 kHz/100 ms Pip, der mit einem Piezo-Buzzer die Blitze unterstützt
GPIO22 ist am CYD am äußeren Steckanschluss zugänglich. Bei mitgelieferter Buchsen-Dupont-Adapter liegt der Buzzer an Gelb und Schwarz. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 | tft.rotation(1)
tft.text.font(3)
tft.cls()
tft.bmp("/uploads/testbild.jpg")
tft.text.color(-1,0,1)
while true
tft.text.cursor(320/2-tft.text.width("00:00:00")/2,240/2+3)
tft.print(time("time"))
pwmout 4,map(val(time("sec")),0,59,0,255)
if time("min:sec") > "59:54" then gosub flash
pause 1000
wend
flash:
pinout 4,0
pinout 16,0
pinout 17,0
tone 22,1000,100
pinout 4,1
pinout 16,1
pinout 17,1
return
|
Mit dem eingebauten Lautsprecher-Verstärker des CYD können auch kaum überhörbare PiPs ausgegeben werden. Der ebenfalls im ESP32 vorhandene DAC liefert das Signal mit dem Kommando DacGen 1000. bzw DacGen 0. Die Verbindung DAC-Ausgang zum Verstärker-Eingang ist auf dem gelben Board fest verschaltet.
|
Hinweise
|
Diese Skriptsprache basiert auf dem von Michael Moulinari (mmiscool) auf esp8266basic.com veröffentlichten und beschriebenen Original und ist dazu in hohem Maße kompatibel. Erstellt und erweitert von H. Berndt ab 2024 mittels Arduino IDE 2.1.0 und ESP-Core 2.0.11 und den in der Referenz angegebenen eingebundenen Bibliotheken.
DS18B20, DHT, WS2812, IR, Servo, Stepper, OLED-SD1306, LCD1602, BME280, ADS1115, MCP4725, MAX7219, SD, MCP410xx, AD9833, SX12xx, TFT-ILI9341, USB-HID, BLE, GPIO, ADC, DAC, PWM UART, I2C, SPI, UDP, HTTP, WIFI, Telnet, Thingspeak, Openweather, MQTT, Messenger
|
|
Die in 2015 publizierte Sprache für den ESP8266 wurde 2017 im rechts dargestellten Buch erläutert und angewendet. In 2023 erfolgte die Portierung mit eigener Feder dieser Sprache auf den Raspberry Pi Pico W mit dem RP2040 Mikrocontroller, nachdem mit der Skriptsprache MicroPython zuvor die Vorzüge dieses Bausteins beschrieben wurden. Nachdem ein altes heltec wifi-kit-32 nach jahrelangem Brownout-Koma wieder erwacht ist, begann der Versuch der Portierung und Erweiterung für die ESP32-Familie. Alle drei Varianten benutzen den selben Kern.
|
|
|
espScript32**
Mehr Software
|