Не выходит из функции
- Войдите на сайт для отправки комментариев
Сб, 20/11/2021 - 22:24
Добрый день, подскажите такой вопрос: код написан, почти полностью работает, да не профессионально, но для начала пойдёт.
Ситуация такая: при посыле сигнала с телефона, программа должна переходить в функцию loop(), serial.print я проверил, она срабатывает как надо, но почему-то обратно возвращается в эту функцию. В остальном коде, все работает, а в этой отдельной функции не хочет. Пробывал без case, пробывал через goto - срабатывает но на loop() не переходит.
void rassvet()
{
int s;
ras = EEPROM.read(9);
RTC.read(tm);
int b = tm.Minute;
int sek = tm.Second;
switch (ras)
{
case 0:
inc = 0.142;
dim = ((b - 30) * 60 + sek) * 0.142;
for (dim; dim > -1; dim)
{
analogWrite(9, dim);
analogWrite(10, dim);
analogWrite(11, dim);
delay(1000);
Serial.println(dim);
dim += inc;
if (Serial.available() > 0)
{
if (Serial.find(target));
s = 5;
break;
}
if (dim >= 255)
{
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
break;
}
}
Serial.println("Вышел с фор");
break;
}
if (s >= 5)
{
Serial.println("Луп");
setup();
analogWrite(10, EEPROM.read(0));
analogWrite(11, EEPROM.read(1));
analogWrite(9, EEPROM.read(2));
delay(10000);
}
else
{
Serial.println("Авто");
Auto();
}
}
Как оно может туда переходить, если у тебя эта функция не определена?
Извините, я уже пробывал в Setup() выйти. Счас подправлю. Но все-равно даже в Setup() не выходит
А почему он должен переходить в loop() ?
Потому что вызывается setup() ?
Ну так после выполнения вызванной функции обычно программа возвращается обратно.
С чего вы взяли, что при вызове setup(), после выполнения функции будет исполнятся loop() ?
Извините, должно быть так
if (s >= 5) { Serial.println("Луп");//для проверки переходит сюда или нет analogWrite(10, EEPROM.read(0)); analogWrite(11, EEPROM.read(1)); analogWrite(9, EEPROM.read(2)); loop(); }Я внизу вставил код, который должен отработать, я вчера пробывал по всякому и в loop() и в setup(). Если бы она вышла в Setup(), то после сразу начал бы выполняться loop(), правильно же? Но происходит так, при отправке команды, программа переходит в if, ставит значение на портах, а дальше начинается выполнение её заново
А для чего это вообще ?
Если что есть while....
А вообще нужно как-то проектировать код перед тем как начинать писать. Несколько абсурдно вызывать основной цикл из функции. Обычно основной цикл крутится всегда, а для выхода из вызванной функции используется return.
Я внизу вставил код, который должен отработать, я вчера пробывал по всякому и в loop() и в setup(). Если бы она вышла в Setup(), то после сразу начал бы выполняться loop(), правильно же? Но происходит так, при отправке команды, программа переходит в if, ставит значение на портах, а дальше начинается выполнение её заново
Нет не правильно .
Условно код выглядит так:
int main(void){
//те действия которые требуется выполнить при запуске они будут функцией setup() (нет)
//while(1)
for(;;){
//Основной цикл. Так называемый Loop
}
}
Так что это даже не функции . Это их визуальная реализация в arduinoIDE.
В конечном итоге программа перед компиляцией их выкинет и заменит на int main и for(;;)
это для того, чтобы программа работала в авто-режиме и режиме ручном. В loop() она получает команды через bluetooth, а если она переходит в функцию Auto(), там она и остаётся и выйти с неё никак нельзя, кроме того, чтобы при получение команды, она переходила в loop() и соответственно могла работать в ручном режиме.
Да, это кусочек кода из всей программы, всю программу вы захейтите, так как она написана коряво (не профессионально).
а хотя, вот вся программа, много чего лишнего в ней, как только получиться решить проблему с этим, то буду убирать всё лишнее
#include <OneWire.h> #include <EEPROM.h> #include <Wire.h> #include "GyverTM1637.h" #include "RTClib.h" #include <DS1307RTC.h> #include <Time.h> #include <TimeLib.h> #define CLK 4 //часы #define DIO 7 //часы GyverTM1637 disp(CLK, DIO); tmElements_t tm; unsigned long millisp = 0; unsigned long millist = 0; boolean flagpoint = true; int Rtime; int ras; int zac; int brightness; String input_string = ""; int shim1; int shim2; int shim3; double dim; char target = "st"; double inc; int temperature = 0; OneWire ds(2); //датчик температуры long lastUpdateTime = 0; // Переменная для хранения времени последнего считывания с датчика const int TEMP_UPDATE_TIME = 1000; int zn; void setup() { Serial.begin(9600); pinMode(10, OUTPUT); pinMode(11, OUTPUT); pinMode (9, OUTPUT); disp.clear(); disp.brightness(-5); bool parse = false; bool config = false; analogWrite(10, EEPROM.read(0)); analogWrite(11, EEPROM.read(1)); analogWrite(9, EEPROM.read(2)); ds.write(0x7F); // Th контроль температуры макс 128грд ds.write(0xFF); //Tl контроль температуры мин -128грд ds.write(0x60); // 0x60 12-бит разрешение, 0x00 -9бит разрешение /*Auto();*/ } int detectTemperature() { byte data[2]; ds.reset(); ds.write(0xCC); ds.write(0x44); if (millis() - lastUpdateTime > TEMP_UPDATE_TIME) { lastUpdateTime = millis(); ds.reset(); ds.write(0xCC); ds.write(0x44); data[0] = ds.read(); data[1] = ds.read(); EEPROM.update(4, data[0]); EEPROM.update(5, data[1]); // Формируем значение temperature = (data[1] << 8) + data[0]; temperature = temperature >> 4; EEPROM.update(3, temperature); } } void Vremia() { if (millis() - millisp >= 500) { // разделительные точки flagpoint = !flagpoint; millisp = millis(); // получить время RTC.read(tm); if (millis() - millist <= 5000) { // часы-минуты disp.point(flagpoint); disp.display(0, tm.Hour / 10); disp.display(1, tm.Hour % 10); disp.display(2, tm.Minute / 10); disp.display(3, tm.Minute % 10); } else { millist = millis(); } } } void loop() { while (Serial.available() > 0) { char c = Serial.read();// //(c == '\n') if (c == '\n') { Command(); input_string = ""; } else { input_string += c; } } detectTemperature(); Vremia(); } void Command() { if (input_string.equals("1") == true) { digitalWrite(11, HIGH); } else if (input_string.equals("0") == true) { digitalWrite(11, LOW); } else if (input_string.equals("2") == true) { digitalWrite(10, HIGH); } else if (input_string.equals("3") == true) { digitalWrite(10, LOW); } else if (input_string.equals("4") == true) { disp.brightness(7); } else if (input_string.equals("5") == true) { disp.brightness(-5); } else if (input_string.startsWith("z") == true) { input_string.replace("z", ""); shim1 = input_string.toInt(); analogWrite(10, shim1); EEPROM.update(0, shim1); delay (100); } else if (input_string.startsWith("b") == true) { input_string.replace("b", ""); shim2 = input_string.toInt(); analogWrite(11, shim2); EEPROM.update(1, shim2); delay (100); } else if (input_string.startsWith("r") == true) { input_string.replace("r", ""); shim3 = input_string.toInt(); analogWrite(9, shim3); EEPROM.update(2, shim3); delay (100); } else if (input_string.startsWith("9") == true) { digitalWrite(9, HIGH); } else if (input_string.startsWith("10") == true) { digitalWrite(9, LOW); } else if (input_string.startsWith("a") == true) { Auto(); } else if (input_string.startsWith("v") == true) { } else if (input_string.startsWith("t") == true) { Serial.println (EEPROM.read(3)); } else if (input_string.startsWith("11") == true) { disp.clear(); disp.brightness(7); disp.display(0, EEPROM.read(4) / 10); disp.display(1, EEPROM.read(5) / 10); } else if (input_string.startsWith("s") == true) { loop(); } else if (input_string.startsWith("c") == true) { input_string.replace("c", ""); tm.Hour = input_string.toInt(); RTC.write(tm); } else if (input_string.startsWith("m") == true) { input_string.replace("m", ""); tm.Minute = input_string.toInt(); RTC.write(tm); } else if (input_string.startsWith("20") == true) { input_string.replace("20", ""); zn = input_string.toInt(); EEPROM.update(10, zn); } else if (input_string.startsWith("21") == true) { input_string.replace("21", ""); zn = input_string.toInt(); EEPROM.update(10, zn); } else if (input_string.startsWith("22") == true) { input_string.replace("22", ""); zn = input_string.toInt(); EEPROM.update(11, zn); } else if (input_string.startsWith("23") == true) { input_string.replace("23", ""); zn = input_string.toInt(); EEPROM.update(11, zn); } } void rassvet() { int s; ras = EEPROM.read(9); RTC.read(tm); int b = tm.Minute; int sek = tm.Second; switch (ras) { case 0: inc = 0.142; dim = ((b - 30) * 60 + sek) * 0.142; for (dim; dim > -1; dim) { analogWrite(9, dim); analogWrite(10, dim); analogWrite(11, dim); delay(1000); Serial.println(dim); dim += inc; if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } if (dim >= 255) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); break; } } Serial.println("Вышел с фор");//для проверки, вышел или нет break; } if (s >= 5) { Serial.println("Луп");//для проверки переходит сюда или нет analogWrite(10, EEPROM.read(0)); analogWrite(11, EEPROM.read(1)); analogWrite(9, EEPROM.read(2)); loop(); } else { Serial.println("Авто"); Auto(); } } void zakat() { int s = 0; RTC.read(tm); //int b = 0; int b = tm.Minute; int sek = tm.Second; inc = 0.142; dim = ((30 - b) * 60 - sek) * 0.142; for (dim; dim <= 260; dim) { analogWrite(9, dim); analogWrite(10, dim); analogWrite(11, dim); delay(1000); Serial.println(dim); dim -= inc; if (Serial.available() > 0) { if (Serial.find(target)); s = 5; loop(); // break; } if (dim <= 0) { break; } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } } if (s >= 5) { analogWrite(10, EEPROM.read(0)); analogWrite(11, EEPROM.read(1)); analogWrite(9, EEPROM.read(2)); loop(); } else { Auto(); } Auto(); } void Auto() { int s = 0; int r; RTC.read(tm); //int a = 21; // int b = 0; int a = tm.Hour; int b = tm.Minute; int sek = tm.Second; Rtime = a; switch (Rtime) { case 0: if (a == 0 && b <= 30) { if (EEPROM.read(11) == 2) { zakat(); } else if (EEPROM.read(10) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); Serial.println("Включено"); } else if (EEPROM.read(10) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); Serial.println("Отключено"); } } if (a == 0 && b >= 30) { if (EEPROM.read(11) == 1) { r = 0; EEPROM.update(9, r); rassvet(); } else if (EEPROM.read(10) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); Serial.println("Включено"); } else if (EEPROM.read(10) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); Serial.println("Отключено"); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 1: digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 2: digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 3: digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 4: digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 5: digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 6: digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 7: digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 8: digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 9: digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 10: digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 11: digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 12: digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 13: //тут идёт выполнение программы с 13:30 до 14 на разгорание if (a == 13 && b >= 30) { inc = 0.142; dim = ((b - 30) * 60 + sek) * 0.142; for (dim; dim > -1; dim) { analogWrite(9, dim); analogWrite(10, dim); analogWrite(11, dim); delay(1000); dim += inc; if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } if (dim >= 255) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); break; } } } if (b < 30) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } } break; case 14: digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 15: digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 16: digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 17: digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 18: digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 19: digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 20: digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 21: // на уменьшение if (a == 21 && b <= 30) { inc = 0.142; dim = ((30 - b) * 60 - sek) * 0.142; for (dim; dim <= 260; dim) { analogWrite(9, dim); analogWrite(10, dim); analogWrite(11, dim); delay(1000); dim -= inc; if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } if (dim <= 0) { break; } } } if (b > 30) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } } break; case 22: digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 23: digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; } if (s >= 5) { analogWrite(10, EEPROM.read(0)); analogWrite(11, EEPROM.read(1)); analogWrite(9, EEPROM.read(2)); loop(); } else { Auto(); } }Вот и должно быть при заходе в функцию авто:
void Auto(){
while(1){
if(какое то условие)return;
}
}
Во всей программе, в функции Auto() все работает а вот в функции rassvet() нет, и не могу понять почему
Не пори чушь, пожалуйста.
Не пори чушь, пожалуйста.
Да чушь, но пусть лучше новички думают о том, что это так и есть, чем плодят ненужные рекурсии.
Специально для rkit.
Описание того как делать не стоит:
Программа в Ардуино выглядит так:
int main(void) { init(); initVariant(); #if defined(USBCON) USBDevice.attach(); #endif setup(); for (;;) { loop(); if (serialEventRun) serialEventRun(); } return 0; }Т.е. при вызове в теле цикла loop() цикла loop() мы творим лютую дичь. И так делать не стоит.
Т.е. при вызове в теле цикла loop() цикла loop() мы творим лютую дичь. И так делать не стоит.
Какая то лютая дичь. Какой цикл loop в теле цикла loop()???
Цыкал цыкал мотоцикл ...
должно быть так
if (s >= 5) { ... loop(); }Нет, так не должно быть.
Функцию loop() вызывать нельзя. Тому, кто точно знает что делает, может и можно иногда, но я не могу себе представить случая, когда это оправдано. Вам же вызывать её нельзя никогда. Если Вам нужно её вызвать, значит, Вы чего-то не понимаете.
должно быть так
if (s >= 5) { ... loop(); }Нет, так не должно быть.
Функцию loop() вызывать нельзя. Тому, кто точно знает что делает, может и можно иногда, но я не могу себе представить случая, когда это оправдано. Вам же вызывать её нельзя никогда. Если Вам нужно её вызвать, значит, Вы чего-то не понимаете.
оууу , да тут у нас исторический момент. на форуме что то запретили :D
Нет. Ничего не запретили. Просто поставили точки над i. Функция loop определена в системе и вызывается системой в бесконечном цикле. Это если следовать правилам ардуины и использовать setup и loop так, как намечено разработчиками. Из loop можно выйти из любой точки и попасть снова в начало loop. Это вроде как вызвать loop c начала. Но вот самому вызвать loop это сделать петлю на стеке. Несколько раз получится, а потом ...
Всем спасибо я разобрался сам. Внимательно почитал интернет и понял, что в моём случае, в функции Auto() я вызываю другую функцию, которая выполняется и прервать я её не могу. В итоге вопрос решился. Всем спасибо, если интересно я скину код
понял, что в моём случае, в функции Auto() я вызываю другую функцию, которая выполняется и прервать я её не могу.
фраза попахивает бредом...
Если вы сами вызываете функцию, то что мешает ее прервать? ... или контроль над ардуиной захватили инопланетяне, или вы опять чего-то не поняли...
А в Auto() вы вызываете Auto() - это называется рекурсия. Не стоит это делать без четкого понимания. Мне кажется, вам до этого понимания еще 2-3 года усиленного изучения С.С++
Denisblr, вам выше верно написали - прежде чем садиться за код, надо спроектировать на бумажке логику программы.
Логика вашего кода в корне неверная. Даже если отвлечься от попыток вызывать служебные функции setup() и loop() - что, как надеюсь вам уже обьяснили, делать нельзя - вы и со своими функциями обращаетесь неправильно. У вас есть функции Auto() rassvet() zakat(). Вы из Auto() вызываете rassvet(), а оттуда снова Auto() и так далее. Такая "логика" кода однозначно ведет к зацикливанию и зависанию программы через 3-5 стадий.
Если вы хотите из ФУНКЦИИ_1 вызвать ФУНКЦИЮ_2, а потом ФУНКЦИЮ_3 - то в общем случае надо СНАЧАЛА ВЕРНУТСЯ из ФУНКЦИИ_2 в первую, а уже потом вызывать ФУНЦИЮ_3
Выберите одну из функций "главной", например вашу Auto()/ Вызвали из нее zakat(), отработали, ВЕРНУЛИСЬ в Auto() и из нее пошли в rassvet. А иначе у вас будет полная ерунда
void setup() { Serial.begin(9600); } uint8_t x = 0; void loop() { if (++x % 2) print(); else loop(); } void print() { Serial.print(x); Serial.print(' '); Serial.println(RAMEND - SP); loop(); }Работает :(
Работает :(
Шутка не смешная. А в подобной теме, так и вредная, т.к. ТС стопудово не поймёт, что это шутка и воспримет серьёзно. Запустит, увидит, и будет считать, что так можно.
Я уже с этим разобрался. Теперь у меня работает все. Основная функция у меня auto(), из неё вызывается rassvet и zakat, возврат на Auto реализовал через go to, у меня были сомнения что через return 0, будет все выходить в case 0. Но почему у меня тогда в авто происходит прерывание выполнения кода по отправке значения и программа выходит в loop()?
Я уже с этим разобрался. Теперь у меня работает все. Основная функция у меня auto(), из неё вызывается rassvet и zakat, возврат на Auto реализовал через go to, у меня были сомнения что через return 0, будет все выходить в case 0. Но почему у меня тогда в авто происходит прерывание выполнения кода по отправке значения и программа выходит в loop()?
показывайте новый код, иначе разговор ни о чем
Работает :(
Шутка не смешная. А в подобной теме, так и вредная, т.к. ТС стопудово не поймёт, что это шутка и воспримет серьёзно. Запустит, увидит, и будет считать, что так можно.
Это не шутка. Так можно.
Это не шутка. Так можно.
А-а-а! Даже так!
Ну, ладно, подождём, пока в очередной версии IDE в Platform.txt напишут опцию -O1 вместо нынешней -Os. Тогда, видимо, "нельзя" станет :-)
Политота удалена. Следите за базаром.
Вот весь код, осуждайте
#include <OneWire.h> #include <EEPROM.h> #include <Wire.h> #include "GyverTM1637.h" #include "RTClib.h" #include <DS1307RTC.h> #include <Time.h> #include <TimeLib.h> #define CLK 4 //часы #define DIO 7 //часы GyverTM1637 disp(CLK, DIO); tmElements_t tm; unsigned long millisp = 0; unsigned long millist = 0; boolean flagpoint = true; int Rtime; int brightness; String input_string = ""; int shim1; int shim2; int shim3; double dim; char target = "st"; double inc; int temperature = 0; OneWire ds(2); //датчик температуры long lastUpdateTime = 0; // Переменная для хранения времени последнего считывания с датчика const int TEMP_UPDATE_TIME = 1000; int zn; void setup() { Serial.begin(9600); pinMode(10, OUTPUT); pinMode(11, OUTPUT); pinMode (9, OUTPUT); disp.clear(); disp.brightness(-5); bool parse = false; bool config = false; analogWrite(10, EEPROM.read(0)); analogWrite(11, EEPROM.read(1)); analogWrite(9, EEPROM.read(2)); ds.write(0x7F); ds.write(0xFF); ds.write(0x60); /*Auto();*/ } int detectTemperature() { byte data[2]; ds.reset(); ds.write(0xCC); ds.write(0x44); if (millis() - lastUpdateTime > TEMP_UPDATE_TIME) { lastUpdateTime = millis(); ds.reset(); ds.write(0xCC); ds.write(0x44); data[0] = ds.read(); data[1] = ds.read(); EEPROM.update(4, data[0]); EEPROM.update(5, data[1]); // Формируем значение temperature = (data[1] << 8) + data[0]; temperature = temperature >> 4; EEPROM.update(3, temperature); } } void Vremia() { if (millis() - millisp >= 500) { // разделительные точки flagpoint = !flagpoint; millisp = millis(); // получить время RTC.read(tm); if (millis() - millist <= 5000) { // часы-минуты disp.point(flagpoint); disp.display(0, tm.Hour / 10); disp.display(1, tm.Hour % 10); disp.display(2, tm.Minute / 10); disp.display(3, tm.Minute % 10); } else { millist = millis(); } } } void loop() { while (Serial.available() > 0) { char c = Serial.read(); if (c == '\n') { Command(); input_string = ""; } else { input_string += c; } } detectTemperature(); Vremia(); } void Command() { if (input_string.equals("1") == true) { digitalWrite(11, HIGH); } else if (input_string.equals("0") == true) { digitalWrite(11, LOW); } else if (input_string.equals("2") == true) { digitalWrite(10, HIGH); } else if (input_string.equals("3") == true) { digitalWrite(10, LOW); } else if (input_string.equals("4") == true) { disp.brightness(7); } else if (input_string.equals("5") == true) { disp.brightness(-5); } else if (input_string.startsWith("z") == true) { input_string.replace("z", ""); shim1 = input_string.toInt(); analogWrite(10, shim1); EEPROM.update(0, shim1); delay (100); } else if (input_string.startsWith("b") == true) { input_string.replace("b", ""); shim2 = input_string.toInt(); analogWrite(11, shim2); EEPROM.update(1, shim2); delay (100); } else if (input_string.startsWith("r") == true) { input_string.replace("r", ""); shim3 = input_string.toInt(); analogWrite(9, shim3); EEPROM.update(2, shim3); delay (100); } else if (input_string.startsWith("9") == true) { digitalWrite(9, HIGH); } else if (input_string.startsWith("10") == true) { digitalWrite(9, LOW); } else if (input_string.startsWith("a") == true) { Auto(); } else if (input_string.startsWith("v") == true) { } else if (input_string.startsWith("t") == true) { Serial.println (EEPROM.read(3)); } else if (input_string.startsWith("11") == true) { disp.clear(); disp.brightness(7); disp.display(0, EEPROM.read(4) / 10); disp.display(1, EEPROM.read(5) / 10); } else if (input_string.startsWith("s") == true) { loop(); } else if (input_string.startsWith("c") == true) { input_string.replace("c", ""); tm.Hour = input_string.toInt(); RTC.write(tm); } else if (input_string.startsWith("m") == true) { input_string.replace("m", ""); tm.Minute = input_string.toInt(); RTC.write(tm); } else if (input_string.startsWith("20") == true) { input_string.replace("20", ""); zn = input_string.toInt(); EEPROM.update(10, zn); } else if (input_string.startsWith("21") == true) { input_string.replace("21", ""); zn = input_string.toInt(); EEPROM.update(10, zn); } else if (input_string.startsWith("22") == true) { input_string.replace("22", ""); zn = input_string.toInt(); EEPROM.update(11, zn); } else if (input_string.startsWith("23") == true) { input_string.replace("23", ""); zn = input_string.toInt(); EEPROM.update(12, zn); } else if (input_string.startsWith("24") == true) { input_string.replace("24", ""); zn = input_string.toInt(); EEPROM.update(13, zn); } else if (input_string.startsWith("25") == true) { input_string.replace("25", ""); zn = input_string.toInt(); EEPROM.update(14, zn); } else if (input_string.startsWith("26") == true) { input_string.replace("26", ""); zn = input_string.toInt(); EEPROM.update(15, zn); } else if (input_string.startsWith("27") == true) { input_string.replace("27", ""); zn = input_string.toInt(); EEPROM.update(16, zn); } else if (input_string.startsWith("28") == true) { input_string.replace("28", ""); zn = input_string.toInt(); EEPROM.update(17, zn); } else if (input_string.startsWith("29") == true) { input_string.replace("29", ""); zn = input_string.toInt(); EEPROM.update(18, zn); } else if (input_string.startsWith("30") == true) { input_string.replace("30", ""); zn = input_string.toInt(); EEPROM.update(19, zn); } else if (input_string.startsWith("31") == true) { input_string.replace("31", ""); zn = input_string.toInt(); EEPROM.update(20, zn); } else if (input_string.startsWith("32") == true) { input_string.replace("32", ""); zn = input_string.toInt(); EEPROM.update(21, zn); } else if (input_string.startsWith("33") == true) { input_string.replace("33", ""); zn = input_string.toInt(); EEPROM.update(22, zn); } else if (input_string.startsWith("34") == true) { input_string.replace("34", ""); zn = input_string.toInt(); EEPROM.update(23, zn); } else if (input_string.startsWith("35") == true) { input_string.replace("35", ""); zn = input_string.toInt(); EEPROM.update(24, zn); } else if (input_string.startsWith("36") == true) { input_string.replace("36", ""); zn = input_string.toInt(); EEPROM.update(25, zn); } else if (input_string.startsWith("37") == true) { input_string.replace("37", ""); zn = input_string.toInt(); EEPROM.update(26, zn); } else if (input_string.startsWith("38") == true) { input_string.replace("38", ""); zn = input_string.toInt(); EEPROM.update(27, zn); } else if (input_string.startsWith("39") == true) { input_string.replace("39", ""); zn = input_string.toInt(); EEPROM.update(28, zn); } else if (input_string.startsWith("40") == true) { input_string.replace("40", ""); zn = input_string.toInt(); EEPROM.update(29, zn); } else if (input_string.startsWith("41") == true) { input_string.replace("41", ""); zn = input_string.toInt(); EEPROM.update(30, zn); } else if (input_string.startsWith("42") == true) { input_string.replace("42", ""); zn = input_string.toInt(); EEPROM.update(31, zn); } else if (input_string.startsWith("43") == true) { input_string.replace("43", ""); zn = input_string.toInt(); EEPROM.update(32, zn); } else if (input_string.startsWith("44") == true) { input_string.replace("44", ""); zn = input_string.toInt(); EEPROM.update(33, zn); } else if (input_string.startsWith("45") == true) { input_string.replace("45", ""); zn = input_string.toInt(); EEPROM.update(34, zn); } else if (input_string.startsWith("46") == true) { input_string.replace("46", ""); zn = input_string.toInt(); EEPROM.update(35, zn); } else if (input_string.startsWith("47") == true) { input_string.replace("47", ""); zn = input_string.toInt(); EEPROM.update(36, zn); } else if (input_string.startsWith("48") == true) { input_string.replace("48", ""); zn = input_string.toInt(); EEPROM.update(37, zn); } else if (input_string.startsWith("49") == true) { input_string.replace("49", ""); zn = input_string.toInt(); EEPROM.update(38, zn); } else if (input_string.startsWith("50") == true) { input_string.replace("50", ""); zn = input_string.toInt(); EEPROM.update(39, zn); } else if (input_string.startsWith("51") == true) { input_string.replace("51", ""); zn = input_string.toInt(); EEPROM.update(40, zn); } else if (input_string.startsWith("52") == true) { input_string.replace("52", ""); zn = input_string.toInt(); EEPROM.update(41, zn); } else if (input_string.startsWith("53") == true) { input_string.replace("53", ""); zn = input_string.toInt(); EEPROM.update(42, zn); } else if (input_string.startsWith("54") == true) { input_string.replace("54", ""); zn = input_string.toInt(); EEPROM.update(43, zn); } else if (input_string.startsWith("55") == true) { input_string.replace("55", ""); zn = input_string.toInt(); EEPROM.update(44, zn); } else if (input_string.startsWith("56") == true) { input_string.replace("56", ""); zn = input_string.toInt(); EEPROM.update(45, zn); } else if (input_string.startsWith("57") == true) { input_string.replace("57", ""); zn = input_string.toInt(); EEPROM.update(46, zn); } else if (input_string.startsWith("58") == true) { input_string.replace("58", ""); zn = input_string.toInt(); EEPROM.update(47, zn); } else if (input_string.startsWith("59") == true) { input_string.replace("59", ""); zn = input_string.toInt(); EEPROM.update(48, zn); } else if (input_string.startsWith("60") == true) { input_string.replace("60", ""); zn = input_string.toInt(); EEPROM.update(49, zn); } else if (input_string.startsWith("61") == true) { input_string.replace("61", ""); zn = input_string.toInt(); EEPROM.update(50, zn); } else if (input_string.startsWith("62") == true) { input_string.replace("62", ""); zn = input_string.toInt(); EEPROM.update(51, zn); } else if (input_string.startsWith("63") == true) { input_string.replace("63", ""); zn = input_string.toInt(); EEPROM.update(52, zn); } else if (input_string.startsWith("64") == true) { input_string.replace("64", ""); zn = input_string.toInt(); EEPROM.update(53, zn); } else if (input_string.startsWith("65") == true) { input_string.replace("65", ""); zn = input_string.toInt(); EEPROM.update(54, zn); } else if (input_string.startsWith("66") == true) { input_string.replace("66", ""); zn = input_string.toInt(); EEPROM.update(55, zn); } else if (input_string.startsWith("67") == true) { input_string.replace("67", ""); zn = input_string.toInt(); EEPROM.update(56, zn); } else if (input_string.startsWith("68") == true) { input_string.replace("68", ""); zn = input_string.toInt(); EEPROM.update(57, zn); } else if (input_string.startsWith("70") == true) { input_string.replace("70", ""); zn = input_string.toInt(); EEPROM.update(10, zn); EEPROM.update(11, zn); EEPROM.update(12, zn); EEPROM.update(13, zn); EEPROM.update(14, zn); EEPROM.update(15, zn); EEPROM.update(16, zn); EEPROM.update(17, zn); EEPROM.update(18, zn); EEPROM.update(19, zn); EEPROM.update(20, zn); EEPROM.update(21, zn); EEPROM.update(22, zn); EEPROM.update(23, zn); EEPROM.update(24, zn); EEPROM.update(25, zn); EEPROM.update(26, zn); EEPROM.update(27, zn); EEPROM.update(28, zn); EEPROM.update(29, zn); EEPROM.update(30, zn); EEPROM.update(30, zn); EEPROM.update(31, zn); EEPROM.update(32, zn); EEPROM.update(33, zn); EEPROM.update(34, zn); EEPROM.update(35, zn); EEPROM.update(36, zn); EEPROM.update(37, zn); EEPROM.update(38, zn); EEPROM.update(39, zn); EEPROM.update(40, zn); EEPROM.update(41, zn); EEPROM.update(42, zn); EEPROM.update(43, zn); EEPROM.update(44, zn); EEPROM.update(45, zn); EEPROM.update(46, zn); EEPROM.update(47, zn); EEPROM.update(48, zn); EEPROM.update(49, zn); EEPROM.update(50, zn); EEPROM.update(51, zn); EEPROM.update(52, zn); EEPROM.update(53, zn); EEPROM.update(54, zn); EEPROM.update(55, zn); EEPROM.update(56, zn); EEPROM.update(57, zn); } } void rassvet() { int s = 0; RTC.read(tm); int a = tm.Hour; int b = tm.Minute; int sek = tm.Second; inc = 0.142; dim = ((b - 30) * 60 + sek) * 0.142; for (dim; dim > -1; dim) { analogWrite(9, dim); analogWrite(10, dim); analogWrite(11, dim); delay(1000); Serial.println(dim); dim += inc; if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } if (dim >= 255) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); break; } } } void zakat() { int s = 0; RTC.read(tm); int a = tm.Hour; int b = tm.Minute; int sek = tm.Second; inc = 0.142; dim = ((30 - b) * 60 - sek) * 0.142; for (dim; dim <= 260; dim) { analogWrite(9, dim); analogWrite(10, dim); analogWrite(11, dim); delay(1000); Serial.println(dim); dim -= inc; if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } if (dim <= 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); break; } } } void Auto() { start: int s = 0; RTC.read(tm); int a = tm.Hour; int b = tm.Minute; int sek = tm.Second; Rtime = a; switch (Rtime) { case 0: if (a == 0 && b <= 30) { if (EEPROM.read(11) == 2) { zakat(); goto start; } else if (EEPROM.read(10) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(10) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 0 && b >= 30) { if (EEPROM.read(11) == 1) { rassvet(); goto start; } else if (EEPROM.read(10) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(10) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 1: if (a == 1 && b <= 30) { if (EEPROM.read(12) == 2) { zakat(); goto start; } else if (EEPROM.read(13) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(13) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 1 && b >= 30) { if (EEPROM.read(12) == 1) { rassvet(); return 1; } else if (EEPROM.read(13) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(13) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 2: if (a == 2 && b <= 30) { if (EEPROM.read(14) == 2) { zakat(); goto start; } else if (EEPROM.read(15) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(15) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 2 && b >= 30) { if (EEPROM.read(14) == 1) { rassvet(); goto start; } else if (EEPROM.read(15) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(15) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 3: if (a == 3 && b <= 30) { if (EEPROM.read(16) == 2) { zakat(); goto start; } else if (EEPROM.read(17) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(17) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 3 && b >= 30) { if (EEPROM.read(16) == 1) { rassvet(); goto start; } else if (EEPROM.read(17) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(17) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 4: if (a == 4 && b <= 30) { if (EEPROM.read(18) == 2) { zakat(); goto start; } else if (EEPROM.read(19) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(19) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 4 && b >= 30) { if (EEPROM.read(18) == 1) { rassvet(); goto start; } else if (EEPROM.read(19) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(19) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 5: if (a == 5 && b <= 30) { if (EEPROM.read(20) == 2) { zakat(); goto start; } else if (EEPROM.read(21) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(21) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 5 && b >= 30) { if (EEPROM.read(20) == 1) { rassvet(); goto start; } else if (EEPROM.read(21) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(21) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 6: if (a == 6 && b <= 30) { if (EEPROM.read(22) == 2) { zakat(); goto start; } else if (EEPROM.read(23) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(23) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 6 && b >= 30) { if (EEPROM.read(22) == 1) { rassvet(); goto start; } else if (EEPROM.read(23) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(23) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 7: if (a == 7 && b <= 30) { if (EEPROM.read(24) == 2) { zakat(); goto start; } else if (EEPROM.read(25) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(25) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 7 && b >= 30) { if (EEPROM.read(24) == 1) { rassvet(); goto start; } else if (EEPROM.read(25) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(25) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 8: if (a == 8 && b <= 30) { if (EEPROM.read(26) == 2) { zakat(); goto start; } else if (EEPROM.read(27) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(27) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 8 && b >= 30) { if (EEPROM.read(26) == 1) { rassvet(); goto start; } else if (EEPROM.read(27) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(27) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 9: if (a == 9 && b <= 30) { if (EEPROM.read(28) == 2) { zakat(); goto start; } else if (EEPROM.read(29) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(29) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 9 && b >= 30) { if (EEPROM.read(28) == 1) { rassvet(); goto start; } else if (EEPROM.read(29) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(29) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 10: if (a == 10 && b <= 30) { if (EEPROM.read(30) == 2) { zakat(); goto start; } else if (EEPROM.read(31) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(31) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 10 && b >= 30) { if (EEPROM.read(30) == 1) { rassvet(); goto start; } else if (EEPROM.read(31) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(31) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 11: if (a == 11 && b <= 30) { if (EEPROM.read(32) == 2) { zakat(); goto start; } else if (EEPROM.read(33) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(33) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 11 && b >= 30) { if (EEPROM.read(32) == 1) { rassvet(); goto start; } else if (EEPROM.read(33) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(33) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 12: if (a == 12 && b <= 30) { if (EEPROM.read(34) == 2) { zakat(); goto start; } else if (EEPROM.read(35) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(35) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 12 && b >= 30) { if (EEPROM.read(34) == 1) { rassvet(); goto start; } else if (EEPROM.read(35) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(35) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 13: if (a == 13 && b <= 30) { if (EEPROM.read(36) == 2) { zakat(); goto start; } else if (EEPROM.read(37) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(37) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 13 && b >= 30) { if (EEPROM.read(36) == 1) { rassvet(); goto start; } else if (EEPROM.read(37) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(37) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 14: if (a == 14 && b <= 30) { if (EEPROM.read(38) == 2) { zakat(); goto start; } else if (EEPROM.read(39) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(39) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 14 && b >= 30) { if (EEPROM.read(38) == 1) { rassvet(); goto start; } else if (EEPROM.read(39) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(39) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 15: if (a == 15 && b <= 30) { if (EEPROM.read(40) == 2) { zakat(); goto start; } else if (EEPROM.read(41) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(41) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 15 && b >= 30) { if (EEPROM.read(40) == 1) { rassvet(); goto start; } else if (EEPROM.read(41) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(41) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 16: if (a == 16 && b <= 30) { if (EEPROM.read(42) == 2) { zakat(); goto start; } else if (EEPROM.read(43) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(43) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 16 && b >= 30) { if (EEPROM.read(42) == 1) { rassvet(); goto start; } else if (EEPROM.read(43) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(43) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 17: if (a == 17 && b <= 30) { if (EEPROM.read(44) == 2) { zakat(); goto start; } else if (EEPROM.read(45) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(45) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 17 && b >= 30) { if (EEPROM.read(44) == 1) { rassvet(); goto start; } else if (EEPROM.read(45) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(45) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 18: if (a == 18 && b <= 30) { if (EEPROM.read(46) == 2) { zakat(); goto start; } else if (EEPROM.read(47) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(47) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 18 && b >= 30) { if (EEPROM.read(46) == 1) { rassvet(); goto start; } else if (EEPROM.read(47) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(47) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 19: if (a == 19 && b <= 30) { if (EEPROM.read(48) == 2) { zakat(); goto start; } else if (EEPROM.read(49) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(49) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 19 && b >= 30) { if (EEPROM.read(48) == 1) { rassvet(); goto start; } else if (EEPROM.read(49) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(49) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 20: if (a == 20 && b <= 30) { if (EEPROM.read(50) == 2) { zakat(); goto start; } else if (EEPROM.read(51) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(51) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 20 && b >= 30) { if (EEPROM.read(50) == 1) { rassvet(); goto start; } else if (EEPROM.read(51) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(51) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 21: if (a == 21 && b <= 30) { if (EEPROM.read(52) == 2) { zakat(); goto start; } else if (EEPROM.read(53) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(53) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 21 && b >= 30) { if (EEPROM.read(52) == 1) { rassvet(); goto start; } else if (EEPROM.read(53) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(53) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 22: if (a == 22 && b <= 30) { if (EEPROM.read(54) == 2) { zakat(); goto start; } else if (EEPROM.read(55) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(55) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 22 && b >= 30) { if (EEPROM.read(54) == 1) { rassvet(); goto start; } else if (EEPROM.read(55) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(55) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; case 23: if (a == 23 && b <= 30) { if (EEPROM.read(56) == 2) { zakat(); goto start; } else if (EEPROM.read(57) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(57) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (a == 23 && b >= 30) { if (EEPROM.read(56) == 1) { rassvet(); goto start; } else if (EEPROM.read(57) == 1) { digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); delay(1000); } else if (EEPROM.read(57) == 0) { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1000); } } if (Serial.available() > 0) { if (Serial.find(target)); s = 5; break; } break; } if (s >= 5) { analogWrite(10, EEPROM.read(0)); analogWrite(11, EEPROM.read(1)); analogWrite(9, EEPROM.read(2)); loop(); } else { goto start; } }2000 строк и вредные goto, работа с EEPROM как с переменными
Йухня , переделывай.
Раз Вы такой умный, ну-ка предложите свой вариант, а если не EEPROM, то где хранить значения при отключении питания?
Раз Вы такой умный, ну-ка предложите свой вариант, а если не EEPROM, то где хранить значения при отключении питания?
Как где ? в EEPROM.
Но их от туда нужно читать только при запуске, а не использовать в качестве переменных.
Сдается мне, что последние ~1,5к строк можно заменить функцией на пару десятков строк.
Скорее даже 1,8к...
Раз Вы такой умный, ну-ка предложите свой вариант, а если не EEPROM, то где хранить значения при отключении питания?
Сделать так, чтобы питание не прерывалось.
пиздец какой-то...
вы про циклы не слыхали вовсе?
например вот эта портянка
EEPROM.update(10, zn); EEPROM.update(11, zn); EEPROM.update(12, zn); EEPROM.update(13, zn); EEPROM.update(14, zn); EEPROM.update(15, zn); EEPROM.update(16, zn); EEPROM.update(17, zn); EEPROM.update(18, zn); EEPROM.update(19, zn); EEPROM.update(20, zn); EEPROM.update(21, zn); EEPROM.update(22, zn); EEPROM.update(23, zn); EEPROM.update(24, zn); EEPROM.update(25, zn); EEPROM.update(26, zn); EEPROM.update(27, zn); EEPROM.update(28, zn); EEPROM.update(29, zn); EEPROM.update(30, zn); EEPROM.update(30, zn); EEPROM.update(31, zn); EEPROM.update(32, zn); EEPROM.update(33, zn); EEPROM.update(34, zn); EEPROM.update(35, zn); EEPROM.update(36, zn); EEPROM.update(37, zn); EEPROM.update(38, zn); EEPROM.update(39, zn); EEPROM.update(40, zn); EEPROM.update(41, zn); EEPROM.update(42, zn); EEPROM.update(43, zn); EEPROM.update(44, zn); EEPROM.update(45, zn); EEPROM.update(46, zn); EEPROM.update(47, zn); EEPROM.update(48, zn); EEPROM.update(49, zn); EEPROM.update(50, zn); EEPROM.update(51, zn); EEPROM.update(52, zn); EEPROM.update(53, zn); EEPROM.update(54, zn); EEPROM.update(55, zn); EEPROM.update(56, zn); EEPROM.update(57, zn);записывается в 2 строки
for ( uint8_t i = 10; i<58; i++) { EEPROM.update(i, zn); }не умея элементарных вещей - беретесь писать код в 2000 строк. Кому и зачем этот шлак нужен, мусора в инете и так хватает
Ну так, "Ардуино для домохозяек" же ж.(
сдается мне, что тут ничего менять не надо. Код - сразу в помойку, написать заново и легче и правильнее, и всего кода будет строчек 100
Вы все такие умные я посмотрю, так напишите. Образец у ВАС имеется!!!!!
вот это тоже хорошо :)
нет, это уже я сослепу не туда смотрю
Вы все такие умные я посмотрю, так напишите. Образец у ВАС имеется!!!!!
добро пожаловать в раздел "ищу исполнителя". Хорошую цену предложишь - напишем.
Denisblr - за время пока ты набивал по сотне подряд одинаковых блоков чтения и записи в ЕЕПРОМ - могу бы пол-учебника по Си прочитать... и выучить
Вот весь код, осуждайте
Осуждаю! Хотя и не читал.
Вы все такие умные я посмотрю, так напишите.
Нет, не настолько :-(
Образец у ВАС имеется!!!!!
Спасибо! Будем использовать как образец.