#c #pic
#c #рис
Вопрос:
Я пытался на C заставить WS2812 работать в mplab с pic18f4550, энергия достигает светодиода, но он не включается, и я не могу выбрать светодиод, который я использую, но это не так, как я могу это решить? Это код, который я использую: Спасибо
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;
}
Комментарии:
1. Вам нужно будет быть более точным, чтобы люди могли вам помочь. Какие библиотеки? Что вы пытаетесь сделать? Что не работает?
Ответ №1:
Показанная программа прочитает порт B0, установит B1 в то же состояние и, если установлено, заполнит одну строку массива Strip_RGBData (который не объявлен и не используется). Это будет сделано один раз. Вы спрашиваете: «Как я могу это решить?»
Хорошее место для начала — это таблица данных WS2812. Используйте его, чтобы определить, как составить сигнал, необходимый для управления светодиодами. В вашем коде настройте таймер для синхронизации битов этого сигнала в соответствии с требованиями синхронизации.
После того, как это сработает, вы можете добавить цикл для считывания входных данных для выбора отдельного светодиода.
Комментарии:
1. На самом деле, я пытался объявлять RGBData везде, где я мог бы его использовать, но это не сработало, и я не знаю, куда еще я могу его поместить. Согласно тому, что я читал об этом, я должен использовать задержку, я пробовал, но не сработало.