I2C, Карл, I2C....
Если есть желание получить что то толковое, препарируй это чудо на самодостаточные блоки, добивайся их работы по отдельности, заворачивай в функции и собирай все по новой, предварительно написав требуемый алгоритм. Перерывать всю ту простыню вряд ли у кого желание появится.
Возможно это и так,но я достаточно упрям что бы добить этот код до конца, а вот без этой библиотеки он тоже компилируется и работает так же, вряд ли она сдесь была с чем то связана
Возможно это и так,но я достаточно упрям что бы добить этот код до конца,
При условии, что ua6em не надоест кормить Вас с ложечки. В ином случае, Вы не в состоянии добить этот код независимо от Вашего упрямства до тех пор, пока не последуете моему совету.
А #include не выбрасывайте. То, что без неё хорошо работает - это Вам так кажется. Завтра поменяете веррсию IDE и Вас ждёт неприятный сюрприз. Оставьте в покое, она же Вам не мешает. Не чините то, что не сломано.
Возможно это и так,но я достаточно упрям что бы добить этот код до конца,
При условии, что ua6em не надоест кормить Вас с ложечки. В ином случае, Вы не в состоянии добить этот код независимо от Вашего упрямства до тех пор, пока не последуете моему совету.
А #include не выбрасывайте. То, что без неё хорошо работает - это Вам так кажется. Завтра поменяете веррсию IDE и Вас ждёт неприятный сюрприз. Оставьте в покое, она же Вам не мешает. Не чините то, что не сломано.
Я такой длинный код даже прочитать от корки до корки не смогу, мой мозг этому сопротивляется, чёрный ящик одолел (почти) иногда взбрыкивает и вылетает за диапазон удержания, напрячь извилины не могу, 20 строк проанализировать куда двигать не то что )))
Вот осциллограмки еще глянуть, в какую точку приводит моя программа, лень, прибор работает, спину греет ))) жеж, я и затеялся с программированием, чтобы ручку не крутить
А я его полностью и не читаю, вот в фуекции "void loop" кроме как вывод инфы на дисплей и кнопки пульта зайти в меню, да так проверить переешивать больше и нет ни чего, все лежит в "void setup", сегодня попробую опять все повырезать сначала то что больше не нужно в этом коде
А я его полностью и не читаю, вот в фуекции "void loop" кроме как вывод инфы на дисплей и кнопки пульта зайти в меню, да так проверить переешивать больше и нет ни чего, все лежит в "void setup", сегодня попробую опять все повырезать сначала то что больше не нужно в этом коде
В Сетапе лежит только то, что там лежит. Как вы собираетесь играть "сонату", если не знаете, что есть тромбон, а что есть скрипка? Упрямство весчь хорошая, но в меру. Может есть смысл потратить его на изучение раздела "Программирование" в версии "лайт" и написать код из 100 строк, которого для ваших настоящих хотелок будет достаточно, а не тратить время на борьбу с никому не нужным пультом. Потом поднабравшись опыта спокойно будете пилить свое меню, если его так хочется иметь (старое, даже если работало, все равно кривое до невозможности).
Процесс написания первого меню с нуля, это полет фантазии и сумеречное состояние души. Меню составляет 8/10 от всего кода и несет в основном декоративную функцию. Думайте, что вам важнее - работающее оборудование или красивые картинки с пульта?
Там как раз то и много лишнего есть, зачем в настройках этого меню настраивать время отображения инфы на экране? или к примеру температура котла которого уже нет давным давно, или корекция датчика газа который другой щай стоит. Все это убрать,а оставить только настроить время перемешивания большего и не надо, так вот, с начала удалю,а потом буду смотреть что и где и как поправить.
P.S. Если не можешь помочь не трать время на пустые разговоры.
Все это убрать,а оставить только настроить время перемешивания большего и не надо, так вот, с начала удалю,а потом буду смотреть что и где и как поправить.
P.S. Если не можешь помочь не трать время на пустые разговоры.
Так я и задаю в третий раз вопрос: НАХЕРА ЭТО МЕНЮ НУЖНО, ЕСЛИ НАСТРАИВАЕМ ОДИН ПАРАМЕТР? За трое потраченных суток, скетч можно было 100500 раз перезалить с новым параметром и подобрать оптимальный. Потом заблокировать все кнопки чтобы руки шаловливые не лазали. Усе, устал.
А если в процесе работы устройства надо изменить цыкл, лезь с ноутбуком и перезаливать все с новыми параметрами? и так допустим 3 раза в неделю? Не очень то и удобно будет если в день придется несколько раз менять время перемешивания или допустим интервал.
oid loop() {
mix_process(mix_time, mix_period); // проверяем, не пора ли перемешивать
// irrecv.resume();// запросим значение кнопки на пульте управления
// если нажали * то переходим в меню настроек
if (irrecv.decode(&results)) {
Serial.println(results.value);
if (results.value == 16728765) {
lcd.clear();// очищаем экран
lcd.setCursor(1, 1);
lcd.print("Please, wait");
IR_setup(true);}
delay(1000);
irrecv.resume(); // Receive the next value
}
Serial.println(results.value, DEC);
С Франкенштейном возится не буду, на пример с 221 поста, как человек делал. Есть желание можешь целиком холивар почитать. ТС написал все с нуля за два месяца. Говнокода много и в моих советах в том числе. Сейчас делал бы иначе. Но все взлетело и уже пару лет работает.
Да я это знаю, вот проверил у себя все работает, теперь осталось каким то хитрым образом переделать так как мне необходимо, но это будет позже. А сейчас пытаюсь отгадать загадку, вот написана программка для гидростанции, простая очень.. всего одна библиотека Bounce2. В общем суть такая, 5 реле 4 кнопки , и вот пятое реле -это предохранительный клапан который срабатывает с любым из 4 реле одновременно, после того как все было написанно загруженно на плату NANO, при включении реле на 8 пине, то меря напрежение было так4.20v,а на
другом реле 10 пин (предохранительный клапан) который вместе с ним должен был включиться 0.20v, а все остальные 3 кнопки нормально работают, пытался другие входы ставить, также и кнопки, убирал дрожание кнопок, грузил на другие платы, и все равно таже песня." Где то напрежение гуляет" Вот код
#include <Bounce2.h>
// обрабатываем кнопки джойстика
#define BUTTON_PIN_UP 2
#define BUTTON_PIN_DOWN 3
#define BUTTON_PIN_LEFT 4
#define BUTTON_PIN_RIGHT 5
// Концевики транспортного положения
#define transport 0
// Концевик верхнего положения стола
#define table_up 12
// Концевик нижнего положения стола
#define table_down 11
// порты твердотельных реле джойстика
#define RELAY_UP 6
#define RELAY_DOWN 7
#define RELAY_LEFT 8
#define RELAY_RIGHT 9
#define RELAY_FASE 10
// порт для включения-выключения сигнальной красной лампы
#define red_lamp 1
// порт включения двигтеля гидростанции
#define motor 13
int interval_button = 50; // время дрожания кнопки в мс
// установим объекты обработки дрожания кнопок управления UP
Bounce debouncer1 = Bounce(); // UP
// установим объекты обработки дрожания кнопок управления DOWN
Bounce debouncer2 = Bounce(); // DOWN
// установим объекты обработки дрожания кнопок управления LEFT
Bounce debouncer3 = Bounce(); // LEFT
// установим объекты обработки дрожания кнопок управления RIGHT
Bounce debouncer4 = Bounce(); // RIGHT
// установим объекты обработки дрожания транспортных концевиков
Bounce debouncer5 = Bounce(); // транспортные концевики
// установим объекты обработки дрожания концевиков верхнего положения стола
Bounce debouncer6 = Bounce(); // верх стола
// установим объекты обработки дрожания концевиков нижнего положения стола
Bounce debouncer7 = Bounce(); // нижнее положение стола
void setup() {
// Настройки кнопки UP
//pinMode(BUTTON_PIN_UP,INPUT_PULLUP);
pinMode(BUTTON_PIN_UP,INPUT_PULLUP);
// After setting up the button, setup the Bounce instance :
debouncer1.attach(BUTTON_PIN_UP);
debouncer1.interval(interval_button); // установим время дрожания кнопок в мс
// Настройки кнопки DOWN
pinMode(BUTTON_PIN_DOWN,INPUT_PULLUP);
// After setting up the button, setup the Bounce instance :
debouncer2.attach(BUTTON_PIN_DOWN);
debouncer2.interval(interval_button); // установим время дрожания кнопок в мс
// Настройки кнопки LEFT
pinMode(BUTTON_PIN_LEFT,INPUT_PULLUP);
// After setting up the button, setup the Bounce instance :
debouncer3.attach(BUTTON_PIN_LEFT);
debouncer3.interval(interval_button); // установим время дрожания кнопок в мс
// Настройки кнопки RIGHT
pinMode(BUTTON_PIN_RIGHT,INPUT_PULLUP);
// After setting up the button, setup the Bounce instance :
debouncer4.attach(BUTTON_PIN_RIGHT);
debouncer4.interval(interval_button); // установим время дрожания кнопок в мс
// Настройки порта транспортных концевиков
pinMode(transport,INPUT_PULLUP);
// After setting up the button, setup the Bounce instance :
debouncer5.attach(transport);
debouncer5.interval(interval_button); // установим время дрожания кнопок в мс
// Настройки порта концевика верхнего положения стола
pinMode(table_up,INPUT_PULLUP);
// After setting up the button, setup the Bounce instance :
debouncer6.attach(table_up);
debouncer6.interval(interval_button); // установим время дрожания кнопок в мс
// Настройки порта концевика нижнего положения стола
pinMode(table_down,INPUT_PULLUP);
// After setting up the button, setup the Bounce instance :
debouncer7.attach(table_down);
debouncer7.interval(interval_button); // установим время дрожания кнопок в мс
//Setup the LED :
// pinMode(LED_PIN,OUTPUT);
// порты твердотельного реле объявим и переведем их в закрытое состояние
pinMode(RELAY_UP,OUTPUT);
digitalWrite(RELAY_UP, LOW );
pinMode(RELAY_DOWN,OUTPUT);
digitalWrite(RELAY_DOWN, LOW );
pinMode(RELAY_LEFT,OUTPUT); //отпускает
digitalWrite(RELAY_LEFT, LOW );
pinMode(RELAY_RIGHT,OUTPUT); // затягивает
digitalWrite(RELAY_RIGHT, LOW );
pinMode(RELAY_FASE,OUTPUT);
digitalWrite(RELAY_FASE, LOW );
// порт для включения-выключения двигателя гидростанции. Выключим его при старте обязательно
pinMode(motor,OUTPUT);
digitalWrite(motor, LOW );
// порт для включения-выключения красной лампы. Изначально она включена
pinMode(red_lamp,OUTPUT);
digitalWrite(red_lamp, HIGH );
}
void loop() {
// Посмотрим состояние объектов кнопок и возьмем их состояние
debouncer1.update(); // джойстик
debouncer2.update();
debouncer3.update();
debouncer4.update();
debouncer5.update(); // концевики транспортные
debouncer6.update(); // концевик верхнего положения стола
debouncer7.update(); // концевик нижнего положения стола
// присваиваем переменные состояния джойстика
int value_UP = debouncer1.read();
int value_DOWN = debouncer2.read();
int value_LEFT = debouncer3.read();
int value_RIGHT = debouncer4.read();
// Состояние транспортных концевиков
int transport_value=debouncer5.read();
// Состояние концевика верхнего положения стола
int table_up_value=debouncer6.read();
// Состояние концевика нижнего положения стола
int table_down_value=debouncer7.read();
// Обрабатываем события
// погасим красную лампу и включим двигатель гидростанции
if(transport_value == LOW){
// выключаем красную лампу
digitalWrite(red_lamp, LOW );
// включим двигатель станции
digitalWrite(motor, HIGH );
}
else {
digitalWrite(red_lamp, HIGH );
digitalWrite(motor, LOW );
}
// джойстик в положение верх
if(value_UP==LOW && table_up_value==HIGH){
// включаем предохранительный клапан гидростанции
digitalWrite(RELAY_FASE, HIGH);
// включаем клапан на подъем стола
digitalWrite(RELAY_UP, HIGH);}
else {
// выключаем предохранительный клапан гидростанции
digitalWrite(RELAY_FASE, LOW);
// выключаем клапан на подъем стола
digitalWrite(RELAY_UP, LOW);
}
// джойстик в положение вниз
if( value_DOWN==LOW && table_down_value==HIGH){
// включаем предохранительный клапан гидростанции
digitalWrite(RELAY_FASE, HIGH);
// включаем клапан на спуск стола
digitalWrite(RELAY_DOWN, HIGH);}
else {
// выключаем предохранительный клапан гидростанции
// digitalWrite(RELAY_FASE, LOW);
// выключаем клапан на подъем стола
digitalWrite(RELAY_DOWN, LOW);
}
// затягиваем (джойстик вправо)
if(value_RIGHT==LOW){
// включаем предохранительный клапан гидростанции
digitalWrite(RELAY_FASE, HIGH);
// включаем клапан гидромотора на затягивание зверя
digitalWrite(RELAY_RIGHT, HIGH);}
else {
// выключаем предохранительный клапан гидростанции
// digitalWrite(RELAY_FASE, LOW);
// выключаем клапан на подъем стола
digitalWrite(RELAY_RIGHT, LOW);
}
// оптускаем(джойстик влево)
if(value_LEFT==LOW){
// включаем предохранительный клапан гидростанции
digitalWrite(RELAY_FASE, HIGH);
// включаем клапан гидромотора на отпусакние зверя
digitalWrite(RELAY_LEFT, HIGH);}
else {
// выключаем предохранительный клапан гидростанции
// digitalWrite(RELAY_FASE, LOW);
// выключаем клапан на подъем стола
digitalWrite(RELAY_LEFT, LOW);
}
}
И да вот еще, после того как закоментировал, все эти строчки , кроме как самой первой, то все заработало,но напрежение все равно ниже чем должно быть, реле стоит 5v управлением, вроде работает и при 4v. Но хочется разобраться, какие мысли будут? Мож кто сталкивался с этим?
Всем привет, вот и вернулся я к меню. Все там понял меню переделал, спасибо "bwn".
Теперь осталось 1 проблема, а именно надо сделать таймер с часами ds1302(просто все что есть под рукой)
Таймер должен включать реле (допустим через каждый час на 5 минут), с часами разобрался включается, а вот с
минутами ни как не могу.Задумка такая сохранить текущее время (минуты) на момент включения реле, и потом к этим
минутам прибавить за ранее установленное значение. Вроде все сделал прибавляет, а вот как только минута на часах меняется
то и соответственно то что мне нужно тоже меняется, подскажите как записать эту минуту чтоб она уже не обновлялась пока,
реле не отключится. Ну как то так. вот код
Вроде все сделал прибавляет, а вот как только минута на часах меняется то и соответственно то что мне нужно тоже меняется, подскажите как записать эту минуту чтоб она уже не обновлялась пока, реле не отключится. Ну как то так. вот код
Код не смотрел (оч длинный), надо добавить условие, когда реле HIGH или LOW (не знаю как у Вас), минуты перезаписывать запрещено. Как то так.
У меня только одна просьба помочь провильно сделать вот такой код, часы прибавляет реле включается,а с минутами когда доходит до 2 минут то прибавляет получается 4 и соответсвенно выключение реле переходит на 4 минуты ,а не на 2, как мне можно сделать чтоб это прибавление было после того как выключится реле?
задержку надо как то сделать я не знаю как
#include <RTC.h>
#include <LCD_1602_RUS.h>
LCD_1602_RUS lcd(0x27, 20, 4);
RTC time;
int Relay = 4;
int h = 1;
int m = 2;
int ho;
int mi;
int hor;
int mir;
void setup() {
lcd.init(); // инициализируем экран
lcd.backlight();
// Приветствие
lcd.setCursor(1, 1);
lcd.print("UMIUM BCS-01");
delay (3000);
lcd.clear();// очищаем экран
Serial.begin(9600);
pinMode(Relay, OUTPUT);
time.begin(RTC_DS1302, 2, 13, 12);
time.settime(45, 59, 12);
}
void loop() {
// time.gettime();
// time.period(1);
time.Hours = ho;
time.minutes = mi;
hor = ho+h;
if (time.Hours == hor) // Включается реле в 6 утра
{ digitalWrite(Relay, HIGH);
Serial.print(hor);
}
mir = mi + m;
if (time.Hours == ho && time.minutes == mir) // Выключатся реле в 23:00
{ digitalWrite(Relay, LOW);
Serial.print( mir );
}
//выводим время
lcd.setCursor(0, 0); // отступ первой строки слева 0 .
lcd.print(time.gettime("H:i:s")); // час:минуты:секунды
}
Перед 33 строкой if (digitalRead(Relay) == LOW), а 37 строку поставить перед фиг.скобкой 36 строки. Не забыть фигурные скобки для нового ифа. Вроде так.
Алгоритм - проверяем время только если реле выключено, достигли нужного, включаем реле, запоминаем минуты и пока не выключится больше в этот иф не попадаем.
теперь вообще перестал включаться, или я что то не так сделал?
hor = ho+ h;
if (hor > 23) hor = 0; //Ограничиваем значения
Serial.print(" hor> ");
Serial.print(hor);
Serial.print(" <hor ");
if (digitalRead(Relay) == LOW)
{time.minutes = mi;}
if (time.Hours == hor) // Включается реле в 6 утра
{
digitalWrite(Relay, HIGH);
mir = mi + m;
}
if (mir > 59) mir = 0; //Ограничиваем значения
Serial.print(" mir> ");
Serial.print( mir );
Serial.print(" <mir ");
if (time.minutes == mir) // Выключатся реле в 23:00
{
digitalWrite(Relay, LOW);
}
теперь вообще перестал включаться, или я что то не так сделал? А все понял не то написал, теперь работает
hor = ho+ h;
if (hor > 23) hor = 0; //Ограничиваем значения
Serial.print(" hor> ");
Serial.print(hor);
Serial.print(" <hor ");
if (digitalRead(Relay) == LOW)
{time.minutes = mi;} //time.Hours = ho
if (time.Hours == hor) // Включается реле в 6 утра
{
digitalWrite(Relay, HIGH);
mir = mi + m;
}
if (mir > 59) mir = 0; //Ограничиваем значения
Serial.print(" mir> ");
Serial.print( mir );
Serial.print(" <mir ");
if (time.minutes == mir) // Выключатся реле в 23:00
{
digitalWrite(Relay, LOW);
}
Спасибо "bwn" еще раз, теперь вроде работает как я и хотел, осталось проверить дальше как будет, допустим если 4 часа поставить, и минут 15 к примеру, потом смотреть как будет включаться и выключаться
даже эта часть в монитор порта не попадает, хотя как я думаю должно выходить?
Тогда должно работать, если к пинам подключено аналогично как в примерах
Значит программа сюда не попадает, другого не дано, расставляйте вывод в порт в разных участках программы и смотрите
Все также подключенно, но не работает. А есть функция которая отвечает именно в каком виде код приходит с пульта? Что то искал,но не нашел ни чего
#include <Wire.h> Зачем это здесь? не вижу ни чего чтоб было с этой библиотекой связанно, или я что то пропустил?
I2C, Карл, I2C....
Если есть желание получить что то толковое, препарируй это чудо на самодостаточные блоки, добивайся их работы по отдельности, заворачивай в функции и собирай все по новой, предварительно написав требуемый алгоритм. Перерывать всю ту простыню вряд ли у кого желание появится.
TynuK, Вот Вы не верите, ну лучший совет для Вс оодержится в посте №9. Пока Вы ему не последуете
#include <Wire.h> Зачем это здесь? не вижу ни чего чтоб было с этой библиотекой связанно, или я что то пропустил?
Спасибо. Попробую
Возможно это и так,но я достаточно упрям что бы добить этот код до конца, а вот без этой библиотеки он тоже компилируется и работает так же, вряд ли она сдесь была с чем то связана
Возможно это и так,но я достаточно упрям что бы добить этот код до конца,
При условии, что ua6em не надоест кормить Вас с ложечки. В ином случае, Вы не в состоянии добить этот код независимо от Вашего упрямства до тех пор, пока не последуете моему совету.
А #include не выбрасывайте. То, что без неё хорошо работает - это Вам так кажется. Завтра поменяете веррсию IDE и Вас ждёт неприятный сюрприз. Оставьте в покое, она же Вам не мешает. Не чините то, что не сломано.
Возможно это и так,но я достаточно упрям что бы добить этот код до конца,
При условии, что ua6em не надоест кормить Вас с ложечки. В ином случае, Вы не в состоянии добить этот код независимо от Вашего упрямства до тех пор, пока не последуете моему совету.
А #include не выбрасывайте. То, что без неё хорошо работает - это Вам так кажется. Завтра поменяете веррсию IDE и Вас ждёт неприятный сюрприз. Оставьте в покое, она же Вам не мешает. Не чините то, что не сломано.
Я такой длинный код даже прочитать от корки до корки не смогу, мой мозг этому сопротивляется, чёрный ящик одолел (почти) иногда взбрыкивает и вылетает за диапазон удержания, напрячь извилины не могу, 20 строк проанализировать куда двигать не то что )))
Вот осциллограмки еще глянуть, в какую точку приводит моя программа, лень, прибор работает, спину греет ))) жеж, я и затеялся с программированием, чтобы ручку не крутить
Вот что бы вы ни говорили , а версию IDE менял, разницы ноль кроме той что приходилось некоторые библиотеки поменять чтоб скомпилился.
А я его полностью и не читаю, вот в фуекции "void loop" кроме как вывод инфы на дисплей и кнопки пульта зайти в меню, да так проверить переешивать больше и нет ни чего, все лежит в "void setup", сегодня попробую опять все повырезать сначала то что больше не нужно в этом коде
Интересно и с чего же такой вывод "ua6em не надоест кормить Вас с ложечки" если вы внимательно читали, то
надо было наверно заметить что все что предлогалось я уже и сам попробовал, и это не помогло.
Не люблю людей которые лезут с умными мыслями не понимая даже в чем проблема.
А я его полностью и не читаю, вот в фуекции "void loop" кроме как вывод инфы на дисплей и кнопки пульта зайти в меню, да так проверить переешивать больше и нет ни чего, все лежит в "void setup", сегодня попробую опять все повырезать сначала то что больше не нужно в этом коде
В Сетапе лежит только то, что там лежит. Как вы собираетесь играть "сонату", если не знаете, что есть тромбон, а что есть скрипка? Упрямство весчь хорошая, но в меру. Может есть смысл потратить его на изучение раздела "Программирование" в версии "лайт" и написать код из 100 строк, которого для ваших настоящих хотелок будет достаточно, а не тратить время на борьбу с никому не нужным пультом. Потом поднабравшись опыта спокойно будете пилить свое меню, если его так хочется иметь (старое, даже если работало, все равно кривое до невозможности).
Процесс написания первого меню с нуля, это полет фантазии и сумеречное состояние души. Меню составляет 8/10 от всего кода и несет в основном декоративную функцию. Думайте, что вам важнее - работающее оборудование или красивые картинки с пульта?
Так вот я то как раз понимаю в чём проблема. Это Вы не понимаете. Ну, удачи. Посильнее лбом - стена и прогнётся.
Так вот я то как раз понимаю в чём проблема. Это Вы не понимаете. Ну, удачи. Посильнее лбом - стена и прогнётся.
"...Либо не знают и не ведают, что творят, либо знают, но стригут с этого купоны..." В.Высоцкий
Там как раз то и много лишнего есть, зачем в настройках этого меню настраивать время отображения инфы на экране? или к примеру температура котла которого уже нет давным давно, или корекция датчика газа который другой щай стоит. Все это убрать,а оставить только настроить время перемешивания большего и не надо, так вот, с начала удалю,а потом буду смотреть что и где и как поправить.
P.S. Если не можешь помочь не трать время на пустые разговоры.
Все это убрать,а оставить только настроить время перемешивания большего и не надо, так вот, с начала удалю,а потом буду смотреть что и где и как поправить.
P.S. Если не можешь помочь не трать время на пустые разговоры.
Так я и задаю в третий раз вопрос: НАХЕРА ЭТО МЕНЮ НУЖНО, ЕСЛИ НАСТРАИВАЕМ ОДИН ПАРАМЕТР? За трое потраченных суток, скетч можно было 100500 раз перезалить с новым параметром и подобрать оптимальный. Потом заблокировать все кнопки чтобы руки шаловливые не лазали. Усе, устал.
А если в процесе работы устройства надо изменить цыкл, лезь с ноутбуком и перезаливать все с новыми параметрами? и так допустим 3 раза в неделю? Не очень то и удобно будет если в день придется несколько раз менять время перемешивания или допустим интервал.
Та дело ваше. Охота Франкенштейна воскрешать, на здоровье.
Вот так выходит в меню, но пока что виснет, может у кого есть какие мысли?
Нужна помощь в этой части, есть те кто реально может помочь? Хотя бы просто показать пример как правильно тут сделать.
С Франкенштейном возится не буду, на пример с 221 поста, как человек делал. Есть желание можешь целиком холивар почитать. ТС написал все с нуля за два месяца. Говнокода много и в моих советах в том числе. Сейчас делал бы иначе. Но все взлетело и уже пару лет работает.
И за это спасибо.
ООО да это же то что и нужно мне, спасибо "ФРАНКЕНШТЕЙН" будет жить/
ООО да это же то что и нужно мне, спасибо "ФРАНКЕНШТЕЙН" будет жить/
Только там сравнивается в хексах
045
046
047
048
Да я это знаю, вот проверил у себя все работает, теперь осталось каким то хитрым образом переделать так как мне необходимо, но это будет позже. А сейчас пытаюсь отгадать загадку, вот написана программка для гидростанции, простая очень.. всего одна библиотека Bounce2. В общем суть такая, 5 реле 4 кнопки , и вот пятое реле -это предохранительный клапан который срабатывает с любым из 4 реле одновременно, после того как все было написанно загруженно на плату NANO, при включении реле на 8 пине, то меря напрежение было так4.20v,а на
другом реле 10 пин (предохранительный клапан) который вместе с ним должен был включиться 0.20v, а все остальные 3 кнопки нормально работают, пытался другие входы ставить, также и кнопки, убирал дрожание кнопок, грузил на другие платы, и все равно таже песня." Где то напрежение гуляет" Вот код
И да вот еще, после того как закоментировал, все эти строчки , кроме как самой первой, то все заработало,но напрежение все равно ниже чем должно быть, реле стоит 5v управлением, вроде работает и при 4v. Но хочется разобраться, какие мысли будут? Мож кто сталкивался с этим?
// выключаем предохранительный клапан гидростанции
Всем привет, вот и вернулся я к меню. Все там понял меню переделал, спасибо "bwn".
Теперь осталось 1 проблема, а именно надо сделать таймер с часами ds1302(просто все что есть под рукой)
Таймер должен включать реле (допустим через каждый час на 5 минут), с часами разобрался включается, а вот с
минутами ни как не могу.Задумка такая сохранить текущее время (минуты) на момент включения реле, и потом к этим
минутам прибавить за ранее установленное значение. Вроде все сделал прибавляет, а вот как только минута на часах меняется
то и соответственно то что мне нужно тоже меняется, подскажите как записать эту минуту чтоб она уже не обновлялась пока,
реле не отключится. Ну как то так. вот код
Код не смотрел (оч длинный), надо добавить условие, когда реле HIGH или LOW (не знаю как у Вас), минуты перезаписывать запрещено. Как то так.
У меня только одна просьба помочь провильно сделать вот такой код, часы прибавляет реле включается,а с минутами когда доходит до 2 минут то прибавляет получается 4 и соответсвенно выключение реле переходит на 4 минуты ,а не на 2, как мне можно сделать чтоб это прибавление было после того как выключится реле?
задержку надо как то сделать я не знаю как
Давно хотел написать такой код . Может кому-то пригодится Полный скетч здесь https://yadi.sk/d/xlmiqDin3G7huc
Головной сюда
Интересная возможность обрабатывать кнопки пульта, но мне это не поможет, с кнопками я уже давно разобрался
Мне бы еще несколько подобных "кубиков" и я буду влет собирать такие программы как вы тут приводите.
Я рад за вас, но мне б этот "кубик" решить для начала, а потом возможнои тоже смогу в "лет" собирать))
Перед 33 строкой if (digitalRead(Relay) == LOW), а 37 строку поставить перед фиг.скобкой 36 строки. Не забыть фигурные скобки для нового ифа. Вроде так.
Алгоритм - проверяем время только если реле выключено, достигли нужного, включаем реле, запоминаем минуты и пока не выключится больше в этот иф не попадаем.
Спасибо, щас буду пробовать, так сделать
теперь вообще перестал включаться, или я что то не так сделал?
теперь вообще перестал включаться, или я что то не так сделал? А все понял не то написал, теперь работает
Спасибо "bwn" еще раз, теперь вроде работает как я и хотел, осталось проверить дальше как будет, допустим если 4 часа поставить, и минут 15 к примеру, потом смотреть как будет включаться и выключаться
TynuK, Вы все таки примеры от qwone изучите и возьмите на вооружение. Он пишет правильно, эт я в лоб долблю.
да я посмотрел,как там написанно, в следующий раз попробую использовать этот вариант,а пока что хотел бы доделать то что начал уже давно.
подскажите пожалуйста, что это значит "if (mix_period < 10) "
подскажите пожалуйста, что это значит "if (mix_period < 10) "
это значит вывести в формате 4 цифр, когда меньше 10 выводим сначала 0