STM32控制RGB灯WS2812求助

STM32控制RGB灯WS2812求助,第1张

首先楼主需要做几个事情:

1、确定板子上LED灯的引脚位置是属于哪个口PORTA~PORTE

2、例程内的端口是否与硬件竖启上的端口一致。

3、LED的驱动电平是高电平还是低电平。

4、一个GPIO正常工作至少需要以下几点:

a、系统时钟已经配置并正常运行。

b、对应的GPIO时钟位已经行纤桥打开(为了降低功耗,默认GPIO的时钟是不会打开的)。

c、对应的GPIO引脚已经正确配置(如果没有外上拉,应当配置为推挽输出)。

d、对应的GPIO引脚输出寄存器已经设置为对应的电平。

5、程序正常下载的板子上。

6、正常下载还不能使用,检查板子是否正常(电源电压档猛是否达到要求?晶振是否起振?复位电平是否正确?)

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()方法,以防止出现动画跳跃而不平滑。

有的‘阶新科技’,以下是控制程序:

LED 单线翻转归零码驱动例子

说明: 由于数据正并脉宽最短只有几百御李纳秒, 需要使用示波器根据资料举拆迹时序调驱动。

void Send_8bit(uchar dat)

{

uchar i

for(i=0i<8i++)

{

DAI=1

if(dat&0x80) // CODE_1

{

DAI=1_nop_()_nop_()_nop_()

DAI=1_nop_()_nop_()_nop_()

DAI=1_nop_()_nop_()_nop_()_nop_()

DAI=0_nop_()

} e

lse // CODE_0

{

DAI=1_nop_()_nop_()_nop_()

DAI=0_nop_()_nop_()_nop_()

DAI=0_nop_()_nop_()_nop_()

DAI=0_nop_()_nop_()_nop_()

} d

at=dat<<1

}

} v

oid Send_24bits(uchar dat1,uchar dat2,uchar dat3)

{

Send_8bit(dat1)

Send_8bit(dat2)

Send_8bit(dat3)

} v

oid Rst(void ) // Data-Low>>50 us

{

uint s

DAI=0

for(s=0s<50s++){_nop_()_nop_()_nop_()}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12527194.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存