用小开关控制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);
}
} 楼主楼主作为一个小白不会在GitHub中下载库文件,您能分享一份吗?十分感谢您,邮箱zhaoxuano@qq.com。 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库。 topdog 发表于 2020-11-1 00:37
1,使用Adafruit_NeoPixel库,是让你看一下函数。
2,可以在Arduino IDE按顺序操作:open File->Sketchbo ...
非常感谢 zhaoxuano 发表于 2020-10-31 23:41
楼主楼主作为一个小白不会在GitHub中下载库文件,您能分享一份吗?十分感谢您,邮箱。 ...
你要的库文件已经zhaoxuano@qq.com发给你了,在本帖里也已附件上传,这样方便大家下载,谢谢你的关心和指导。 topdog 发表于 2020-11-1 21:23
你要的库文件已经发给你了,在本帖里也已附件上传,这样方便大家下载,谢谢你的关心和指导。 ...
以收到十分感谢:handshake topdog 发表于 2020-11-1 21:23
你要的库文件已经发给你了,在本帖里也已附件上传,这样方便大家下载,谢谢你的关心和指导。 ...
你好我想请问一个关于arduino的问题。我想做一个简单的展示,就是用触摸串口屏幕做了一个界面,上面有开,关。点开键控制arduino上自己的灯亮,点关控制灯灭,在程序里如何实现呢,开键发送的指令的是A5 5A06 83 00 20 01 00 01 关的是A5 5A06 83 00 20 01 00 02因为积分太少,只能在这留言 哈哈怪 发表于 2020-11-18 16:41
你好我想请问一个关于arduino的问题。我想做一个简单的展示,就是用触摸串口屏幕做了一个界面,上面有开 ...
同求,问题解决了吗
页:
[1]