#include #include Servo myservo; int RECV_PIN = 7; unsigned long kt = 0; unsigned long val = 0; unsigned long tz = 0; //unsigned long kod_val = 0x57D22308; unsigned long kod_val = 0x8090040A; boolean zakryto=true; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver irrecv.blink13(true); myservo.attach(9); myservo.write (90); } void ctenie () { if (abs(millis()-kt)>600) { kt=millis(); if (RECV_PIN==6) { RECV_PIN=7; IRrecv irrecv(RECV_PIN); } else { RECV_PIN=6; IRrecv irrecv(RECV_PIN); } irrecv.enableIRIn(); irrecv.blink13(true); } if (irrecv.decode(&results)) { val=results.value; if (val!=0xFFFFFFFF){ Serial.print("r=");Serial.print(RECV_PIN); Serial.print(" kod=");Serial.println(val, HEX); } irrecv.resume(); // Receive the next value } } void otkr_left(){ Serial.println("left"); myservo.write (0); } void otkr_right(){ Serial.println("right"); myservo.write (240); } void zakr (){ Serial.println("zakr"); myservo.write (90); } void loop() { ctenie(); /**/ if (val==kod_val) { if (RECV_PIN==6){ if (zakryto) otkr_left(); // открыть дверцу в лево } else { if (zakryto) otkr_right(); // открыть дверцу на право } val=0; //сбросить val чтобы не входить несколко раз zakryto=false; // дверца открыта tz=millis(); //сбросить tz чтобы не закрывать дверцу } if (abs(millis()-tz)>7000){ // кончилось ли время?- 7 секунд без приближения к дверце if (!zakryto) zakr(); //закрыть дверцу zakryto=true; tz=millis(); } }