Pro M5stack jednotky lze zakoupit různé rozšiřovací moduly, kdy jedním ze základních je RGB. Tento modul obsahuje 3 RGB LED diody kompatibilní se systémem Neopixel.
Pro jeho spojení s M5stack deskou stačí propojit 3 vodiče. Připojíme GND s GND, OUT s pinem D26 a VCC s pinem 5V. Pin OUT můžete připojit i na jiné volné GPIO piny, jen je nutné provést změnu taky na začátku programu.
Ukázkový program najdete níže, přičemž jeho popis můžete najít na videu, které je připojeno na konci návodu. Kromě RGB modulu je v něm zanasena také práce s dalšími třemi tlačítky přímo na M5stack:
// M5 stack a jednotka RGB // Jednotka s 3xRGB diodami typu Neopixel // navody.dratek.cz // připojení potřebných knihoven #include <Adafruit_NeoPixel.h> #include <M5Stack.h> // nastavení čísel propojovacích pinů #define BUT_A 39 #define BUT_B 38 #define BUT_C 37 #define RGB_PIN 26 // počet RGB diod #define NUMPIXELS 3 // vytvoření objekt pixels z knihovny Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, RGB_PIN, NEO_GRB + NEO_KHZ800); // proměnná pro uložení délky zpoždění int zpozdeni = 0; void setup() { // zahájení komunikace s M5 stack M5.begin(); // zahájení komunikace s napájecím čipem M5.Power.begin(); // vypnutí reproduktoru dacWrite(25, 0); // nastavení tlačítek jako vstupů pinMode(BUT_A, INPUT_PULLUP); pinMode(BUT_B, INPUT_PULLUP); pinMode(BUT_C, INPUT_PULLUP); // zahájení komunikace s RGB diodami pixels.begin(); // výpis informace na displej M5.Lcd.setTextFont(4); M5.Lcd.setCursor(70, 100, 4); M5.Lcd.println("RGB priklad"); } void loop() { // nastavení délky zpoždění // pomocí čtení stavu tlačítek if (digitalRead(BUT_A) == LOW) { zpozdeni = 100; } else if (digitalRead(BUT_B) == LOW) { zpozdeni = 300; } else if (digitalRead(BUT_C) == LOW) { zpozdeni = 500; } else { zpozdeni = 1000; } // nastavení barev na jednotlivé RGB diody s intenzitou složek 0-255 // funkce setPixelColor(číslo diody, barva(červená, zelená, modrá)) pixels.setPixelColor(0, pixels.Color(100, 0, 0)); pixels.setPixelColor(1, pixels.Color(0, 100, 0)); pixels.setPixelColor(2, pixels.Color(0, 0, 100)); // nahrání nastavení do RGB diod pixels.show(); // nastavené zpoždění delay(zpozdeni); // nastavení barev na jednotlivé RGB diody s intenzitou složek 0-255 // funkce setPixelColor(číslo diody, barva(červená, zelená, modrá)) pixels.setPixelColor(0, pixels.Color(0, 100, 0)); pixels.setPixelColor(1, pixels.Color(0, 0, 100)); pixels.setPixelColor(2, pixels.Color(100, 0, 0)); // nahrání nastavení do RGB diod pixels.show(); // nastavené zpoždění delay(zpozdeni); // nastavení barev na jednotlivé RGB diody s intenzitou složek 0-255 // funkce setPixelColor(číslo diody, barva(červená, zelená, modrá)) pixels.setPixelColor(0, pixels.Color(0, 0, 100)); pixels.setPixelColor(1, pixels.Color(100, 0, 0)); pixels.setPixelColor(2, pixels.Color(0, 100, 0)); // nahrání nastavení do RGB diod pixels.show(); // nastavené zpoždění delay(zpozdeni); }
Sestřih ze streamu:
Celý záznam:
Na eshopu můžete tento M5stack Accel modul zakoupit zde:
https://dratek.cz/arduino/20929-m5stack-rgb-led-modul.html