eew_cT3H5d 发表于 2024-10-15 00:03

【2024 DigiKey创意大赛】职场提神法宝项目-ESP32-C6驱动ws2812氛围灯

本帖最后由 eew_cT3H5d 于 2024-10-31 08:32 编辑

<p>选择开发板型号:</p>

<p> &nbsp;</p>

<p>添加WS2812全彩LED库:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>安装对应库文件:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>打开案例库:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>进行编译烧写程序:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>实物连接示意图:接ESP32-C6开发板的GPIO6</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>程序代码:</p>

<pre>
<code>#include &lt;Adafruit_NeoPixel.h&gt;
#ifdef __AVR__
#include &lt;avr/power.h&gt; // Required for 16 MHz Adafruit Trinket
#endif

// Which pin on the Arduino is connected to the NeoPixels?
// On a Trinket or Gemma we suggest changing this to 1:
#define LED_PIN    6

// How many NeoPixels are attached to the Arduino?
#define LED_COUNT 72
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
// These lines are specifically to support the Adafruit Trinket 5V 16 MHz.
// Any other board, you can remove this part (but no harm leaving it):
#if defined(__AVR_ATtiny85__) &amp;&amp; (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
// END of Trinket-specific code.

strip.begin();         // INITIALIZE NeoPixel strip object (REQUIRED)
strip.show();            // Turn OFF all pixels ASAP
strip.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)
}


// loop() function -- runs repeatedly as long as board is on ---------------

void loop() {
// Fill along the length of the strip in various colors...
colorWipe(strip.Color(255,   0,   0), 50); // Red
colorWipe(strip.Color(0, 255,   0), 50); // Green
colorWipe(strip.Color(0,   0, 255), 50); // Blue

// Do a theater marquee effect in various colors...
theaterChase(strip.Color(127, 127, 127), 50); // White, half brightness
theaterChase(strip.Color(127,   0,   0), 50); // Red, half brightness
theaterChase(strip.Color(0,   0, 127), 50); // Blue, half brightness

rainbow(10);             // Flowing rainbow cycle along the whole strip
theaterChaseRainbow(50); // Rainbow-enhanced theaterChase variant
}

void colorWipe(uint32_t color, int wait) {
for(int i=0; i&lt;strip.numPixels(); i++) { // For each pixel in strip...
    strip.setPixelColor(i, color);         //Set pixel's color (in RAM)
    strip.show();                        //Update strip to match
    delay(wait);                           //Pause for a moment
}
}

// Theater-marquee-style chasing lights. Pass in a color (32-bit value,
// a la strip.Color(r,g,b) as mentioned above), and a delay time (in ms)
// between frames.
void theaterChase(uint32_t color, int wait) {
for(int a=0; a&lt;10; a++) {// Repeat 10 times...
    for(int b=0; b&lt;3; b++) { //'b' counts from 0 to 2...
      strip.clear();         //   Set all pixels in RAM to 0 (off)
      // 'c' counts up from 'b' to end of strip in steps of 3...
      for(int c=b; c&lt;strip.numPixels(); c += 3) {
      strip.setPixelColor(c, color); // Set pixel 'c' to value 'color'
      }
      strip.show(); // Update strip with new contents
      delay(wait);// Pause for a moment
    }
}
}

// Rainbow cycle along whole strip. Pass delay time (in ms) between frames.
void rainbow(int wait) {

for(long firstPixelHue = 0; firstPixelHue &lt; 5*65536; firstPixelHue += 256) {

    strip.rainbow(firstPixelHue);
    // Above line is equivalent to:
    // strip.rainbow(firstPixelHue, 1, 255, 255, true);
    strip.show(); // Update strip with new contents
    delay(wait);// Pause for a moment
}
}

// Rainbow-enhanced theater marquee. Pass delay time (in ms) between frames.
void theaterChaseRainbow(int wait) {
int firstPixelHue = 0;   // First pixel starts at red (hue 0)
for(int a=0; a&lt;30; a++) {// Repeat 30 times...
    for(int b=0; b&lt;3; b++) { //'b' counts from 0 to 2...
      strip.clear();         //   Set all pixels in RAM to 0 (off)
      // 'c' counts up from 'b' to end of strip in increments of 3...
      for(int c=b; c&lt;strip.numPixels(); c += 3) {
      // hue of pixel 'c' is offset by an amount to make one full
      // revolution of the color wheel (range 65536) along the length
      // of the strip (strip.numPixels() steps):
      int      hue   = firstPixelHue + c * 65536L / strip.numPixels();
      uint32_t color = strip.gamma32(strip.ColorHSV(hue)); // hue -&gt; RGB
      strip.setPixelColor(c, color); // Set pixel 'c' to value 'color'
      }
      strip.show();                // Update strip with new contents
      delay(wait);               // Pause for a moment
      firstPixelHue += 65536 / 90; // One cycle of color wheel over 90 frames
    }
}
}
</code></pre>

<p>&nbsp;</p>

<p>显示效果:</p>

<div style="text-align: left;"></div>

<p>&nbsp;</p>

<p>&nbsp;</p>

Maker_kun 发表于 2024-10-31 09:42

<p></p>


<p>效果不错,期待成品</p>

eew_cT3H5d 发表于 2024-10-31 23:48

Maker_kun 发表于 2024-10-31 09:42
效果不错,期待成品

<p>终于搞完了</p>
页: [1]
查看完整版本: 【2024 DigiKey创意大赛】职场提神法宝项目-ESP32-C6驱动ws2812氛围灯