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灯编程的主要内容,如果未能解决你的问题,请参考以下文章