Прошу помощи новичку)
- Войдите на сайт для отправки комментариев
Вс, 17/05/2015 - 16:30
Есть скейч управления с пульта ду. Пульт у меня такой что при удержании любой кнопки меняет код кнопки на код удержания (например одно нажатие - 40BDA857 если продолжать держать кнопку то значение меняется на ffffffff) Как мне сделать так чтобы если держишь кнопку то значение ffffffff заменялся первым кодом.
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned long eventTime=0;
int timer = 12;
int L4 = 4;
int L5 = 5;
int L6 = 6;
int L7 = 7;
int L8 = 8;
int a=0;
int b=0;
int sba=0;
int sbb=0;
int sa = 9;
int sb = 10;
void setup(){
irrecv.enableIRIn();
pinMode(L4, OUTPUT);
pinMode(L5, OUTPUT);
pinMode(L6, OUTPUT);
pinMode(L7, OUTPUT);
pinMode(L8, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(sa, INPUT);
pinMode(sb, INPUT);
pinMode(timer, OUTPUT);
}
void loop() {
sba = digitalRead(sa);{
if (sba == HIGH) {a=a+1;}
if (a==1){digitalWrite(2, HIGH);} else {digitalWrite(2, LOW); a=0;}
}
sbb = digitalRead(sb);{
if (sbb == HIGH) {b=b+1;}
if (b==1){digitalWrite(3, HIGH);} else {digitalWrite(3, LOW); b=0;}
}
if (digitalRead(RECV_PIN) == LOW)
eventTime=millis(),digitalWrite(timer, HIGH);
if(millis()-eventTime>100) digitalWrite(timer, LOW)
,digitalWrite(L4, LOW),digitalWrite(L5, LOW),digitalWrite(L6, LOW),digitalWrite(L7, LOW),digitalWrite(L8, LOW);
if (irrecv.decode(&results)) {
if (results.value == 0x40BD48B7 || results.value == 0x40BD48B7 && (digitalRead(timer) == HIGH) )digitalWrite(L4, HIGH);
if (results.value == 0x40BDC837 || results.value == 0x40BDC837 && (digitalRead(timer) == HIGH) )digitalWrite(L5, HIGH);
if (results.value == 0x40BD08F7 || results.value == 0x40BD08F7 && (digitalRead(timer) == HIGH) )digitalWrite(L6, HIGH);
if (results.value == 0x40BD8877 || results.value == 0x40BD8877 && (digitalRead(timer) == HIGH) )digitalWrite(L7, HIGH);
if (results.value == 0x40BD12ED || results.value == 0x40BD12ED && (digitalRead(timer) == HIGH) )digitalWrite(L8, HIGH);
if (results.value == 0x40BD28D7) {a=a+1;}
if (results.value == 0x40BDA857) {b=b+1;}
if (a==1){digitalWrite(2, HIGH);} else {digitalWrite(2, LOW); a=0;}
if (b==1){digitalWrite(3, HIGH);} else {digitalWrite(3, LOW); b=0;}
{
delay(50);
}
irrecv.resume();
}
}
Вставка программного кода в тему/комментарий
Благодарю.