Ну. что-то подобное я и предпо[]лагал. В этой строке написан бред сивой кобылы, но Вы этого не понимаете потому, что не знаете языка, на котором он написан. Точно так же Вы не понимаете, что написано в тех строках, что мы обсуждали раньше. И не надо писать:
Очень жаль, что олдфаги так охотчи до сарказма и заработка на ньюфагах, чем помочь, подсказать и воспитать нового камрада в своих рядах.
когда переключал с 1 назад то должен был переключить на максиму,а это 50, но переключал на 10, а то и вообще не переключал,я зделал так и стало как нужно
чем помочь, подсказать и воспитать нового камрада в своих рядах.
Попытка помочь была, был дан единственно полезный для ТС совет (см. пост №9). Но ТС проигнорировал совет и даже не понял, что это и есть помощь, т.к. под помощью понимает написание кода вместо него. Такие "камрады" мне как-то совсем не "камрады". А воспитывать их ... так тем и занимаемся.
кратко так и, нельзя сделать конечный автомат не описав его переменные в уравнениях булевой алгебры,
то есть сделать можно, но когда полезут баги и попробуете подставлять костыли, как правило всё разлезается
О как, век живи, век учись, все равно дураком помрешь.))) Пользоваться, пользовался, еще со времен 155/555 серий. Что это "булевы" только сейчас узнал.((((
а на что тогда надо заменить чтоб в формате 2 цифр было?
TynuK почитай, может поможет
спасибо почитал,но у меня уже почти все готово,осталось только местами подправить детали
Все готово теперь работает, вот код может кому пригодится
#include <EEPROM.h> // для записи во внутреннию память // датчики температуры #include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 8 // подключаем ds18b20 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire);// стартуем датчик температуры //ЧАСЫ #include <RTC.h> RTC time; //IR-приемник #include <IRremote.h> #define RECV_PIN 11 uint32_t val; // для обнуления IRrecv irrecv(RECV_PIN); decode_results results; // Библиотека работы с экраном #include <Wire.h> #include <LCD_1602_RUS.h> LCD_1602_RUS lcd(0x27, 20, 4); // порт включения сигнала аварии #define alarm 10 //кнопка на перемешивание const int mix_button = 7; //реле насосов на перемешивание const int mix = 4; //ПИНЫ дальномеров const int Trig1 = 9; const int Trig2 = 5; const int Echo1 = 3; const int Echo2 = 6; //обьявим переменные для дальномеров unsigned int time_us1 = 0; unsigned int time_us2 = 0; unsigned int distance_sm1 = 0; unsigned int distance_sm2 = 0; //переменные для пересчета в литры int litr1; int litr2; //подключаем датчи газа mq9 #define MQ_PIN A0 float mqValue;// переменная для хранения значения, полученного с датчика MQ9 float ch4; // переменная для хранения уровня газа в процентах // boolean mix_status = false; // состояние перемешивания int mix_count = 0; // количество циклов перемешивания long previousMillis = 0; // стек переменной времени // Переменные для меню int ch4_volume = 10; // значение датчика утечек метана int mix_period = 1; // интервал между перемешиваниями, час int mix_time = 2; // время перемешивания в минутах int Sound_control = 0;// работа контроллера со звуковым сигналом int mik = 1200; // звук int ho; int mi; int hor; int mir; int h; int m; int win; //Номер экрана меню unsigned long temp[2]; //Массив для задержек меню //адреса датчиков ds18b20 DeviceAddress barrel1_temp, barrel2_temp, room_temp; void setup() { //Установка часов для запуска- time.begin(RTC_DS1302, 2, 13, 12); //time.settime(0,27,2,18,3,17,5); // 0 сек, 17 мин, 15 час, 1, октября, 2015 года, четверг // инициализируем экран Wire.begin(); lcd.init(); lcd.backlight(); // Приветствие lcd.setCursor(1, 1); lcd.print("UMIUM BCS-01"); delay (3000); lcd.clear();// очищаем экран // перемешивание pinMode(mix_button, OUTPUT); // Инициируем порт кнопки перемешивания pinMode(mix, OUTPUT); // термореле на включение насосов перемешивания //настраиваем порты дальномеров //дальномеры pinMode(Trig1, OUTPUT); pinMode(Trig2, OUTPUT); pinMode(Echo1, INPUT); pinMode(Echo2, INPUT); // присвоим соответствующие адреса температурным датчикам sensors.getAddress(barrel1_temp, 0); sensors.getAddress(barrel2_temp, 2); sensors.getAddress(room_temp, 1); // установим максимальную точность снятия температуры 12 бит sensors.setResolution(barrel1_temp, 12); sensors.setResolution(barrel2_temp, 12); sensors.setResolution(room_temp, 12); //скорость порта Serial.begin(9600); //пульт irrecv.enableIRIn(); //запишем в память mix_period = EEPROM.read(1); // период перемешивания mix_time = EEPROM.read(2); // время перемешивания Sound_control = EEPROM.read(3); //звуковой сигнал ch4_volume = EEPROM.read(4); // предельное значение датчика утечек газа mik = EEPROM.read(5);// звук } //+++++++++++++++++++++++Программа управления перемешиванием+++++++ void mix_process(float time_mixing, float period_mixing) { hor = ho + mix_period; if (hor > 23) hor = 0; //Ограничиваем значения Serial.print(" hor> "); Serial.print(hor); Serial.print(" <hor "); if (digitalRead(mix) == LOW) { ho = time.Hours; } if (time.Hours == hor && time.minutes == mi) // Включается реле { digitalWrite(mix, HIGH); mir = mi + mix_time; if (mir > 59) mir = 0; //Ограничиваем значения Serial.print(" mir> "); Serial.print( mir ); Serial.print(" <mir "); //выводим время lcd.clear(); lcd.setCursor(0, 0); // отступ первой строки слева 0 . lcd.print(time.gettime("H:i:s")); // час:минуты:секунды lcd.setCursor(10, 0); // отступ lcd.print("on "); mix_status = true;// статус перемешивания - включено } if (time.Hours == ho && time.minutes == mir) // Выключатся реле { digitalWrite(mix, LOW); mir = mi - mix_time; lcd.clear(); mix_count++; // прибавляем счетчик числа процессов перемешивания mix_status = false; // статус перемешивания - выключено } //принудитльное перемешивание if (digitalRead(mix_button) == HIGH) { digitalWrite(mix, HIGH);// включаем перемешивание mix_status = true;// статус перемешивания - включено mir = mi + mix_time; lcd.clear(); lcd.setCursor(0, 0); // отступ первой строки слева 0 . lcd.print(time.gettime("H:i:s")); // час:минуты:секунды lcd.setCursor(10, 0); // отступ lcd.print("on "); } if (time.Hours == ho && time.minutes == mir) // Выключатся реле { digitalWrite(mix, LOW); mir = mi - mix_time; lcd.clear(); mix_count++; // прибавляем счетчик числа процессов перемешивания mix_status = false; // статус перемешивания - выключено } } //обработкакнопок пульта byte key() { if (irrecv.decode(&results)) { val = results.value; //Сверяем значение из переменной val irrecv.resume(); } if (val == 16761405) return 5; //в право if (val == 16754775) return 4; //в низ if (val == 16736925) return 3; //вверх if (val == 16720605) return 2; //в лево if (val == 16712445) return 1; // ok для входя в меню,сохранения и выхода else return 0; } //меню //1 экран void set0() { byte pos = 8; //Считываем записанные значения таймеров. ch4_volume = EEPROM.read(4); // lcd.clear(); while (key() != 1) //Крутим цикл пока не будет Setup { byte KEY = key(); // читаем состояние кнопок val = 0; lcd.setCursor(1, 1); lcd.print(L"ок/соxранить"); // выводим инфу lcd.setCursor(3, 0); lcd.print("CH4 "); if (ch4_volume > 0){lcd.print(" ");} lcd.setCursor(8, 0); lcd.print(ch4_volume); lcd.setCursor(pos, 0); // устанавливаем курсор согласно позиции if (pos == 8 && KEY == 3) ch4_volume++; if (ch4_volume > 50) ch4_volume = 1; //Ограничиваем значения if (pos == 8 && KEY == 4) ch4_volume--; if (ch4_volume < 1) ch4_volume = 50; //Ограничиваем значения }// конец цикла lcd.clear(); //Записываем значения EEPROM.write(4, ch4_volume); lcd.setCursor(0, 0); lcd.print(L"соxраняем"); delay(1500); }// 2 экран void set1() { byte pos = 3; //Считываем записанные значения таймеров. mix_period = EEPROM.read(1); // mix_time = EEPROM.read(2); lcd.clear(); while (key() != 1) //Крутим цикл пока не будет Setup { byte KEY = key(); // читаем состояние кнопок val = 0; lcd.setCursor(1, 1); lcd.print(L"ок/соxранить "); // выводим инфу lcd.setCursor(2, 0); if (mix_period < 10) lcd.setCursor(2, 0); lcd.print(" "); lcd.setCursor(2, 0); lcd.print(mix_period); lcd.print(":"); if (mix_time > 0) lcd.print(mix_time); lcd.print(" "); lcd.setCursor(pos, 0); // устанавливаем курсор согласно позиции if (pos < 3) pos = 3; if (KEY == 5 && pos < 6) pos += 3; // крутим позицию право-лево else if (KEY == 2 && pos > 3) pos -= 3; else if (pos == 3 && KEY == 3)mix_period++; // крутим значения if ( mix_period > 23) mix_period = 0; //Ограничиваем значения else if (pos == 3 && KEY == 4) mix_period--; if ( mix_period < 0) mix_period = 23; //Ограничиваем значения else if (pos == 6 && KEY == 3) mix_time+=5; if ( mix_time > 55) mix_time = 0; //Ограничиваем значения else if (pos == 6 && KEY == 4) mix_time-=5; if ( mix_time < 0) mix_time = 55; //Ограничиваем значения }// конец цикла lcd.noBlink(); lcd.clear(); EEPROM.write(1, mix_period); EEPROM.write(2, mix_time); lcd.setCursor(0, 0); lcd.print(L"соxраняем"); delay(1500); } // 3 экран void set2() { byte pos = 0; //Считываем время с модуля. h = time.Hours; m = time.minutes; lcd.clear(); while (key() != 1) //Крутим цикл пока не будет Setup { byte KEY = key(); // читаем состояние кнопок val = 0; lcd.setCursor(1, 1); lcd.print(L"ок/соxранить"); lcd.setCursor(0, 0); lcd.print(pos / 3, DEC); //Печатаем номер прогр.таймера. lcd.setCursor(2, 0); // выводим инфу if (h < 10) lcd.print("0"); lcd.print(h, DEC); lcd.print(":"); if (m < 10) lcd.print("0"); lcd.print(m, DEC); lcd.setCursor(pos, 0); // устанавливаем курсор согласно позиции if (pos < 3) pos = 3; if (KEY == 5 && pos < 11) pos += 3; // крутим позицию право-лево else if (KEY == 2 && pos > 3) pos -= 3; else if (pos == 3 && KEY == 3) h++; // крутим значения else if (pos == 3 && KEY == 4) h--; else if (pos == 6 && KEY == 3) m++; else if (pos == 6 && KEY == 4) m--; if (h > 23) h = 0; //Ограничиваем значения if (h < 0) h = 23; //Ограничиваем значения if (m > 59) m = 0; if (m < 0) m = 59; }// конец цикла lcd.clear(); time.settime(0, m, h, -1, -1, -1, -1); lcd.print(L"cоxраняем"); delay(1500); } // 4 экран void set3() { byte pos = 7; //Считываем записанные значения. Sound_control = EEPROM.read(3); mik = EEPROM.read(5); lcd.clear(); while (key() != 1) //Крутим цикл пока не будет Setup { byte KEY = key(); // читаем состояние кнопок val = 0; lcd.setCursor(1, 3); lcd.print(L"ок/соxранить"); //////////////////////////// lcd.setCursor(0, 0); // выводим инфу lcd.print(L" звук аварии "); if (Sound_control < 2) if (pos == 7 && KEY == 3)Sound_control++; if (pos == 7 && KEY == 4)Sound_control--; lcd.setCursor(pos, 1); // устанавливаем курсор согласно позиции if (Sound_control >= 2)Sound_control = 0; if (Sound_control >= 1)mik = 1200; if (Sound_control >= 1)lcd.print(L"вкл. "); if (Sound_control < 0 )Sound_control = 1; if (Sound_control <= 0 )mik = 0; if (Sound_control <= 0)lcd.print(L"откл."); //Serial.println(mik); }// конец цикла lcd.clear(); EEPROM.write(3, Sound_control); EEPROM.write(5, mik); lcd.setCursor(0, 0); lcd.print(L"cоxраняем"); delay(1500); }/// //_________________________________________________________________ void menu() { //Массив с наименованиями для экрана char menuTxt[4][20] = {"CH4_control >>", "mix_period >>>", "set_clokc >>>", "Sound_control >>"}; byte pos = 0; byte KEY; while (1) //Бесконечный цикл { KEY = 0; if (temp[1] < millis()) KEY = key(); //Если прошел интервал, читаем код val = 0; lcd.setCursor(0, 0); lcd.print(pos + 1); //Печатаем номер. lcd.print("."); lcd.print(menuTxt[pos]); //Печатаем название // Уменьшить увеличить + блокировка кнопки if (KEY == 3 && pos > 0) { pos--; temp[1] = millis() + 400; } if (KEY == 4 && pos < 3) { pos++; temp[1] = millis() + 400; } // Сейчас можно перейти на разные подменю. if (KEY == 5 && pos == 0) set0(); if (KEY == 5 && pos == 1) set1(); if (KEY == 5 && pos == 2) set2(); if (KEY == 5 && pos == 3) set3(); //Выход из меню с проверкой и установкой блокировки от возврата if (KEY == 1 && temp[0] < millis()) { temp[0] = millis() + 2000; lcd.clear(); break; } } } //_________________________________________________________________ void loop() { //***ВХОД В МЕНЮ и проверка блокировки от возврата. byte KEY = key(); //Принимаем код клавиши val = 0; //Serial.println(KEY,DEC); if (KEY == 1 && temp[0] < millis()) { temp[0] = millis() + 2000; lcd.clear(); menu(); } mix_process(mix_time, mix_period);// проверяем, не пора ли перемешивать //Если setup идем в меню //____________________________________________________________ digitalWrite(Trig1, HIGH); // Подаем сигнал на выход микроконтроллера digitalWrite(Trig1, LOW); // Затем убираем time_us1 = pulseIn(Echo1, HIGH); digitalWrite(Trig2, HIGH); digitalWrite(Trig2, LOW); time_us2 = pulseIn(Echo2, HIGH); // вызываем на экран информацию //выводим время lcd.setCursor(0, 0); // отступ первой строки слева 0 . lcd.print(time.gettime("H:i:s")); // час:минуты:секунды // температура помещения sensors.requestTemperatures(); float tem = sensors.getTempC(barrel1_temp); lcd.setCursor(0, 1); lcd.print(L"В помещении "); lcd.print(String(tem, 1)); lcd.print(L" °"); lcd.print("C"); // температура 1 ферментера lcd.setCursor(0, 2); float fer1 = sensors.getTempC(barrel2_temp); lcd.print(String(fer1, 1)); lcd.print(L" °"); lcd.print("C"); // температура 2 ферментера lcd.setCursor(0, 3); float fer2 = sensors.getTempC(room_temp); lcd.print(String(fer2, 1)); lcd.print(L" °"); lcd.print("C"); //обьем ферментеров //1 реактор distance_sm1 = time_us1 / 58 + 0.8; // Пересчитываем в сантиметры litr1 = (70 - distance_sm1) * 14.3; //пересчитываем в литры // Serial.println(distance_sm1); lcd.setCursor(9, 2); lcd.print(litr1); lcd.print(L"л."); //2 реактор distance_sm2 = time_us2 / 58 + 0.8; litr2 = (70 - distance_sm2) * 14.3; // пересчитыаем в литры // Serial.println(distance_sm2); lcd.setCursor(9, 3); lcd.print(litr2); lcd.print(L"л."); // выведем показания датчика газа //ПЕРЕВОДИМ В ПРОЦЕНТЫ mqValue = analogRead(MQ_PIN); ch4 = mqValue / 1024 * 100 - 2; // Serial.print(ch4); lcd.setCursor(10, 0); lcd.print("CH4"); lcd.setCursor(14, 0); lcd.print(String(ch4)); lcd.print("%"); if (ch4 < ch4_volume) { } else { lcd.clear();// очищаем экран lcd.setCursor(1, 1); lcd.print(L"CH4 Высокий Уровень"); lcd.setCursor(2, 2); lcd.print(String(ch4)); lcd.print(" %"); analogWrite (alarm, mik); // включаем на пьезодинамик delay (3000); analogWrite (alarm, 0); lcd.clear();// очищаем экран } }Не поможет. Тема началась почти два месяца назад, а ТС как задавал детские вопросы, так и задаёт. Похоже, - не читатель.
а на что тогда надо заменить чтоб в формате 2 цифр было?
чтобы в формате двух цифр, надо использовать функцию printf но она похоже не реализована
Не поможет. Тема началась почти два месяца назад, а ТС как задавал детские вопросы, так и задаёт. Похоже, - не читатель.
похоже )))
похоже у ТС с булевой агеброй очень большие проблемы
Ладно дело, ну не задалось у меня с С сразу, лет 30 назад, не лёг на мой мозг так же легко как ASM, осваиваю по мере необходимости
Очень жаль, что олдфаги так охотчи до сарказма и заработка на ньюфагах, чем помочь, подсказать и воспитать нового камрада в своих рядах.
Очень жаль, что олдфаги так охотчи до сарказма и заработка на ньюфагах, чем помочь, подсказать и воспитать нового камрада в своих рядах.
Дак это на всех рассейских форумах так. Вместо помащи, тебя каждый рас наровят в авно натыкать.
Дак это на всех рассейских форумах так. Вместо помащи, тебя каждый рас наровят в авно натыкать.
Вот. Не ходите на Расейские Форума. Лучше устройтесь золотарем. У будете различать эту субстанцию на вкус.
дак я уже 49 лет как эту субстанцию различаю. И не хожу.
да с булевой алгеброй не просто проблема, я воопще первый раз слышу такое)))
то что я хотел работает да и ладно, а остальное буду осваивать по мере необходимости.
когда переключал с 1 назад то должен был переключить на максиму,а это 50, но переключал на 10, а то и вообще не переключал,я зделал так и стало как нужно
// выводим инфу lcd.setCursor(3, 0); lcd.print("CH4 "); if (ch4_volume > 0) { lcd.print(" ");чем помочь, подсказать и воспитать нового камрада в своих рядах.
Попытка помочь была, был дан единственно полезный для ТС совет (см. пост №9). Но ТС проигнорировал совет и даже не понял, что это и есть помощь, т.к. под помощью понимает написание кода вместо него. Такие "камрады" мне как-то совсем не "камрады". А воспитывать их ... так тем и занимаемся.
интересно и в каком месте была просьба что то делать за кого то?
да с булевой алгеброй не просто проблема, я воопще первый раз слышу такое)))
то что я хотел работает да и ладно, а остальное буду осваивать по мере необходимости.
Тогда к LOGIKу - это он взял на себя такую смелость выбрав ник
самое главное что получается, что то запоминается, и совсем не обязательно "любителю" учить язык на котором это все пишется
и совсем не обязательно "любителю" учить язык на котором это все пишется
Нету тут логики!
Есть 2 варианта
1. Не учим язык и не пишем на нем
2. Пишем код, значить учим его язык.
Дано и 3-е. Но за бабки;)
а это уже кому как удобней
самое главное что получается, что то запоминается, и совсем не обязательно "любителю" учить язык на котором это все пишется
хочешь не хочешь а 200 слов выучить придётся
а это уже кому как удобней
Так ото ж. Вам удобнее не учить, не знать, и не платить, а когда нужен код - побираться по форумам "Христа ради". Отсюда и отношение к Вам.
Да ладно Вам, накинулись. В принципе почти все он сам разгреб, без воплей о нечутких форумных передастах.
Да ладно Вам...
Непонятно как ))) сам озвучивает, что с элементарной логикой у него не в ладах, троллит видимо )))
вы видимо не очень внимательны,раз не заметили что я не просил делать за меня что либо
извините,но "булевая алгебра" что это? разве логика? если так то простите с логикой у меня все впорядке
так ведь проще выучить, чем сидеть и читать в попытках понять просто все перемешается,а когда на практике все запоминается само сабой
извините,но "булевая алгебра" что это? разве логика? если так то простите с логикой у меня все впорядке
кратко так и, нельзя сделать конечный автомат не описав его переменные в уравнениях булевой алгебры,
то есть сделать можно, но когда полезут баги и попробуете подставлять костыли, как правило всё разлезается
кратко так и, нельзя сделать конечный автомат не описав его переменные в уравнениях булевой алгебры,
то есть сделать можно, но когда полезут баги и попробуете подставлять костыли, как правило всё разлезается
О как, век живи, век учись, все равно дураком помрешь.))) Пользоваться, пользовался, еще со времен 155/555 серий. Что это "булевы" только сейчас узнал.((((
TynuK, подозреваю, это у Вас биореактор. Если не секрет, то можно фоточки оборудования с пояснениями, ну и личный опыт.
во блин тоже впервые слышу))
да вы правы он самый, можно как с вами связаться?\