// У нас на плате pro mini ATmega 168 (5v, 16MHz), хотя это и неважно
#include <SoftwareSerial.h> // Подключаем библиотеку
SoftwareSerial mySerial(10, 11); // RX, TX Назначаем пины на прием и передачу
byte pers = 0; // Переменная для получения данных порта (мощность в процентах)
int pers1;
int pers2;
unsigned int n; // Счетчик непришедших пакетов
unsigned long counting;
unsigned long period;
boolean flag = false;
void setup() {
pinMode(12, OUTPUT); // Назначаем пин на выход (плата симистора)
pinMode(13, OUTPUT); // Назначаем пин на выход (светодиод-контролька)
digitalWrite(12, 0); // выход на плату симистора (отключено)
digitalWrite(13, 0); // Светодиод потушен
//Serial.begin(9600);
mySerial.begin(4800); // Запускаем работу порта
}
void loop()
{
if ((millis() - period) >= 1000) {
impulseLength();
period = millis();
}
if (((millis() - counting) >= pers1) && (flag == true)) {
digitalWrite(12, 0); // Выключаем все
digitalWrite(13, 0);
flag = false;
counting = millis();
}
}
void receiveData () // Функция получения данных с основной платы.
{
if (mySerial.available())
{
pers = mySerial.read(); // Считываем данные с порта, если там что-то есть
n = 0; // Раз данные пришли, обнулим счетчик
}
else
{
n++; // Считаем, сколько раз не пришли данные
}
if (pers > 100)
{
pers = 0; // Отсечем нереальные значения на всякий случай значение
}
if (n > 10) // Если 10 секунд данные не приходят, прекраим подачу импульсов.
{
pers = 0;
}
pers2 = (pers * 10); // Получим длину импульса в милисекундах.
}
void impulseLength()
{
if (pers2 == 0) // Если мощность равна 0
{
digitalWrite(12, 0); // Выключаем все
digitalWrite(13, 0);
receiveData (); // Получаем данные с основного контроллера
}
else
{
counting = millis();
digitalWrite(12, HIGH); // Если мощность более 50%
digitalWrite(13, HIGH); // Включаем все
pers1 = pers2; // Запоминаем переменную
receiveData (); // Получаем данные с основного контроллера
flag = true;
}
}
Ci8vINCjINC90LDRgSDQvdCwINC/0LvQsNGC0LUgcHJvIG1pbmkgQVRtZWdhIDE2OCAoNXYsIDE2TUh6KSwg0YXQvtGC0Y8g0Y3RgtC+INC4INC90LXQstCw0LbQvdC+CiNpbmNsdWRlIDxTb2Z0d2FyZVNlcmlhbC5oPiAgICAgICAgICAgLy8g0J/QvtC00LrQu9GO0YfQsNC10Lwg0LHQuNCx0LvQuNC+0YLQtdC60YMKClNvZnR3YXJlU2VyaWFsIG15U2VyaWFsKDEwLCAxMSk7IC8vIFJYLCBUWCDQndCw0LfQvdCw0YfQsNC10Lwg0L/QuNC90Ysg0L3QsCDQv9GA0LjQtdC8INC4INC/0LXRgNC10LTQsNGH0YMKCmJ5dGUgcGVycyA9IDA7ICAgICAgICAgICAgICAvLyDQn9C10YDQtdC80LXQvdC90LDRjyDQtNC70Y8g0L/QvtC70YPRh9C10L3QuNGPINC00LDQvdC90YvRhSDQv9C+0YDRgtCwICjQvNC+0YnQvdC+0YHRgtGMINCyINC/0YDQvtGG0LXQvdGC0LDRhSkKaW50IHBlcnMxOwppbnQgcGVyczI7CnVuc2lnbmVkIGludCBuOyAgICAgICAgICAgICAvLyDQodGH0LXRgtGH0LjQuiDQvdC10L/RgNC40YjQtdC00YjQuNGFINC/0LDQutC10YLQvtCyCnVuc2lnbmVkIGxvbmcgY291bnRpbmc7CnVuc2lnbmVkIGxvbmcgcGVyaW9kOwpib29sZWFuIGZsYWcgPSBmYWxzZTsKCnZvaWQgc2V0dXAoKSB7CiAgcGluTW9kZSgxMiwgT1VUUFVUKTsgICAgICAgICAvLyDQndCw0LfQvdCw0YfQsNC10Lwg0L/QuNC9INC90LAg0LLRi9GF0L7QtCAo0L/Qu9Cw0YLQsCDRgdC40LzQuNGB0YLQvtGA0LApCiAgcGluTW9kZSgxMywgT1VUUFVUKTsgICAgICAgICAvLyDQndCw0LfQvdCw0YfQsNC10Lwg0L/QuNC9INC90LAg0LLRi9GF0L7QtCAo0YHQstC10YLQvtC00LjQvtC0LdC60L7QvdGC0YDQvtC70YzQutCwKQogIGRpZ2l0YWxXcml0ZSgxMiwgMCk7ICAgICAgICAgLy8g0LLRi9GF0L7QtCDQvdCwINC/0LvQsNGC0YMg0YHQuNC80LjRgdGC0L7RgNCwICjQvtGC0LrQu9GO0YfQtdC90L4pCiAgZGlnaXRhbFdyaXRlKDEzLCAwKTsgICAgICAgICAvLyDQodCy0LXRgtC+0LTQuNC+0LQg0L/QvtGC0YPRiNC10L0KICAvL1NlcmlhbC5iZWdpbig5NjAwKTsKICBteVNlcmlhbC5iZWdpbig0ODAwKTsgICAgICAgIC8vINCX0LDQv9GD0YHQutCw0LXQvCDRgNCw0LHQvtGC0YMg0L/QvtGA0YLQsAp9Cgp2b2lkIGxvb3AoKQp7CiAgaWYgKChtaWxsaXMoKSAtIHBlcmlvZCkgPj0gMTAwMCkgewogICAgaW1wdWxzZUxlbmd0aCgpOwogICAgcGVyaW9kID0gbWlsbGlzKCk7CiAgfQoKICBpZiAoKChtaWxsaXMoKSAtIGNvdW50aW5nKSA+PSBwZXJzMSkgJiYgKGZsYWcgPT0gdHJ1ZSkpIHsKICAgIGRpZ2l0YWxXcml0ZSgxMiwgMCk7ICAgICAvLyDQktGL0LrQu9GO0YfQsNC10Lwg0LLRgdC1CiAgICBkaWdpdGFsV3JpdGUoMTMsIDApOwogICAgZmxhZyA9IGZhbHNlOwogICAgY291bnRpbmcgPSBtaWxsaXMoKTsKICB9Cn0KCnZvaWQgcmVjZWl2ZURhdGEgKCkgICAgICAgICAgICAgICAgICAvLyDQpNGD0L3QutGG0LjRjyDQv9C+0LvRg9GH0LXQvdC40Y8g0LTQsNC90L3Ri9GFINGBINC+0YHQvdC+0LLQvdC+0Lkg0L/Qu9Cw0YLRiy4KewogIGlmIChteVNlcmlhbC5hdmFpbGFibGUoKSkKICB7CiAgICBwZXJzID0gbXlTZXJpYWwucmVhZCgpOyAgICAgICAgICAgLy8g0KHRh9C40YLRi9Cy0LDQtdC8INC00LDQvdC90YvQtSDRgSDQv9C+0YDRgtCwLCDQtdGB0LvQuCDRgtCw0Lwg0YfRgtC+LdGC0L4g0LXRgdGC0YwKICAgIG4gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDQoNCw0Lcg0LTQsNC90L3Ri9C1INC/0YDQuNGI0LvQuCwg0L7QsdC90YPQu9C40Lwg0YHRh9C10YLRh9C40LoKICB9CiAgZWxzZQogIHsKICAgIG4rKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDQodGH0LjRgtCw0LXQvCwg0YHQutC+0LvRjNC60L4g0YDQsNC3INC90LUg0L/RgNC40YjQu9C4INC00LDQvdC90YvQtQogIH0KICBpZiAocGVycyA+IDEwMCkKICB7CiAgICBwZXJzID0gMDsgLy8g0J7RgtGB0LXRh9C10Lwg0L3QtdGA0LXQsNC70YzQvdGL0LUg0LfQvdCw0YfQtdC90LjRjyDQvdCwINCy0YHRj9C60LjQuSDRgdC70YPRh9Cw0Lkg0LfQvdCw0YfQtdC90LjQtQogIH0KCiAgaWYgKG4gPiAxMCkgICAvLyDQldGB0LvQuCAxMCDRgdC10LrRg9C90LQg0LTQsNC90L3Ri9C1INC90LUg0L/RgNC40YXQvtC00Y/Rgiwg0L/RgNC10LrRgNCw0LjQvCDQv9C+0LTQsNGH0YMg0LjQvNC/0YPQu9GM0YHQvtCyLgogIHsKICAgIHBlcnMgPSAwOwogIH0KICBwZXJzMiA9IChwZXJzICogMTApOyAgICAgICAgICAgICAgIC8vINCf0L7Qu9GD0YfQuNC8INC00LvQuNC90YMg0LjQvNC/0YPQu9GM0YHQsCDQsiDQvNC40LvQuNGB0LXQutGD0L3QtNCw0YUuCn0KCnZvaWQgaW1wdWxzZUxlbmd0aCgpCnsKICBpZiAocGVyczIgPT0gMCkgICAgICAgICAgICAvLyDQldGB0LvQuCDQvNC+0YnQvdC+0YHRgtGMINGA0LDQstC90LAgMAogIHsKICAgIGRpZ2l0YWxXcml0ZSgxMiwgMCk7ICAgICAvLyDQktGL0LrQu9GO0YfQsNC10Lwg0LLRgdC1CiAgICBkaWdpdGFsV3JpdGUoMTMsIDApOwogICAgcmVjZWl2ZURhdGEgKCk7ICAgICAgICAgIC8vINCf0L7Qu9GD0YfQsNC10Lwg0LTQsNC90L3Ri9C1INGBINC+0YHQvdC+0LLQvdC+0LPQviDQutC+0L3RgtGA0L7Qu9C70LXRgNCwCiAgfQogIGVsc2UKICB7CiAgICBjb3VudGluZyA9IG1pbGxpcygpOwogICAgZGlnaXRhbFdyaXRlKDEyLCBISUdIKTsgICAgIC8vINCV0YHQu9C4INC80L7RidC90L7RgdGC0Ywg0LHQvtC70LXQtSA1MCUKICAgIGRpZ2l0YWxXcml0ZSgxMywgSElHSCk7ICAgICAvLyDQktC60LvRjtGH0LDQtdC8INCy0YHQtQogICAgcGVyczEgPSBwZXJzMjsgICAgICAgICAgICAgIC8vINCX0LDQv9C+0LzQuNC90LDQtdC8INC/0LXRgNC10LzQtdC90L3Rg9GOCiAgICByZWNlaXZlRGF0YSAoKTsgICAgICAgICAgLy8g0J/QvtC70YPRh9Cw0LXQvCDQtNCw0L3QvdGL0LUg0YEg0L7RgdC90L7QstC90L7Qs9C+INC60L7QvdGC0YDQvtC70LvQtdGA0LAKICAgIGZsYWcgPSB0cnVlOwogIH0KfQo=