//Эмуляция работы Quick Glow Mitsubishi v 1.0
//
// Подключение делителя напряжения к ARDUINO
// Arduino 5V -> R1 10kOm -> Arduino Analog 0 -> R2 -> Arduino GND
int t12 = 0; // время для реле 12v
int t6s = 0; // время для реле 6v при старте
int t6r = 0; // время для реле 6v при работе двигателя
int tp6 = 3000; // время для паузы реле 6v
int analogPin = 0; // Анлоговый вход для считывания напряжения с делителя напряжения
float Vout = 0; // Переменная для хранения значения напряжения в средней точки делителя (0-5.0)
float R2 = 0; // Переменная для хранения значения резистора R2
int var = 0; // вариант программы
void setup()
{
pinMode(12, OUTPUT);
pinMode(6, OUTPUT);
digitalWrite(12, HIGH);
digitalWrite(6, HIGH);
Serial.begin(9600); // Подготовка Serial Monitor для вывода информации
}
void loop()
{
Vout = (5.0 / 1023.0) * analogRead(analogPin); // Вычисляем напряжение в средней точки делителя (0-5.0)
R2 = 10000 / ((5.0 / Vout) - 1); // Вычисляем сопротивление R2 (10000 это значение R1 10 кОм)
Serial.print("Voltage: "); //
Serial.println(Vout); // Напряжения в средней точки делителя (0-5.0) для справки
Serial.print("R: "); //
Serial.print(R2); // Значение сопротивления R2
Serial.println("Om");
delay(1000); // Пауза 1 сек
if (R2 < 50000) var = 1,t12 = 8000,t6s = 25000,t6r = 9000,tp6 = 3000;
if (R2 < 22000) var = 2,t12 = 8000,t6s = 25000,t6r = 9000,tp6 = 3000;
if (R2 < 15000) var = 3,t12 = 8000,t6s = 25000,t6r = 9000,tp6 = 3000;
if (R2 < 8600) var = 4,t12 = 7000,t6s = 15000,t6r = 5000,tp6 = 1500;
if (R2 < 5000) var = 5,t12 = 7000,t6s = 15000,t6r = 5000,tp6 = 1500;
if (R2 < 3000) var = 6,t12 = 6000,t6s = 10000,t6r = 3000,tp6 = 1000;
if (R2 < 2000) var = 7,t12 = 6000,t6s = 3000,t6r = 0,tp6 = 0;
if (R2 < 1900) var = 8;t12 = 0,t6s = 0,t6r = 0,tp6 = 0;
Serial.print("VAR: "); //
Serial.println(var);
switch (var)
{
case 1:
digitalWrite(12, LOW); // 12 v ON
digitalWrite(6, LOW); // 6 v ON
delay(8000); // в delay лучше поставить переменную t12 по аналогии ругие заменить
digitalWrite(12, HIGH); // 12 v OFF
delay(25000);
digitalWrite(6, HIGH); // 6 v OFF
delay(3000); // 6v пауза
digitalWrite(6, LOW);
delay(3000); // 6v работа
digitalWrite(6, HIGH);
delay(3000);
// цикл 6в реле
digitalWrite(6, LOW);
delay(9000);
digitalWrite(6, HIGH);
delay(3000);
digitalWrite(6, LOW);
delay(9000);
digitalWrite(6, HIGH);
delay(3000);
digitalWrite(6, LOW);
delay(9000);
digitalWrite(6, HIGH);
delay(3000);
digitalWrite(6, LOW);
delay(9000);
digitalWrite(6, HIGH);
delay(3000);
digitalWrite(6, LOW);
delay(9000);
digitalWrite(6, HIGH);
delay(3000);
while (true) {};
break;
case 2:
digitalWrite(12, LOW); // 12 v ON
digitalWrite(6, LOW); // 6 v ON
delay(8000);
digitalWrite(12, HIGH); // 12 v OFF
delay(25000);
digitalWrite(6, HIGH); // 6 v OFF
delay(3000); // 6v пауза
digitalWrite(6, LOW);
delay(9000); // 6v работа
digitalWrite(6, HIGH);
delay(3000);
// цикл 6в реле
digitalWrite(6, LOW);
delay(9000);
digitalWrite(6, HIGH);
delay(3000);
digitalWrite(6, LOW);
delay(9000);
digitalWrite(6, HIGH);
delay(3000);
digitalWrite(6, LOW);
delay(9000);
digitalWrite(6, HIGH);
delay(3000);
digitalWrite(6, LOW);
delay(9000);
digitalWrite(6, HIGH);
delay(3000);
digitalWrite(6, LOW);
delay(9000);
digitalWrite(6, HIGH);
delay(3000);
while (true) {};
case 3:
digitalWrite(12, LOW); // 12 v ON
digitalWrite(6, LOW); // 6 v ON
delay(8000);
digitalWrite(12, HIGH); // 12 v OFF
delay(25000);
digitalWrite(6, HIGH); // 6 v OFF
delay(9000); // 6v пауза
digitalWrite(6, LOW);
delay(3000); // 6v работа
digitalWrite(6, HIGH);
delay(3000);
// цикл 6в реле
digitalWrite(6, LOW);
delay(9000);
digitalWrite(6, HIGH);
delay(3000);
digitalWrite(6, LOW);
delay(9000);
digitalWrite(6, HIGH);
delay(3000);
digitalWrite(6, LOW);
delay(9000);
digitalWrite(6, HIGH);
delay(3000);
digitalWrite(6, LOW);
delay(9000);
digitalWrite(6, HIGH);
delay(3000);
digitalWrite(6, LOW);
delay(9000);
digitalWrite(6, HIGH);
delay(3000);
while (true) {};
break;
case 4:
digitalWrite(12, LOW); // 12 v ON
digitalWrite(6, LOW); // 6 v ON
delay(7000);
digitalWrite(12, HIGH); // 12 v OFF
delay(1500);
digitalWrite(6, HIGH); // 6 v OFF
delay(3000); // 6v пауза
digitalWrite(6, LOW);
delay(5000); // 6v работа
digitalWrite(6, HIGH);
delay(2000);
// цикл 6в реле
digitalWrite(6, LOW);
delay(5000);
digitalWrite(6, HIGH);
delay(2000);
digitalWrite(6, LOW);
delay(5000);
digitalWrite(6, HIGH);
delay(2000);
digitalWrite(6, LOW);
delay(5000);
digitalWrite(6, HIGH);
delay(2000);
digitalWrite(6, LOW);
delay(5000);
digitalWrite(6, HIGH);
delay(2000);
digitalWrite(6, LOW);
delay(5000);
digitalWrite(6, HIGH);
delay(2000);
while (true) {};
break;
case 5:
digitalWrite(12, LOW); // 12 v ON
digitalWrite(6, LOW); // 6 v ON
delay(6000);
digitalWrite(12, HIGH); // 12 v OFF
delay(15000);
digitalWrite(6, HIGH); // 6 v OFF
delay(3000); // 6v пауза
digitalWrite(6, LOW);
delay(5000); // 6v работа
digitalWrite(6, HIGH);
delay(2000);
// цикл 6в реле
digitalWrite(6, LOW);
delay(5000);
digitalWrite(6, HIGH);
delay(2000);
digitalWrite(6, LOW);
delay(5000);
digitalWrite(6, HIGH);
delay(2000);
digitalWrite(6, LOW);
delay(5000);
digitalWrite(6, HIGH);
delay(2000);
digitalWrite(6, LOW);
delay(5000);
digitalWrite(6, HIGH);
delay(2000);
digitalWrite(6, LOW);
delay(5000);
digitalWrite(6, HIGH);
delay(2000);
while (true) {};
break;
case 6:
digitalWrite(12, LOW); // 12 v ON
digitalWrite(6, LOW); // 6 v ON
delay(6000);
digitalWrite(12, HIGH); // 12 v OFF
delay(10000);
digitalWrite(6, HIGH); // 6 v OFF
delay(3000); // 6v пауза
digitalWrite(6, LOW);
delay(3000); // 6v работа
digitalWrite(6, HIGH);
delay(1000);
// цикл 6в реле
digitalWrite(6, LOW);
delay(3000);
digitalWrite(6, HIGH);
delay(1000);
digitalWrite(6, LOW);
delay(3000);
digitalWrite(6, HIGH);
delay(1000);
digitalWrite(6, LOW);
delay(3000);
digitalWrite(6, HIGH);
delay(1000);
digitalWrite(6, LOW);
delay(3000);
digitalWrite(6, HIGH);
delay(1000);
digitalWrite(6, LOW);
delay(3000);
digitalWrite(6, HIGH);
delay(1000);
while (true) {};
break;
case 7:
digitalWrite(12, LOW); // 12 v ON
digitalWrite(6, LOW); // 6 v ON
delay(3000);
digitalWrite(12, HIGH); // 12 v OFF
digitalWrite(6, HIGH); // 6 v OFF
delay(1000);
while (true) {};
break;
case 8:
digitalWrite(12, HIGH); // 12 v OFF
digitalWrite(6, HIGH); // 6 v OFF
delay(1000);
while (true) {};
break;
default: Serial.println("ENG HOT"); digitalWrite(12, HIGH);digitalWrite(6, HIGH); break;
delay(1000);
}
}
НЕ ДЛЯ КОММЕРЧЕСКОГО ИСПОЛЬЗОВАНИЯ!
