// проект автозапуск бензинового генератора на ARDURINO Ver 090717
//задаю константы
const int analogPin = A3; // номер порта к которому подключен датчик уровня топлива
const int city = 2; // напряжение из города
const int he_voltage = 4; //напряжение на генераторе
const int starter_relay = 5; //реле стартера
const int choke_on = 6; // подсос включить
const int choke_of = 7; // подсос выключить
const int magnetic = 8; // включает пускатель
const int disconnection = 9; //реле датчика масла
const int magnetic_of = 10; // вЫключает пускатель
const int ledPin_11 = 11; // номер порта к которому подключен красный диод(авария)
const int ledPin_12 = 12; // номер порта к которому подключен зеленый диод(сеть город)
const int ledPin_13 = 13; // номер порта к которому подключен зеленый диод(генерат.)
const int ton = 3; // номер порта к которому подключена пищалка
// задаю переменные
int t = 0; //отображает работу генератора
int m = 0; //отображает наличие напряжения в сети
int a = 0; //количество попыток запуска ген
int val = 0; // переменная для хранения считываемого значения с
int rav = 0; //переменная для хранения диапозона уровня топлива
int pop = 0; //отображает тревогу
int g = 0; //количество команд на пускатель
void setup()
{
//
pinMode(ledPin_11, OUTPUT); // устанавливает режим работы - выход
pinMode(ledPin_12, OUTPUT); // устанавливает режим работы - выход
pinMode(ledPin_13, OUTPUT); // устанавливает режим работы - выход
pinMode(ton, OUTPUT); // устанавливает режим работы - выход
pinMode(city, INPUT); // назначаем входом напряжение из города в схеме
pinMode(he_voltage, INPUT); // назначаем the_voltage входом напряжение с генератора
pinMode(starter_relay, OUTPUT); //назначаем starter_relay выходом реле стартера
pinMode(choke_on, OUTPUT); //назначаем choke_on выходом подсос включает
pinMode(choke_of, OUTPUT); //назначаем choke_of выходом подсос вЫключает
pinMode(magnetic, OUTPUT); //назначаем magnetic выходом переключает пускатели на генератор
pinMode(disconnection, OUTPUT); //назначаем disconnection выходом включает и выключает зажигание
pinMode(magnetic_of, OUTPUT); //назначаем magnetic выходом переключает пускатели на генератор
// Serial.begin(9600); // установка связи по serial
digitalWrite(magnetic, LOW);
digitalWrite(magnetic_of,LOW);
digitalWrite(disconnection, LOW);
digitalWrite(starter_relay, LOW);
}
void loop()
{
//мониторинг город.сети
if(digitalRead(city)==HIGH)
digitalWrite(ledPin_12, HIGH);
delay(1000);
digitalWrite(ledPin_12, LOW);
delay(1000);
if(digitalRead(city)==LOW)
digitalWrite(ledPin_12, LOW);
//мониторинг генер сети
if(digitalRead(he_voltage)==HIGH)
digitalWrite(ledPin_13, HIGH);
delay(1000);
digitalWrite(ledPin_13, LOW);
delay(1000);
if(digitalRead(he_voltage)==LOW)
digitalWrite(ledPin_13, LOW);
m = digitalRead(city);
t = digitalRead(he_voltage);
if (t == LOW && m == LOW && a < 4)
{
if (a==0)
{
digitalWrite(ton, HIGH); //подаюм команду тон
delay(2000); //пауза 2 сек
digitalWrite(ton, LOW); //подаюм команду - тон
}
digitalWrite(disconnection, HIGH); //подаюм команду + на включение зажигания
delay(3000); //пауза 3 сек
digitalWrite(choke_on, HIGH); //подаюм команду + на открытие подсоса
delay(700); //пауза 0,7 сек
digitalWrite(choke_on, LOW); //прекращаем команду - на открытие подсоса
delay(1000);
digitalWrite(starter_relay, HIGH); //подаюм команду + на реле стартера
delay(2000); //пауза 2 сек
digitalWrite(starter_relay, LOW); //прекращаем команду - на реле стартера
delay(2500);
digitalWrite(choke_of, HIGH); //подаюм команду + на закрытие подсоса
delay(500); //пауза 0,5 сек
digitalWrite(choke_of, LOW); //прекращаем команду - на закрытие подсоса
a++;
}
if (t == LOW && m == LOW && rav == 3 && pop == 0 || t == LOW && m == LOW && a >= 4 && pop == 0 )
{
digitalWrite(ton, HIGH); //подаюм команду тон
delay(1500); //пауза 2 сек
digitalWrite(ton, LOW); //подаюм команду - тон
delay(1000);
digitalWrite(ton, HIGH); //подаюм команду тон
delay(1500); //пауза 2 сек
digitalWrite(ton, LOW); //подаюм команду - тон
delay(1000);
digitalWrite(ton, HIGH); //подаюм команду тон
delay(1500); //пауза 2 сек
digitalWrite(ton, LOW); //подаюм команду - тон
delay(1000);
digitalWrite(ton, HIGH); //подаюм команду тон
delay(1500); //пауза 2 сек
digitalWrite(ton, LOW); //подаюм команду - тон
pop++;
digitalWrite(disconnection, LOW);
digitalWrite(ledPin_11, HIGH); // включает светодиод
}
if (t == HIGH && m == LOW && g == 0 )
{
digitalWrite(ledPin_11, LOW); // выключает светодиод
digitalWrite(disconnection, HIGH);
delay(30000);
digitalWrite(magnetic, HIGH);
delay(1000); //пауза 1 сек
digitalWrite(magnetic, LOW);
g++;
}
if (t == LOW && m == LOW && a >=0 )
{
g = 0;
}
if (t == HIGH && m == HIGH || rav == 3 && t == HIGH )
{
digitalWrite(magnetic_of, HIGH);
delay(1000); //пауза 1 сек
digitalWrite(magnetic_of, LOW);
delay(30000); //пауза 30 сек
digitalWrite(disconnection, LOW);
g = 0;
}
if (t == LOW && m == HIGH || t == HIGH && m == LOW )
{
a = 0;
}
if (t == LOW && m == HIGH || t == HIGH && m == LOW )
{
pop = 0;
}
}