#include <IRremote.h> // библиотека ИК приемника
int RECV_PIN = 2; // приемник подключен к D2
int BEEP_PIN = 3; // пищалка к D3
int REELAY_PIN = 4; // реле к D4
int SELECT_PIN = 6; // кнопка "селект" к D6
int POWER_PIN = 7; // кнопка "питание" к D7
int SELECT_OUT1 = 8;
int SELECT_OUT2 = 9;
int SELECT_OUT3 = 10;
int SELECT_OUT4 = 11;
long result_power = 1401758429; // код кнопки пульта power
long result_select = 1401812999; // код кнопки пульта селект вход
int i, j, numb;
unsigned long code[5];
long sum;
int TEMP_POWER_KNOB = 0;
IRrecv irrecv(RECV_PIN);
decode_results results;
long previousMillis = 0;
long previousMillis1 = 0;
long previousMillis2 = 0;
unsigned long currentMillis;
int timer = 0;
long result;
int power=1;
int proof = 1;
int select = 0;
int temp_select = 0;
int select_out = 0;
void setup()
{
digitalWrite(REELAY_PIN, 1); // если реле включается "0" то digitalWrite(REELAY_PIN, 1);
pinMode(BEEP_PIN, OUTPUT);
pinMode(RECV_PIN,INPUT_PULLUP);
pinMode(POWER_PIN,INPUT_PULLUP);
pinMode(SELECT_PIN,INPUT_PULLUP);
pinMode(REELAY_PIN, OUTPUT);
pinMode(SELECT_OUT1, OUTPUT);
pinMode(SELECT_OUT2, OUTPUT);
pinMode(SELECT_OUT3, OUTPUT);
pinMode(SELECT_OUT4, OUTPUT);
Serial.begin(115200);
irrecv.enableIRIn(); // Start the receiver
bip(); delay(200); bip(); delay(200); bip(); // гудочки при включении
}
void loop() {
currentMillis = millis();
if (currentMillis - previousMillis > 996)
{
previousMillis = currentMillis;
timer++;
}
if (timer == 5)for (j = 0; j < 5; j++)
{
code[j] = -1;
timer = 0;
}
if (currentMillis - previousMillis1 > 11)
{
int in = digitalRead(POWER_PIN);
if ( in == 0 && TEMP_POWER_KNOB<30) TEMP_POWER_KNOB +=1;
if ( in == 1 && TEMP_POWER_KNOB>1) TEMP_POWER_KNOB -=2;
previousMillis1 = currentMillis;
//Serial.print("TEMP_POWER_KNOB="); Serial.println(TEMP_POWER_KNOB);
}
if (currentMillis - previousMillis2 > 5)
{
int in1 = digitalRead(SELECT_PIN);
if ( in1 == 0 && temp_select<30) temp_select +=1;
if ( in1 == 1 && temp_select>1) temp_select -=2;
previousMillis2 = currentMillis;
//Serial.print("temp_select="); Serial.println(temp_select);
}
if (temp_select == 29){temp_select+=1;bip();select_out +=1;}
//Serial.print("select_out="); Serial.println(select_out);
if (select_out > 3)select_out = 0;
if (select_out == 0){digitalWrite(SELECT_OUT1,1);digitalWrite(SELECT_OUT4,0);}
if (select_out == 1){digitalWrite(SELECT_OUT2,1);digitalWrite(SELECT_OUT1,0);}
if (select_out == 2){digitalWrite(SELECT_OUT3,1);digitalWrite(SELECT_OUT2,0);}
if (select_out == 3){digitalWrite(SELECT_OUT4,1);digitalWrite(SELECT_OUT3,0);}
if (irrecv.decode(&results))
{
result = results.value;
result = abs(result);
if (result==1)result=111;
Serial.print("result="); Serial.println(result);
delay(300);
irrecv.resume();
}
if (result == result_power || TEMP_POWER_KNOB == 29)
{
power = !power;
if (power ==0)bipm();
if (power ==1)bipm1();
digitalWrite(REELAY_PIN, !power ? LOW : HIGH); // внимание!!!
result = 0;
}
if (result == result_select)
{
select_out +=1;
result = 0;
bip();
}
}
void bipf()
{
//100 155 170 частоты
for (j = 155; j > 100; j -= 4)
{
for (i = 0; i < 25; i++)
{
digitalWrite(BEEP_PIN, HIGH);
delayMicroseconds(j);
digitalWrite(BEEP_PIN, LOW);
delayMicroseconds(j);
}
}
}
void bipm()
{
//100 155 170
for (j = 180; j > 90; j -= 20)
{
for (i = 0; i < 70; i++)
{
digitalWrite(BEEP_PIN, HIGH);
delayMicroseconds(j);
digitalWrite(BEEP_PIN, LOW);
delayMicroseconds(j);
}
delay(50);
}
}
void bipm1()
{
//100 155 170
for (j = 90; j < 180; j += 20)
{
for (i = 0; i < 70; i++)
{
digitalWrite(BEEP_PIN, HIGH);
delayMicroseconds(j);
digitalWrite(BEEP_PIN, LOW);
delayMicroseconds(j);
}
delay(50);
}
}
void bip()
{
//100 155 170
for (i = 0; i < 10; i++)
{
digitalWrite(BEEP_PIN, HIGH);
delayMicroseconds(170);
digitalWrite(BEEP_PIN, LOW);
delayMicroseconds(170);
}
}
[свернуть]
Социальные закладки