diff --git a/src/extras/Pixel.cpp b/src/extras/Pixel.cpp index 64febd5..917b7c2 100644 --- a/src/extras/Pixel.cpp +++ b/src/extras/Pixel.cpp @@ -6,6 +6,9 @@ Pixel::Pixel(int pin){ rf=new RFControl(pin,false,false); // set clock to 1/80 usec, no default driver + if(!rf) + return; + setTiming(0.32, 0.88, 0.64, 0.56, 80.0); // set default timing parameters (suitable for most SK68 and WS28 RGB pixels) rmt_isr_register(loadData,NULL,0,NULL); // set custom interrupt handler diff --git a/src/extras/extras.ino b/src/extras/extras.ino index 49f07fc..4c7cecd 100644 --- a/src/extras/extras.ino +++ b/src/extras/extras.ino @@ -73,19 +73,24 @@ struct Effect2 { } }; -//Pixel px(21,8); -//Effect1 effect1(&px,5); -//Effect2 effect2(&px,100); - -#ifdef CONFIG_IDF_TARGET_ESP32C3 - #define PIN 7 - #define RMT_MEM_SIZE 48 -#else - #define PIN 13 - #define RMT_MEM_SIZE 64 +#if defined(CONFIG_IDF_TARGET_ESP32C3) + #define PIN 1 +#elif defined(CONFIG_IDF_TARGET_ESP32S2) + #define PIN 1 +#else + #define PIN 21 #endif -volatile uint32_t data[10]; +Pixel px2(2); +Pixel px3(3); +Pixel px4(4); +Pixel px(PIN); +Pixel px5(5); +Pixel px6(6); +Pixel px7(7); + +Effect1 effect1(&px,5); +Effect2 effect2(&px,100); void setup() { @@ -94,80 +99,9 @@ void setup() { delay(1000); // wait for interface to flush Serial.println("\n\nHomeSpan Pixel Example\n"); - - Pixel px0(22); - Pixel px1(3); - Pixel px(21); - - uint32_t colors[20]; - - colors[0]=px.getColorRGB(40,0,0); - colors[1]=px.getColorRGB(40,0,0); - colors[2]=px.getColorRGB(40,0,0); - colors[3]=px.getColorRGB(40,40,0); - colors[4]=px.getColorRGB(40,40,0); - colors[5]=px.getColorRGB(40,40,0); - colors[6]=px.getColorRGB(0,40,0); - colors[7]=px.getColorRGB(40,0,40); - - px.setColors(colors,8); - px.setHSV(240,100,40,2); - Serial.println("\n\nDone\n\n"); - while(1); - - RFControl rf(PIN,true,false); - rmt_set_clk_div(rf.getChannel(),100); // set clock divider - - rmt_isr_register(eot,(void *)data,0,NULL); - rmt_set_tx_intr_en(rf.getChannel(),true); - rmt_set_tx_thr_intr_en(rf.getChannel(),true,32); - - RMTMEM.chan[0].data32[0].val=5000<<16 | 5000 | 1<<15; - RMTMEM.chan[0].data32[1].val=5000<<16 | 5000 | 1<<15; - - for(int i=2;i