Ик диммер на двух кнопках

rave0000
Offline
Зарегистрирован: 03.12.2014

Здраствуйте форумчане! прошу помощи для новичка. Как сделать чтобы ик диммер работал от двух кнопок тоесть короткое нажатие вкл.выкл. длинное яркость +/- вот скетч если можно помогите!

#include
int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;
int i;
void setup()
{
irrecv.enableIRIn(); // Start the receiver
pinMode(11, OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
if(results.value==0x1 || results.value==0x801){
i=255;
}
if(results.value==0x4 || results.value==0x804){
i=0;
}
if(results.value==0x2 || results.value==0x802){
if(i < 255){
i+=5;
}
}
if(results.value==0x3 || results.value==0x803){
if(i > 0){
i-=5;
}
}
analogWrite(11, i);
irrecv.resume();
}
}

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Очевидно что нужно определить нажатие, принятый код сохранить.

дальше нужно считать повторы кода если приняли много то с каждым следующим начинаем менять яркость(+ или - в зависимости от кода). таймаут сбрасывется каждый раз когда получаем код. Если таймаут достиг какогото числа то - это время бездействия то если приняли мало - это было короткое нажатие - выполняем действие вкл или выкл, далее сбросить переменные подсчета и принятого кода.

 

rave0000
Offline
Зарегистрирован: 03.12.2014

Уважаемый NeiroN ! а можно код по подробнее плиз ! 

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Код нужно писать, а сейчас мне лень. Разберитесь сначала как работает ваш пульт - должен повторять код нажатой кнопки. Посмотрете в сериал какие коды приходят от пульта, какая периодичность их повтора. От этого будет зависеть конечная программа.

rave0000
Offline
Зарегистрирован: 03.12.2014

Пульт от телека горизонт протокол RC5 коды кнопок вкл.1 код повтора 801. выкл.2 код повтора 802.

в сериале так и пишет         1

                                              801

                                              2

                                              802

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

http://www.sbprojects.com/knowledge/ir/rc5.php

Здесь есть описание протокола RC5. Кода повтора нет, долго нажатая кнопка выдаёт один и тот же код с определённым периодом 114мс.
rave0000
Offline
Зарегистрирован: 03.12.2014

Ну ктонибуть дайте код  плиз ! причем тут коды кнопок яже исходник выложил пульт от горизонта ! протокол RC5. 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

пример из либы просто запусти и открой терминал. и скинь сюда то что в сериале будет только с комментариями какую кнопку нажимал и как только держал

только посмотри как правильно код вставлять

rave0000
Offline
Зарегистрирован: 03.12.2014

ок ! щя сделаю

rave0000
Offline
Зарегистрирован: 03.12.2014
01#include <IRremote.h>
02int RECV_PIN = 7;
03IRrecv irrecv(RECV_PIN);
04decode_results results;
05int i;
06void setup()
07{
08irrecv.enableIRIn(); // Start the receiver
09pinMode(11, OUTPUT);
10}
11void loop() {
12if (irrecv.decode(&results)) {
13if(results.value==0x1 || results.value==0x801){// кнопка вкл.
14i=255;
15}
16if(results.value==0x4 || results.value==0x804){//кнопка выкл.
17i=0;
18}
19if(results.value==0x2 || results.value==0x802){//яркость +
20if(i < 255){
21i+=5;
22}
23}
24if(results.value==0x3 || results.value==0x803){//яркость -
25if(i > 0){
26i-=5;
27}
28}
29analogWrite(11, i);
30irrecv.resume();
31}
32}

 

rave0000
Offline
Зарегистрирован: 03.12.2014

Это на четырех кнопках. а как на двух ума не приложу ! 

 

rave0000
Offline
Зарегистрирован: 03.12.2014

по поводу сериала держишь кнопку яркости + идут 22222222222222222222222222.

а однократное нажатие 802.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

коды состветствует соответствуют твоему пульту?

