ws2812 LED灯编程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ws2812 LED灯编程相关的知识,希望对你有一定的参考价值。

参考技术A strip.setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b);
第一个参数n是彩带中LED的编号,最接近单片机引脚的编号为0;接下来的三个参数描述像素颜色,分别表示红色、绿色和蓝色的亮度级别,0为最暗,255是最大亮度;
strip.setPixelColor(uint16_t n, uint32_t c);
n是彩带中LED的编号,颜色color是一种32位类型,将红色,绿色和蓝色值合并为一个数字,有时这样做能提高程序的效率。通过下面的方法,可以将红色、绿色和蓝色值转换为32位类型。
uint32_t magenta = strip.Color(red, green, blue);

strip.setBrightness(uint8_t);
一般只在setup()中调用,以保证在整个程序执行过程中LED颜色亮度的一致性。其实,在程序中通过合适的逻辑控制各像素的亮度值,可能动画效果更好。

strip.show();
该方法更新彩带上的全部LED。一个好的习惯是先利用setPixelColor()设置好整个彩带的颜色,然后再调用show()方法,以防止出现动画跳跃而不平滑。

Processing按钮控制LED灯

Processing按钮控制LED灯

公众号:STCode

1-1-Processing介绍

1)Processing是一门用来生成图片、动画和交互软件的编程语言。

2)Processing提供了一种通过创造互动图像来学习编程的方式。

3)Processing提供反馈和交互的能力使得它成为一个流行的学习编程的方法


1-2-Processing的特点

1)草稿化

草稿化是一种思维方式,它十分有趣并且非常快捷。它的基本目标是用来在短时间内探索出许多的想法。在我们自己的工作中,我们经常在纸上画出草稿然后把结果用程序表示出来。

2)原型化

Processing包含许多不同的连接和整合而在一起工作的工具,这使得它在快速实现和深度研究方面有很大的优势,目前有超过100个库拓展了Processing,设置加入了声音、计算机视觉和电子装配等领域。


1-3 Processing下载

通过访问网站:

https://processing.org/download

找到适合自己电脑的版本并且下载


1-4-Processing开发环境


1-5 简单示例

这一行代码表示“画一个中心距离屏幕左端50像素长度,距离屏幕上端50像素长度的一个宽和高分别为80像素的椭圆”

如果输入正确,我们将会看到下图所示的图像,如果输入不正确,那么消息传递区会变红,然后告诉你存在错误

​ 正确

​ 错误信息

2-任务介绍

Arduino端与PC端通过串行数据线连接,使用Processsing创建一个按键,Processing端用鼠标点击按键可以开启Arduino端的LED灯,鼠标点击按键范围外可以关闭LED灯。


3-Processing端

Processsing主要是创建一个按钮,鼠标单击按钮范围内,会点亮Arduino端的LED灯,并且在processing下边的工作台将显示"LED turn ON!";当鼠标单击按钮范围外的话,会关闭Arduino端的LED灯,并在工作台显示"LED turn OFF!"。

代码如下:

import processing.serial.*;           //导入serial库 
Serial port;                          //实例化一个Serial对象 
void setup()

port= new Serial(this,"COM15",9600);    //初始化port(根据Arduino分配的端口号填写)
size(300,300); 
 
void draw()
     
  rect(100,100,50,50);               //绘制矩形
 
void mouseClicked()
 
  if((mouseX>=100)&(mouseX<=150)&(mouseY>=100)&(mouseY<=150))                                        //当鼠标在矩形区域内单击时
 
println("LED turn ON!");
port.write("a");           //往串口发送小写字母a
     
else

println("LED turn OFF!");
port.write("b");           //当在矩形区域外单击时,往串口发送小写字母b
 


4-Arduino端

Arduino端主要是接收从Processing端发送过来的数据,当接收到字符‘a’时,点亮板载的LED灯,当接收到‘b’时,关闭板载的LED灯。

代码如下:

int c=0;
void setup()

 Serial.begin(9600);//比特率9600 
 pinMode(13,OUTPUT);//设置数字引脚第13脚为输出模式 
 digitalWrite(13,LOW);//设置该引脚的初始值为低电平

void loop()

 if(Serial.available())
 
	c=Serial.read();
	if(c==97)//如果接收到字母a (ASCII码值为97 )
		digitalWrite(13,HIGH);//第13引脚置高电平,LED灯亮 
	else if(c==98)//如果接收到字母b ASCII码值为98
		digitalWrite(13,LOW);//第13引脚置低电平,LED灯灭
 


5-效果演示

Arduino端:

点亮状态

​ 熄灭状态


Processsing端:

​ 白色方框为按钮,灰色区域为按钮外

​ 工作台数据显示


更多创意作品欢迎关注公众号:STCode

以上是关于ws2812 LED灯编程的主要内容,如果未能解决你的问题,请参考以下文章

Arduino控制RGB灯(WS2812B)

玩转X-CTR100 l WS2812全彩LED灯

ESP8266--SDK开发(驱动WS2812B)

WS2812B的第一个led在代码进入for循环时开始点亮

rgb全彩LED,apa102比ws2812b好在哪儿

PIXHAWK DIY LED扩展板