Nigdy jeszcze nie miałem styczności z ESP32.
Kupiłem ESP32 C6 16M (zdjęcie poniżej).
Zaznaczyłem w Generic Builder ESP32C6 oraz podstawowe opcje:
Konfiguracja (LED, CONFIG);
Aktualizacja przez WWW
Dostępne GUI podczas pracy
Soft się wygenerował.
Wgrałem za pomocą Flash Download Tool v3.9.8
Wszystko było by ok, tylko jak teraz "zmusić" diodę LED (RGB), żeby działała.
Wyczytałem, że te moduły mają LED RBG pod gpio8.
Wybrałem gpio8 i nic.
Może jakieś wskazówki.
ESP32 C6 pierwsze kroki
-
Patryk
- Posts: 2944
- Joined: Mon Jan 07, 2019 7:51 pm
- Location: Rybnik
You do not have the required permissions to view the files attached to this post.
-
robertklepacki94
- Posts: 1933
- Joined: Thu Sep 02, 2021 1:06 pm
- Has thanked: 5 times
- Been thanked: 14 times
GG nie obsługuje diod RBG jako statusowych, po drugie nie wybrałeś innych funkcji jak przekaźnik czy przycisk tak więc w Cloud nic ci się nie pokażePatryk wrote: Mon Mar 03, 2025 7:11 pm Nigdy jeszcze nie miałem styczności z ESP32.
Kupiłem ESP32 C6 16M (zdjęcie poniżej).
Zaznaczyłem w Generic Builder ESP32C6 oraz podstawowe opcje:
Konfiguracja (LED, CONFIG);
Aktualizacja przez WWW
Dostępne GUI podczas pracy
Soft się wygenerował.
Wgrałem za pomocą Flash Download Tool v3.9.8
Wszystko było by ok, tylko jak teraz "zmusić" diodę LED (RGB), żeby działała.
Wyczytałem, że te moduły mają LED RBG pod gpio8.
Wybrałem gpio8 i nic.
Może jakieś wskazówki.
Wziąłem udział w Supla Offline Party 2023
-
Patryk
- Posts: 2944
- Joined: Mon Jan 07, 2019 7:51 pm
- Location: Rybnik
Dzięki za info.
Mi na razie chodziło, żeby tylko dioda LED sygnalizowała, w jakim trybie jest moduł.
Czyli (na razie) ta dioda LED RGB jest bezużyteczna.
Szkoda.
Mi na razie chodziło, żeby tylko dioda LED sygnalizowała, w jakim trybie jest moduł.
Czyli (na razie) ta dioda LED RGB jest bezużyteczna.
Szkoda.
Nie jest. Tutaj https://github.com/h4fide/ESP32-C6-RGB-LED-Control masz, jak użyć we własnych projektach. Działa całkiem OK.Patryk wrote: Mon Mar 03, 2025 7:28 pm Dzięki za info.
Mi na razie chodziło, żeby tylko dioda LED sygnalizowała, w jakim trybie jest moduł.
Czyli (na razie) ta dioda LED RGB jest bezużyteczna.
Szkoda.
EDIT: nie wszystkie ESP32 C6 mają diodę RGB. Są też takie (np. mini), które mają zwykłą i wtedy działa standardowo.
Wiesz, że Supla obsługuje Zigbee? Wstąp do Klubu Promila: https://forum.supla.org/viewtopic.php?t=18018
Szukasz nowego GG? Jest tutaj: https://forum.supla.org/viewtopic.php?t=18036-
rysieks
- Posts: 30
- Joined: Tue Feb 25, 2025 12:22 pm
Bawiłem się trochę więc proszę.
Umieść poniższy kod w pliku o nazwie f_RGBLed.h tam gdzie masz główny program *.ino,
postępuj zgodnie z instrukcją na początku,
i niech nie będzie Ci szkoda
Tylko musisz dokonać kompilacji programu u siebie niestety.
Umieść poniższy kod w pliku o nazwie f_RGBLed.h tam gdzie masz główny program *.ino,
postępuj zgodnie z instrukcją na początku,
i niech nie będzie Ci szkoda
Tylko musisz dokonać kompilacji programu u siebie niestety.
Code: Select all
//==============================================================================
/*
Na podstawie sketchu przykładowego Arduino
- umieść ten plik w katalogu sketchu
- zainstaluj bibliotekę; Adafruit NeoPixel
// w głównym programie ???????????.ino dopisz poniższą linijkę aby uwzględnić ten plik;
#include "f_RGBLed.h"
//na końcu w funkcji setup() wpisz;
rgbLed.begin(); // Initialize the RGB LED
rgbLed.show(); // Turn off the LED (as it's initialized to all 0s)
startTime = millis();
// w funkcjii loop() wpisz;
RGB_loop();
// i możesz pobawić się ustawieniami, a dioda będzie się świecić ;)
*/
//==============================================================================
#include <Adafruit_NeoPixel.h>
#include <cmath>
constexpr uint8_t LED_PIN = 8; // Pin LED RGB na pokładzie
constexpr uint8_t NUM_LEDS = 1;
constexpr unsigned long CYCLE_DURATION = 5000; // 10 000 10 seconds for a full color cycle
constexpr unsigned long STEPS = 500; // Number of steps in the cycle
unsigned long startTime; // = millis();
unsigned long currentTime;
unsigned long next_time = 0;
Adafruit_NeoPixel rgbLed(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800); // NeoPixel object
// Color structure
struct RGB {
uint8_t r, g, b;
};
void setColor(const RGB& color) {
rgbLed.setPixelColor(0, rgbLed.Color(color.r, color.g, color.b));
rgbLed.show();
}
// Convert HSV to RGB
RGB hsvToRgb(float h, float s, float v) {
float c = v * s;
float x = c * (1 - std::abs(std::fmod(h / 60.0, 2) - 1));
float m = v - c;
float r, g, b;
if (h >= 0 && h < 60) { r = c, g = x, b = 0; }
else if (h >= 60 && h < 120) { r = x, g = c, b = 0; }
else if (h >= 120 && h < 180) { r = 0, g = c, b = x; }
else if (h >= 180 && h < 240) { r = 0, g = x, b = c; }
else if (h >= 240 && h < 300) { r = x, g = 0, b = c; }
else { r = c, g = 0, b = x; }
return {
static_cast<uint8_t>((r + m) * 255),
static_cast<uint8_t>((g + m) * 255),
static_cast<uint8_t>((b + m) * 255)
};
}
void RGB_loop() {
currentTime = millis();
if ( currentTime > next_time ) {
float progress = static_cast<float>((currentTime - startTime) % CYCLE_DURATION) / CYCLE_DURATION;
float hue = progress * 360.0f; // Hue ranges from 0 to 360
RGB color = hsvToRgb(hue, 1.0f, 0.01f); // Kolor, Full saturation , value (jasność)
setColor(color);
next_time = currentTime + (CYCLE_DURATION / STEPS); //Small delay for smooth transition
}
}
