M5 Atom Einführung

eine weitere Bastelseite ....

M5 Atom Einführung

20. Januar 2024 Arduino 0

Eine kleine Einführung, die für den M5AtomEcho , die dir zeigen soll wie man die LED des M5AtomEchos ansteuert. Nach dem Lesen wirst du in der Lage sein die LED des M5AtomEchos so zu ändern und den Knopf auszulesen.

Der M5AtomEcho

Der M5 Atom Echo ist ein kompaktes ESP32-Entwicklungsboard mit integriertem Bluetooth-Support, Mikrofon, Lautsprecher und einer RGB-LED (SK6812). Mit 2.4G Wi-Fi IEEE 802.11b/g/n und 4 MB Flash-Speicher bietet es vielseitige Möglichkeiten für Projekte. Allerdings kann die Programmierung aufgrund unzureichender Dokumentation und komplexer Pinbelegung herausfordernd sein. Trotzdem bietet es großes Potenzial für IoT- und Audioanwendungen aufgrund seiner handlichen Größe und umfangreichen Funktionen.

RGB-LED ansteuern

Um die RGB-LED (SK6812) auf dem M5 Atom Echo zu steuern, gibt es verschiedene Ansätze, wobei die Nutzung der M5Atom-Bibliothek von M5Stack eine besonders einfache und effektive Methode darstellt. Diese Bibliothek bietet die Funktion dis.fillpix, um die LED, die als NeoPixel erkannt wird, in einer gewünschten Farbe leuchten zu lassen. Hier ein Beispiel, wie das funktioniert:

#include <M5Atom.h>

void setup() {
  M5.begin(true, false, true);  // Initialisiert den M5 Atom
  M5.dis.fillpix(0xFFFF00);     // Setzt die LED-Farbe auf Gelb
                                // Die Farbe wird als Hexadezimalwert angegeben, wobei 0xFFFF00 für Gelb steht
}

void loop() {
  // Da keine weiteren Aktionen definiert sind, bleibt die LED auf Gelb
}

Das Programm beginnt mit dem Einbinden der M5Atom-Bibliothek, gefolgt von einem Aufruf der M5.begin() Funktion. Dies ist der wichtige Initialisierungsschritt der M5Atom-Bibliothek. Der entscheidende Teil ist die Verwendung der Funktion dis.fillpix, die ursprünglich dafür gedacht ist, einem Display eine einheitliche Farbe zu geben. Da der M5 Atom Echo jedoch über kein richtiges Display, sondern nur über eine einzelne LED verfügt, wird diese Funktion angepasst, um die Farbe dieser LED zu ändern. In unserem Beispiel wird die LED gelb leuchten.

Es ist zu beachten, dass wenn man ein anderes M5-Gerät mit einem tatsächlichen Display verwendet, die Funktion dis.fillpix anders angewendet werden sollte, da sie in diesem Kontext das gesamte Display in einer Farbe beleuchtet.

M5 Knopf

Der M5 besitzt auch einen Knopf (Button), diesen wollen wir nun mit der M5Atom Bibliothek auslesen.

#include <M5Atom.h>

void setup() {
  M5.begin(true, false, true); // Initialisiert den M5 Atom
  M5.dis.fillpix(0xFFFF00);    // Setzt die LED-Farbe auf Gelb
}

void loop() {
  if (M5.Btn.isPressed()) {
    M5.dis.fillpix(0x0000FF); // Setzt die LED-Farbe auf Blau, wenn der Button gedrückt wird
  } else {
    M5.dis.fillpix(0xFFFF00); // Setzt die LED-Farbe zurück auf Gelb, wenn der Button nicht gedrückt ist
  }

  M5.update(); // Aktualisiert den Button-Status
}

In der M5-Bibliothek gibt’s nützliche Funktionen für den Button. M5.Btn.isPressed() prüft, ob der Button gerade gedrückt ist – praktisch für dauerhafte Eingaben. M5.Btn.isReleased() ist das Gegenteil, die sagt dir, ob der Button gerade losgelassen wurde. Und dann gibt’s noch solche wie M5.Btn.wasPressed(), die merkt sich, ob der Button seit dem letzten M5.update() mal gedrückt wurde. Gut für einmalige Aktionen.

Regenbogen mit dis.drawpix

In diesem Beispielprogramm nutzen wir die Funktion M5.dis.drawpix, um die LED des M5 Atom Echo in Regenbogenfarben leuchten zu lassen.

#include <M5Atom.h>

void setup() {
  M5.begin(true, false, true); // Initialisiert den M5 Atom
  M5.dis.drawpix(0, CRGB(128, 128, 0)); // Setzt die LED-Farbe auf Gelb
}

void loop() {
  for (int hue = 0; hue < 360; hue++) {
    // Erzeugt eine Farbe basierend auf dem Hue-Wert (Farbton) im HSV-Farbraum
    CRGB color = CHSV(hue, 255, 255);
    M5.dis.drawpix(0, color); // Setzt die LED-Farbe
    delay(10); // Kurze Verzögerung für den Regenbogeneffekt
  }
}

In diesem Programm verwenden wir die M5.dis.drawpix Funktion, um die LED des M5 Atom Echo einzufärben. Diese Methode ist besonders nützlich, wenn man ein Display oder ein LED-Array anschließen möchte oder wenn unklar ist, ob später ein Display hinzugefügt wird. Der erste Parameter der Funktion ist der Index des anzuzeigenden Pixels bzw. der LED. Da der M5 Atom Echo nur eine LED hat, verwenden wir den Index 0.

Der zweite Parameter ist die Farbe. In unserem Beispiel verwenden wir CHSV(hue, 255, 255) zur Farberzeugung. Alternativ kann man, wie im Setup, die Farbe direkt in einem RGB-Format (z.B. CRGB(128, 128, 0)) angeben.