RGB led лампа
- Войдите на сайт для отправки комментариев
Всем привет! делаю проект, состоит он из arduino nano/pro mini(168), rgb ws2812b светодиодов (24 штуки), dht 11, для управления лентой использую bluetooth и три реостата ( переключаюсь между ними), для включения и выключения использую ультразвуковой датчик расстояния hc-sr04 и кнопку, вот возникли вопросы, начал собирать и экспериментировать, сделал такой код, покамись для обычного rgb светодиода, и без кнопок и ульразвукового модуля, чтобы отладить bluetooth (использую приложение remotexy), вобщем код работает, только почему-то цвет на rgb светодеоде меняется с большой задержкой (1-3 секцнды), скажите пожалуйста, из-за чего так происходит. И второй вопрос, для питания планирую использовать аккумулятор на 3.7 вольта, заказал три преобразователя dc-dc step up MT3608 подойдут ли они? или что-то другое нужно использовать?
вот сам код
#include "DHT.h" #define DHTTYPE DHT11 // DHT 11 #define DHTPIN 10 DHT dht(DHTPIN, DHTTYPE); /* определение режима соединения и подключение библиотеки RemoteXY */ #define REMOTEXY_MODE__HC05_SOFTSERIAL #include <SoftwareSerial.h> #include <RemoteXY.h> /* настройки соединения */ #define REMOTEXY_SERIAL_RX 2 #define REMOTEXY_SERIAL_TX 3 #define REMOTEXY_SERIAL_SPEED 9600 /* конфигурация интерфейса */ unsigned char RemoteXY_CONF[] = { 4,11,70,0,5,5,0,4,0,3 ,0,9,44,6,4,0,16,0,9,44 ,4,4,0,30,0,9,44,1,3,3 ,63,12,10,28,2,67,4,45,48,20 ,5,2,11,129,0,1,47,40,6,9 ,209,130,208,181,208,188,208,191,208,181 ,209,128,208,176,209,130,209,131,209,128 ,208,176,32,0 }; /* структура определяет все переменные вашего интерфейса управления */ struct { /* input variable */ signed char slider_1; /* =0..100 положение слайдера */ signed char slider_2; /* =0..100 положение слайдера */ signed char slider_3; /* =0..100 положение слайдера */ unsigned char select_1; /* =0 если переключатель в положении A, =1 если в положении B, =2 если в положении C, ... */ /* output variable */ char text_1[11]; /* =строка оканчивающаяся нулем UNICODE */ /* other variable */ unsigned char connect_flag; /* =1 if wire connected, else =0 */ } RemoteXY; ///////////////////////////////////////////// // END RemoteXY include // ///////////////////////////////////////////// #define PIN_SWITCH_1 13 #define led1 5 #define led2 6 #define led3 9 void setup() { RemoteXY_Init (); dht.begin(); pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); RemoteXY.slider_1 = 0; RemoteXY.slider_2 = 0; RemoteXY.slider_3 = 0;// TODO you setup code // TODO you setup code // TODO you setup code } void loop() { RemoteXY_Handler (); float t = dht.readTemperature(); dtostrf(t, 0, 1, RemoteXY.text_1); int r; int g; int b; if (RemoteXY.select_1==0) { /* текущее состояние A */ } else if (RemoteXY.select_1==1) { r= RemoteXY.slider_1*2.55; g= RemoteXY.slider_2*2.55; b= RemoteXY.slider_3*2.55; // TODO you loop code analogWrite(led1,r); analogWrite(led2,g); analogWrite(led3,b); // используйте структуру RemoteXY для передачи данных delay(1); /* текущее состояние B */ } else if (RemoteXY.select_1==2) { /* текущее состояние C */ } else if (RemoteXY.select_1==3) { /* текущее состояние D */ } // TODO you loop code // используйте структуру RemoteXY для передачи }
он будет доработан, и вот ещё такой вопрос, хватит ли мощности atmega 328/168 чтобы ещё подключить ультразвуковой модуль и за всем этим следить? ил лучше тогда использовать две платы ардуино?
уточню, два способа управления, при помощи bluetooth и реостатов (для них код уже есть)
эх, и никто не знает в чём проблема?!...
По поводу времени срабатывания (изменения цвета ленты) после каких-либо действий в приложении RemoteXY: Вы программный RX/TX используете или хардварный? Как правило такие дикие задержки возникают если используете програмую эмуляцию порта (библиотека softwareserial ....)
большое спасибо за ответ, попробую, т.к. у меня переназначены rx и tx на 2 и 3 пины