[英]How can I made a rgb led works in mplab for a PIC18F4550?
I've tried in C to make the WS2812 works in mplab with pic18f4550, the energy reach the led, but it doesn't turn on and I can't select the led that I ant to use, but it doesn't, how我可以解决这个问题吗? 这是我正在使用的代码:谢谢
main.c
#define _XTAL_FREQ 4000000UL
#include "config.h"
#include "ws2812.h"
void main(void) {
ADCON1=0b00001111;
TRISB=0b00000001;
if (energy_port==1){
pin_strip_led=1;
ws2812_setPixelColorLed(1, ws2812_Color(255, 0, 0));
}
else{
pin_strip_led=0;
}
return;
}
这是我在 ws2812.h 中使用的:
#define STRIP_SIZE 8
#define pin_strip_led PORTBbits.RB1
#define energy_port PORTBbits.RB0
void ws2812_setPixelColorLed(unsigned char pixel, unsigned long color) {
Strip_RGBData[pixel][0] = (char) (color >> 16);
Strip_RGBData[pixel][1] = (char) (color >> 8);
Strip_RGBData[pixel][2] = (char) (color);
}
unsigned long ws2812_Color(unsigned char r, unsigned char g, unsigned char b) {
return ((unsigned long) r << 16) | ((unsigned long) g << 8) | b;
}
所示程序将读取端口 B0,将 B1 设置为相同的 state,如果设置,则填充数组 Strip_RGBData 的一行(既未声明也未使用)。 它会这样做一次。 你问:“我该如何解决这个问题?”
WS2812 数据表是一个很好的起点。 使用它来确定如何组成控制 LED 所需的信号。 在您的代码中设置一个计时器,以按照时序要求输出该信号的位。
之后,您可以添加一个循环来读取 select 单个 LED 的输入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.