用小开关控制ws2812灯带-Arduino中文社区 - Powered by Discuz! Archiver

topdog 发表于 2020-10-29 22:33

用小开关控制ws2812灯带

本帖最后由 topdog 于 2020-11-2 21:48 编辑

用一个小开关控制w2812灯带变化,开始灯带是全红的,然后每按一下开关,灯珠依次变成蓝色的。
美科科技的w2812产品名为Sensor-ColorLED,是全彩LED灯,采用单线串行级联协议;只需一个I/O口就可以控制线路上每个彩灯的RGB颜色;供电支持的情况下,最多支持1024个彩灯的级联。
本例小开关接D12管脚,40个w2812组成的灯带信号端接D6,接线图如下:





程序说明:
1,使用Adafruit_NeoPixel库, 可以在Arduino IDE按顺序操作:open File->Sketchbook->Library->Adafruit_NeoPixel->strandtest sketch。
2,按键程序,先设置按键的状态,测得状态变化才确定按键行为有效。
3,记录按键次数对应w2812灯珠点亮。4,全蓝以后再变成红。
#include <Adafruit_NeoPixel.h>

const int DataPin = 6;
const int ButtonPin = 12;
const int NumPixels= 40;
const int DelayTime = 50;

// 定义用来记录按键次数的整型变量
int ButtonPushCounter = 0;
// 记录当前按键的状态,
int ButtonState = 0;
// 记录按键之前的状态
int LastButtonState = 0;

Adafruit_NeoPixel pixels(NumPixels, DataPin, NEO_GRB + NEO_KHZ800);

void setup()
{
Serial.begin(9600);
pinMode(ButtonPin, INPUT_PULLUP);
pixels.begin();
pixels.clear();
AllRed(NumPixels,DelayTime);
}

void loop()
{
ButtonState = digitalRead(ButtonPin);
if (ButtonState != LastButtonState)
{
    if (ButtonState == LOW)
    {
      // 将记录按键次数的变量加一
      ButtonPushCounter++;
      if (ButtonPushCounter > NumPixels)
      {
      ButtonPushCounter = 0;
      AllRed(NumPixels,DelayTime);
      }
    }
}
LastButtonState = ButtonState;
RedTurnBlue(ButtonPushCounter, DelayTime);
}

void AllRed(int count,int delaytime)
{
for (int i = 0; i < count; i++)
{
    pixels.setPixelColor(i, pixels.Color(127, 0, 0)); //红色
    pixels.show();
    delay(delaytime);
}
}

void RedTurnBlue(int number,int delaytime)
{
for (int i = 0; i < number; i++)
{
    pixels.setPixelColor(i, pixels.Color(0, 0, 127)); //蓝色
    pixels.show();
    delay(delaytime - i);
}
}

zhaoxuano 发表于 2020-10-31 23:41

楼主楼主作为一个小白不会在GitHub中下载库文件,您能分享一份吗?十分感谢您,邮箱zhaoxuano@qq.com。

topdog 发表于 2020-11-1 00:37

zhaoxuano 发表于 2020-10-31 23:41
楼主楼主作为一个小白不会在GitHub中下载库文件,您能分享一份吗?十分感谢您,邮箱。 ...

1,使用Adafruit_NeoPixel库,是让你看一下函数。
2,可以在Arduino IDE按顺序操作:open File->Sketchbook->Library->Adafruit_NeoPixel->strandtest sketch。这个步骤是在Arduino IDE上下载Adafruit_NeoPixel库。

zhaoxuano 发表于 2020-11-1 20:19

topdog 发表于 2020-11-1 00:37
1,使用Adafruit_NeoPixel库,是让你看一下函数。
2,可以在Arduino IDE按顺序操作:open File->Sketchbo ...

非常感谢

topdog 发表于 2020-11-1 21:23

zhaoxuano 发表于 2020-10-31 23:41
楼主楼主作为一个小白不会在GitHub中下载库文件,您能分享一份吗?十分感谢您,邮箱。 ...

你要的库文件已经zhaoxuano@qq.com发给你了,在本帖里也已附件上传,这样方便大家下载,谢谢你的关心和指导。

zhaoxuano 发表于 2020-11-2 19:14

topdog 发表于 2020-11-1 21:23
你要的库文件已经发给你了,在本帖里也已附件上传,这样方便大家下载,谢谢你的关心和指导。 ...

以收到十分感谢:handshake

哈哈怪 发表于 2020-11-18 16:41

topdog 发表于 2020-11-1 21:23
你要的库文件已经发给你了,在本帖里也已附件上传,这样方便大家下载,谢谢你的关心和指导。 ...

你好我想请问一个关于arduino的问题。我想做一个简单的展示,就是用触摸串口屏幕做了一个界面,上面有开,关。点开键控制arduino上自己的灯亮,点关控制灯灭,在程序里如何实现呢,开键发送的指令的是A5 5A06 83 00 20 01 00 01   关的是A5 5A06 83 00 20 01 00 02因为积分太少,只能在这留言

就是这么跳儿 发表于 2022-7-27 16:23

哈哈怪 发表于 2020-11-18 16:41
你好我想请问一个关于arduino的问题。我想做一个简单的展示,就是用触摸串口屏幕做了一个界面,上面有开 ...

同求,问题解决了吗
页: [1]
查看完整版本: 用小开关控制ws2812灯带