library ready
This commit is contained in:
1 parent
51cdbad841
commit
db389802d8
8 files changed
+103
No files matched your search
@@ -0,0 +1,56 @@
|
||||
#include <Wire.h>
|
||||
#include <Adafruit_NeoPixel.h>
|
||||
|
||||
#define I2C_DEV_ADDR 0x55
|
||||
#define NEOPIXEL_PIN 19 // Change as needed
|
||||
#define MAX_PIXELS 100
|
||||
|
||||
Adafruit_NeoPixel strip(MAX_PIXELS, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ800);
|
||||
|
||||
uint8_t pixelCount = 1;
|
||||
|
||||
void receiveEvent(int len) {
|
||||
delay(50); // Add more delay for stability as requested
|
||||
|
||||
if (len < 1) return;
|
||||
uint8_t cmd = Wire.read();
|
||||
|
||||
if (cmd == 0x01 && len >= 2) { // Set pixel count
|
||||
pixelCount = Wire.read();
|
||||
strip.updateLength(pixelCount);
|
||||
strip.begin();
|
||||
strip.show();
|
||||
}
|
||||
else if (cmd == 0x02 && len >= 5) { // Set all pixels: R G B I
|
||||
uint8_t r = Wire.read();
|
||||
uint8_t g = Wire.read();
|
||||
uint8_t b = Wire.read();
|
||||
uint8_t intensity = Wire.read();
|
||||
for (int i = 0; i < pixelCount; i++) {
|
||||
strip.setPixelColor(i, strip.Color(r * intensity / 255, g * intensity / 255, b * intensity / 255));
|
||||
}
|
||||
strip.show();
|
||||
}
|
||||
else if (cmd == 0x03 && len >= 6) { // Set one pixel: N R G B I
|
||||
uint8_t n = Wire.read();
|
||||
uint8_t r = Wire.read();
|
||||
uint8_t g = Wire.read();
|
||||
uint8_t b = Wire.read();
|
||||
uint8_t intensity = Wire.read();
|
||||
if (n < pixelCount) {
|
||||
strip.setPixelColor(n, strip.Color(r * intensity / 255, g * intensity / 255, b * intensity / 255));
|
||||
strip.show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void setup() {
|
||||
strip.begin();
|
||||
strip.show();
|
||||
Wire.begin(I2C_DEV_ADDR, 8, 9); // ESP32-S3 default I2C pins: SDA=8, SCL=9
|
||||
Wire.onReceive(receiveEvent);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
delay(100); // Main loop delay, not critical
|
||||
}
|
||||
Reference in new issue
Block a user