初次拿到灯带,不知道该做些什么;无意之中想到在一些饰品店,有一些好玩的玩意,比如轻轻晃动你手中的瓶子,里面的灯竟然亮起来了,能否自己也做一个这样的瓶子呢?尝试一下呗。
STEP ONE:硬件器材
所需器材:
或许灯带到手之后,会发现好长哦,也许会还会感到很复杂,其实不然,因为这个灯带也有相应的库,有了这个库,这么长的灯带其实就多盏普通的LED并联到一块,你可以点亮其中的任意一盏或者N盏灯。而且这个灯带可以随便剪成很多段,然后用三根线将针脚引出来就ok了。灯带的三根针脚分别是VCC、GND和数字信号针脚,只要将其接到数字口就搞定了。
STEP TWO:硬件搭建
STEP THREE:编写程序
- <font size="4">#define SensorINPUT 9 //传感器接在数字口9上面
- #include <Adafruit_NeoPixel.h>
- #define PIN 10 //灯带接在数字口10上面
- Adafruit_NeoPixel strip = Adafruit_NeoPixel(15, PIN, NEO_GRB + NEO_KHZ800);//一共十五盏LED
- uint8_t myColors[][3] = {{232, 100, 255}, // 设置不同的颜色
- {200, 200, 20}, //
- {30, 200, 200}, //
- {255 ,0 , 255},
- };
- #define FAVCOLORS sizeof(myColors) / 3
- void setup()
- {
- pinMode(SensorINPUT, INPUT);
- strip.begin();
- Serial.begin(9600);
- strip.setBrightness(200);//设置灯带亮度
- strip.show();
- }
- void loop()
- {
- Serial.println( sizeof(myColors));
- if(!digitalRead(SensorINPUT))//如果震动
- {
- flashRandom(10, 2);
- flashRandom(10,1);
- rainbow(10);
- }
- else
- {
- for(int j=0;j<15;j++)
- {
- strip.setPixelColor(j,(0,0,0));
- }
-
- }
- }
-
- void rainbow(uint8_t wait) {
- uint16_t i, j;
-
- for(j=0; j<256; j++) {
- for(i=0; i<strip.numPixels(); i++) {
- strip.setPixelColor(i, Wheel((i+j) & 255));
- }
- strip.show();
- delay(wait);
- }
- for(i=0; i<strip.numPixels(); i++) {
- strip.setPixelColor(i,(0,0,0));
- strip.show();
- }
-
- }
- uint32_t Wheel(byte WheelPos) {
- if(WheelPos < 6) {
- return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
- } else if(WheelPos < 12) {
- WheelPos -= 6;
- return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
- } else {
- WheelPos -= 12;
- return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
- }
- }
- void flashRandom(int wait, uint8_t howmany) {
-
- for(uint16_t i=0; i<howmany; i++) {
- for(int j=0;j<15;j++)
- {
- // pick a random favorite color!
- int c = random(FAVCOLORS);
- int red = myColors[c][0];
- int green = myColors[c][1];
- int blue = myColors[c][2];
-
- // now we will 'fade' it in 5 steps
- for (int x=0; x < 5; x++) {
- int r = red * (x+1); r /= 5;
- int g = green * (x+1); g /= 5;
- int b = blue * (x+1); b /= 5;
-
- strip.setPixelColor(j, strip.Color(r, g, b));
- strip.show();
- delay(wait);
- }
- // & fade out in 5 steps
-
- }
- }
- for(uint16_t i=howmany; i>0; i--) {
- for(int j=0;j<15;j++)
- {
- // pick a random favorite color!
- int c = random(FAVCOLORS);
- int red = myColors[c][0];
- int green = myColors[c][1];
- int blue = myColors[c][2];
-
- // now we will 'fade' it in 5 steps
- for (int x=5; x >= 0; x--) {
- int r = red * x; r /= 5;
- int g = green * x; g /= 5;
- int b = blue * x; b /= 5;
-
- strip.setPixelColor(j, strip.Color(r, g, b));
- strip.show();
- delay(wait);
- }
- }
- // LEDs will be off when done (they are faded to 0)
- }
- }</font>
复制代码
STEP FIVE:下载程序,观察现象
轻轻晃动你的传感器,灯带显示了不同的颜色以及不同的效果。
STEP SIX:装饰你的瓶子
将USB线拔掉,外接上电池,装入到心仪的瓶子里,轻轻摇晃瓶子,怎么样?
STEP SEVEN:效果演示
--------------------------------------------------- 社区活动向导 -------------------------------------------------------- 喜欢这个项目,可以为它进行投票,投票请点击“支持”按钮。
|