会变色的瓶子

2014-08-014.6万
AI 快速预览详细 收起
本文介绍了如何使用DFR0282 Beetle控制器、震动传感器和灯带来制作一个会变色的瓶子。所需硬件包括Beetle控制器、震动传感器、灯带等。通过简单的硬件搭建和编程,可以实现轻轻晃动瓶子时灯带颜色的变化。该项目适合家长和孩子一起动手制作,不仅能够锻炼孩子的动手能力,还能激发他们对科技的兴趣。
         初次拿到灯带,不知道该做些什么;无意之中想到在一些饰品店,有一些好玩的玩意,比如轻轻晃动你手中的瓶子,里面的灯竟然亮起来了,能否自己也做一个这样的瓶子呢?尝试一下呗。           

     STEP ONE:硬件器材

         所需器材:
        或许灯带到手之后,会发现好长哦,也许会还会感到很复杂,其实不然,因为这个灯带也有相应的库,有了这个库,这么长的灯带其实就多盏普通的LED并联到一块,你可以点亮其中的任意一盏或者N盏灯。而且这个灯带可以随便剪成很多段,然后用三根线将针脚引出来就ok了。灯带的三根针脚分别是VCC、GND和数字信号针脚,只要将其接到数字口就搞定了。
        STEP TWO:硬件搭建
会变色的瓶子图1

         STEP THREE:编写程序
  1. <font size="4">#define SensorINPUT  9 //传感器接在数字口9上面
  2. #include <Adafruit_NeoPixel.h>
  3. #define PIN 10 //灯带接在数字口10上面
  4. Adafruit_NeoPixel strip = Adafruit_NeoPixel(15, PIN, NEO_GRB + NEO_KHZ800);//一共十五盏LED
  5. uint8_t myColors[][3] = {{232, 100, 255},   // 设置不同的颜色
  6.                          {200, 200, 20},   //
  7.                          {30, 200, 200},   //
  8.                          {255 ,0 , 255},
  9.                          };
  10. #define FAVCOLORS sizeof(myColors) / 3
  11. void setup()
  12. {
  13.   pinMode(SensorINPUT, INPUT);
  14. strip.begin();  
  15.   Serial.begin(9600);
  16.   strip.setBrightness(200);//设置灯带亮度
  17.   strip.show();
  18. }
  19. void loop()
  20. {
  21.   Serial.println( sizeof(myColors));
  22.       if(!digitalRead(SensorINPUT))//如果震动
  23.       {
  24.         flashRandom(10, 2);
  25.         flashRandom(10,1);
  26.         rainbow(10);
  27.       }  
  28.       else
  29.        {
  30.         for(int j=0;j<15;j++)
  31.         {
  32.           strip.setPixelColor(j,(0,0,0));
  33.         }
  34.         
  35.        }
  36. }
  37. void rainbow(uint8_t wait) {
  38.   uint16_t i, j;
  39.   for(j=0; j<256; j++) {
  40.     for(i=0; i<strip.numPixels(); i++) {
  41.       strip.setPixelColor(i, Wheel((i+j) & 255));
  42.     }
  43.     strip.show();
  44.     delay(wait);
  45.   }
  46.     for(i=0; i<strip.numPixels(); i++) {
  47.       strip.setPixelColor(i,(0,0,0));
  48.         strip.show();
  49.     }
  50.   
  51.   }
  52. uint32_t Wheel(byte WheelPos) {
  53.   if(WheelPos < 6) {
  54.    return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  55.   } else if(WheelPos < 12) {
  56.    WheelPos -= 6;
  57.    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  58.   } else {
  59.    WheelPos -= 12;
  60.    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  61.   }
  62. }
  63. void flashRandom(int wait, uint8_t howmany) {
  64.   for(uint16_t i=0; i<howmany; i++) {
  65.     for(int j=0;j<15;j++)
  66.     {
  67.     // pick a random favorite color!
  68.     int c = random(FAVCOLORS);
  69.     int red = myColors[c][0];
  70.     int green = myColors[c][1];
  71.     int blue = myColors[c][2];
  72.     // now we will 'fade' it in 5 steps
  73.     for (int x=0; x < 5; x++) {
  74.       int r = red * (x+1); r /= 5;
  75.       int g = green * (x+1); g /= 5;
  76.       int b = blue * (x+1); b /= 5;
  77.       
  78.       strip.setPixelColor(j, strip.Color(r, g, b));
  79.       strip.show();
  80.       delay(wait);
  81.     }
  82.     // & fade out in 5 steps
  83.     }
  84.   }
  85.   for(uint16_t i=howmany; i>0; i--) {
  86.     for(int j=0;j<15;j++)
  87.     {
  88.     // pick a random favorite color!
  89.     int c = random(FAVCOLORS);
  90.     int red = myColors[c][0];
  91.     int green = myColors[c][1];
  92.     int blue = myColors[c][2];
  93.     // now we will 'fade' it in 5 steps
  94.     for (int x=5; x >= 0; x--) {
  95.         int r = red * x; r /= 5;
  96.         int g = green * x; g /= 5;
  97.         int b = blue * x; b /= 5;
  98.         
  99.         strip.setPixelColor(j, strip.Color(r, g, b));
  100.         strip.show();
  101.         delay(wait);
  102.     }
  103.     }
  104.   // LEDs will be off when done (they are faded to 0)
  105.   }
  106. }</font>