rave0000
Offline
Зарегистрирован: 03.12.2014

да да да!!!

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

какие кнопки будешь использовать?

этот код работает? как надо?

rave0000
Offline
Зарегистрирован: 03.12.2014

да в железе проверял все работает ! если две кнопки то тогда 1 вкл. 4 выкл.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

идут 222222 в одну строку?

приложи код для проверки кнопок из примеров

rave0000
Offline
Зарегистрирован: 03.12.2014
012
022      //держишь кнопку
032
042
052
062
072
08802
09802
10802
11802   //держишь кнопку
12802
13802
142
152
162
172
18802  //один раз нажали
192    //один раз нажали
20802

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

понятно. или то или другое

завтра набросаю. сейчас времени нет

rave0000
Offline
Зарегистрирован: 03.12.2014

ок ! спасибо большое. 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

вроде должно получится что то вроде этого

допиливать конечно надо

 

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Где-то я такой код уже видел...

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

не я не копипастил. взял только то что дал человек

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

кстати Gippopotam может предложишь как сделать код лучше?

ты ведь делаешь серьезные заказы, и код наверно совершенно по другому пишешь

интересно как бы ты такой код сделал

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

jeka_tm пишет:

кстати Gippopotam может предложишь как сделать код лучше?

ты ведь делаешь серьезные заказы, и код наверно совершенно по другому пишешь

интересно как бы ты такой код сделал

Сарказм?

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

неа. с чего бы

rave0000
Offline
Зарегистрирован: 03.12.2014

Чевото не так работает.
Был дома на обеде щя работаю вечером выду на связь.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

что конкретно не так. я же не экстрасенс

задержку думаю надо добавить

rave0000
Offline
Зарегистрирован: 03.12.2014

Здарово ! проблема в следующем: при включении светодиода удерживаем кнопку яркость + диод сразу резко тухнет не до конца и после 

этого набирает яркость до максимума и так по кругу. а при удержании кнопки яркость - доходит до минимума и тоже по кругу.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

видео сними

rave0000
Offline
Зарегистрирован: 03.12.2014

хорошо !

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

пробуй

 

rave0000
Offline
Зарегистрирован: 03.12.2014

работает только регулировка яркости правильно ! но вкл. и выкл. нет.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

а если вкл выкл нажать что происходит?

rave0000
Offline
Зарегистрирован: 03.12.2014

ничего просто яркость регулируется.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну время и желание будет может доделаю. сейчас не могу

rave0000
Offline
Зарегистрирован: 03.12.2014

хорошо !

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

про видео не забудь

rave0000
Offline
Зарегистрирован: 03.12.2014

Здарово ! я так подумал что толку видео снимать если работает только при удержании кнопок регулировка яркости которая бегает по кругу !

rave0000
Offline
Зарегистрирован: 03.12.2014
rave0000
Offline
Зарегистрирован: 03.12.2014

 

rave0000
Offline
Зарегистрирован: 03.12.2014

Прошу помощи jeka_tm вот немного изменил код так работает только есть одно но : когда увеличиваю или уменьшаю яркость при отпускании кнопки на месте значение не астается а включается или выкл. канал. прошу помощи допилить этот код !

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

зачем добавил

flag уже не используется местами

rave0000
Offline
Зарегистрирован: 03.12.2014

ну незнаю ! просто с flag работает точно также ! кстати видео снял только не знаю как его добавить сюда.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

сюда только ссылка

rave0000
Offline
Зарегистрирован: 03.12.2014

а видос куда сохранить чтобы ссылку потом скопировать?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

youtube например

rave0000
Offline
Зарегистрирован: 03.12.2014

загружаю на ютуб!

rave0000
Offline
Зарегистрирован: 03.12.2014

 

rave0000
Offline
Зарегистрирован: 03.12.2014

Все разобрался ! работает ! есть чем проверить?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

работает как надо?

могу проверить но зачем если работает

про время смотрю вообще все убрал. как отслеживать тогда?