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 пины