复制代码
        STEP FIVE:下载程序,观察现象
轻轻晃动你的传感器,灯带显示了不同的颜色以及不同的效果。
     STEP SIX:装饰你的瓶子
会变色的瓶子图2

会变色的瓶子图4

会变色的瓶子图3

将USB线拔掉,外接上电池,装入到心仪的瓶子里,轻轻摇晃瓶子,怎么样?  
STEP SEVEN:效果演示



---------------------------------------------------    社区活动向导    --------------------------------------------------------

喜欢这个项目,可以为它进行投票,投票请点击“支持”按钮
欢迎到比赛专区围观其他参赛项目,参与投票。

>>>>>>>>>>>>>>>>>>DF创客社区比赛专区<<<<<<<<<<<<<<<<<<<




Adafruit_NeoMatrix.zip

22.49 KB, 下载次数: 18323

SampleCode.zip

1.35 KB, 下载次数: 17894

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(24)
崔盛
崔盛
代码没问题嘛请问一下
诩
这个好
20060606
20060606
好好好好好好好好好
一路向习
一路向习
楼主瓶子是在哪买的,我也想买一个
一路向习
一路向习
瓶子是在哪买的呀!挺精致的
一路向习
一路向习
瓶子是在哪买的呀!挺精致的
一路向习
一路向习
瓶子是在哪买的呀!挺精致的
源代码
源代码
今年2016年10月的创客嘉年华你去参加吗?
源代码
源代码
好久没看到你出项目了,希望楼主出来和我们一起分享项目作品。另外需要请你帮个忙,就是你这个变色的瓶子视频的背景音乐很好听,能不能把这首音乐发给我一下,喜欢这种吹口哨的音乐~~:)
Connie1
Connie1
美美哒,好像最近很流行的那个火焰杯
mcholen
mcholen
瓶子很漂亮,选透光度更低一些的瓶身会更好一点。
蛋蛋
蛋蛋
作者
回复mcholen
如果有机会,在尝试改一下,谢谢支持。
蛋蛋
蛋蛋
作者
回复mcholen
所需器材:Beetle控制器、 Beetle主控制板、电池升压模块、USB数据线、震动传感器、灯带,另外再整合一下瓶子、装饰品就ok了。大家可以制作出各种不同效果的摇摇瓶。
xfalcon2025
xfalcon2025
视频效果好赞!!!
蛋蛋
蛋蛋
作者
回复xfalcon2025
:P,谢谢。
喵王
喵王
很像淘宝上那个阳光瓶。
mcholen
mcholen
出个套件吧,我们这里的小孩子都很想要~
FuKin
FuKin
好漂亮,美
王铭杰
王铭杰
做得不错,希望可以更漂亮些。
林子大了
林子大了
这个真心给力
fangrong
fangrong
瓶子的颜色可以自己设定吗?
fangrong
fangrong回复蛋蛋
奥奥,酱紫啊~:lol
蛋蛋
蛋蛋
作者
回复fangrong
主要是灯带的颜色再变化。
冰渕
冰渕
好神奇,32个赞赞
Enosin
Enosin
:lol:lol:lol:lol:lol:lol赞