Управление RGB-светодиодом по сенсорной кнопке
- Войдите на сайт для отправки комментариев
Уважаемые соратники, требуется помощь. Нужен скетч по управлению RGB-светодиодом для arduino по нажатию сенсорной кнопки. Режим такой: Первое нажатие - включается режим смены рандомного цвета по кругу, без плавных переходов, задержка каждого цвета -2с; Второе нажатие - запоминаем последний цвет, просто горим им. Последующие нажатия - смена цвета на рандомный (смена цвета по нажатию). Нажатие и удержание (2с) - выкл.
Сам сваял два скетча, один работает по двойному клику, второй по короткому и длинному удержанию, а вот с переходом с цикла на горение последнего запомненного и последующих рандомных по одинарному короткому клику не получается. Скетчи могу предоставить, задонатить тоже. Срочно, курсач горит :(
Задонатить в любом случае придется, ибо вы написали в платный раздел. И точно не 200руб
Если ценник от 1000 устроит - могу взяться
не, не возьмусь
не, не возьмусь
" Мишка стал какой-то переменчивый..." из народного фольклора
Задонатить в любом случае придется, ибо вы написали в платный раздел. И точно не 200руб
Если ценник от 1000 устроит - могу взяться
Да я в общем и не рассчитывал на халяву)) 2 недели бился сам, 2 сценария реализовал, но не совсем то что надо. Потому и обращаюсь. Забыл добавить, rgb-светодиод не адресный, с общим катодом.
Вот тебе кнопка квона, поправишь 500 на 2000, это будет длинное нажатие
01
/*** Обработчик кнопки ***/
02
//------Cl_Btn----------------------
03
enum
{sbNONE = 0, sbClick, sbLong};
/*состояние не изменилось/клик/долгое нажатие*/
04
class
Cl_Btn {
05
protected
:
06
const
byte
pin;
07
byte
state;
08
bool
bounce = 0;
09
bool
btn = 1, oldBtn;
10
unsigned
long
past;
11
const
uint32_t time = 500 ;
12
bool
flag = 0;
13
uint32_t past_flag = 0 ;
14
public
:
15
Cl_Btn(
byte
p): pin(p) {}
16
/*инициализация-вставить в setup()*/
17
void
init() {
18
pinMode(pin, INPUT_PULLUP);
19
}
20
/*работа-вставить в loop()*/
21
void
run() {
22
state = sbNONE;
23
bool
newBtn = digitalRead(pin);
24
if
(!bounce && newBtn != btn) {
25
bounce = 1;
26
past = mill;
27
}
28
if
(bounce && mill - past >= 10) {
29
bounce = 0 ;
30
oldBtn = btn;
31
btn = newBtn;
32
if
(!btn && oldBtn) {
33
flag = 1;
34
past_flag = mill;
35
}
36
if
(!oldBtn && btn && flag && mill - past_flag < time ) {
37
flag = 0;
38
state = sbClick;
39
}
40
}
41
if
(flag && mill - past_flag >= time ) {
42
flag = 0;
43
state = sbLong;
44
}
45
}
46
byte
read() {
47
return
state;
48
}
49
};
50
Cl_Btn Btn2(
/*пин*/
BUTTON_ENCODER);
//Экземпляр обработчика для кнопки
напишу
nemohack@yandex.ru
Что значит "рандомного цвета по кругу"?
светодиод круглый
Непрерывный спектр знаю, но тут цвет без плавных переходов - это сколько цветов?
255х255х255 = 16581375
ua6em Спасибо, но у меня проблема именно с выходом из цикла по короткому нажатию. Скетчи делал как раз на подобном примере.
По кругу имеется в виду в цикле. Цвет рандомный в виде подачи шим random(0-255) на каждый канал в каждой интерации цикла.
255х255х255 = 16581375 * 2 секунды)))
white4spirit73, пиcните htpicc@gmail.com. Вижу вы не лодырь.)
Уточните два момента.
1. Кнопка сенсорная - но это предполагает работу по ёмкости, сопротивлению и т.д. Тут в скетче вижу digitalRead, т.е. кнопка должна менять потенциал ноги MCU. Уточните, какая всё таки будет кнопка.
2. ШИМ у Вас должен быть аппаратный или программный?
Вообще распишите техзадание подробнее, чтобы можно было определиться с объёмом работы, ну заодно и какие косяки у Вас были (что не получилось).
Уточните два момента.
1. Кнопка сенсорная - но это предполагает работу по ёмкости, сопротивлению и т.д. Тут в скетче вижу digitalRead, т.е. кнопка должна менять потенциал ноги MCU. Уточните, какая всё таки будет кнопка.
2. ШИМ у Вас должен быть аппаратный или программный?
Вообще распишите техзадание подробнее, чтобы можно было определиться с объёмом работы, ну заодно и какие косяки у Вас были (что не получилось).
Скетч уже в разработке У Бармалей, спасибо за участие!
Кнопка типа TTP223 c режимом триггера, с запаянной А перемычкой, дает 1 в режиме покоя и 0 при нажатии.
ШИМ аппаратный стандартный для arduino.