Не пойму как реализовать таймер.
- Войдите на сайт для отправки комментариев
Вс, 09/02/2020 - 02:57
Здравствуйте. Подскажите как сделать защиту от перелива по времени.
задача простая набирается бак если вдруг с датчиком проблема, т.е. бак не набрался за определенное время то реле отключается.
Moderator : пожалуйста, вставьте код правильно (возможно, новым сообщением в тему),
Зашел в тупик ничего не могу придумать.
Во первых, вставьте код по правилам форума. (в новом сообщении, т.к. первое сообщение нельзя редактировать)
В вторых, что значит зашли в тупик? Какой результат на деле у вас получается? Предоставьте схему соединения ардуино, реле и датчиков которые висят на EMPTYPin и FULLPin и когда(в какой момент процесса наполнения резервуара) по вашей задумке каждый датчик должен переходить из состояния LOW в HIGH и наоборот?
По вашей логике, как может быть что резервуар одновременно и пуст и полон ? elseif(EMPTY == HIGH && FULL == HIGH)?
Все логично. Следующая строка должна быть lcd.print "я/или ты/поломалсо. Звони в жэк/вызывай санитаров/.
А если серьезно, то такое возможно. Имена переменных дурацкие ток. Лучше обозвать lowerSensor и upperSensor, например.
Традиционно замечаю, что поплавковый механизм от унитаза стоит 200р.
У Вас это уже в привычку входит. Или это профессианальное?
Резервуар пустой LOW полный HIGH.
Извиняюсь за имена переменных. Культуру написания переменных воспитывать годами надо.
на мой взгляд коротко и понятно.
Так а насчет вопроса Как?
По идее все должно выло работать нормально. Т.Е. само наполнение происходит как положено. Когда поплавок опустился в низ, оба датчика LOW, реле включилось. Поплавок поднялся, оба датчика HIGH, реле отключилось. При подаче питания все работает после того как реле стало LOW, т.е. отключилось таймер считает 3 секунды и уходит в аварию, а должен включаться после HIGH/
для начала определиться со временем наполнения к примеру
Для начала надо точно определиться - с какого момента считать. С EMPTY или с FULL.
Я думаю с соответствия условиям во время подачи питания? Т.Е. соответствует 1 условиям то реле включено,
а если другим то отключено.
для начала определиться со временем наполнения к примеру
Так у меня часов нет. Простой счетчик работающий от millis(), реле включилось, счетчик сбросился.
Я думаю с соответствия условиям во время подачи питания?
Вот поэтому все один раз и работает.
т.е. ваша ардуина включается вместе с насосом и должна или засечь FULL или выключить движок через 3 секунды?
понял про что говорилось. Спасибо за труд. Не пойму одного у Вас идет опрос идет одного датчика с привязкой к состоянию реле. Я так пробовал, не получилось.
Сейчас пробую ваш скетч тоже не правильно работает.За идею огромное спасибо. Буду сегодня пробовать.
Извиняюсь, но надо на работу.
состояние датчиков я принимал как включено, поправь если это не так, то-есть при достижении уровня в нижнем датчике -HIGH, аналогично и верхний, в системах ON это включено, а не наоборот, как у тебя )))
Делал исходя из фактических значений.
Здесь 4 состояния, но удовлетворяют условиям 2, когда оба датчика LOW (поплавок ВНИЗУ) включаем насос, когда оба HIGH (поплавок вверху)отключаем, именно оба датчика, потому что поплавок поднимает шток снизу вверх перекрывая сначала нижний , затем верхний. Промежуточные состояния игнорируются. А если вдруг, после включения реле, поплавок не дошел до верха за заданный период времени то отключаем выполнение программы с флагом аварии.
Без части отвечающей за временную составляющую все работает как надо. С учетом естественно механники. Как только начинаешь вставлять время, начинаются танцы.
Так это выглядит.
https://postimg.cc/yD78fQw8
https://i.postimg.cc/V6xLpNyh/image.png
Так это выглядит.
https://postimg.cc/yD78fQw8
https://i.postimg.cc/V6xLpNyh/image.png
Поменял значение на нижнем датчике, обязано работать, мог бы и сам это сделать, пост #13
Пардон. Прощёлкал. Теперь работает идеально. Но свой костыль с delay всё же вставил :-) Иначе опять по кругу запускает.
СПАСИБО!!!!!!!
delay потом поменяю на цикл с диодом типа индикации.
Если рядом живете, с меня пиво. Я в Воронежской области.
На кой весь этот цирк с ардуиной при таком дилее?
Да просто поплавкового механизма от унитаза нет.
Это вроде как индикация ошибки. потом сделаю моргающий светодиод, вроде же написал.
Охренеть куда написал. Извиняюсь.
не может он повторно запускаться если нижний датчик не в нуле, а если вообще нужно, чтобы разово отработал мотор и не зависимо от датчиков загорелась авария если не достигнут верхний датчик выставляйте флаг и включаете его в условия запуска
А если авария нижнего датчика? Лучше пусть так. Надёжней. Ещё раз Спасибо! Вроде задача не сложная, но если не занимаешься этим часто, то и не простая.
Без разницы, зачем Вы воткнули это чудо - delay (9000000000000);
Но функция delay принимает аргумент типа Unsigned long, максимальное значение - 4 294 967 295. Так что, если бы Вам действительно была нужна именно такая задержка (9000000000000) Вас бы ждал сюрприз. Может и сейчас ждёт.
А зачем delay (9000000000000)? Есть прекрасная штука while(1);. Да и пищалку надо при аварии включить или светодиодик типа ERRORpin. А еще лучше while(1) if(buttonRESET) break;
А вообще любят у нас гланды через ж*пу... Посмотрите как работают электромеханические средства и их программируйте. Навскидку без паранойи:
С паранойей - в строку 2 добавить
Получилось как - то так.
можешь же когда захочешь )))
Помогите исправит ошибки ГУРУ АРДУИНО уже сижу полдня но не как не могу исправить проблему. Не знаю правильно я дописал таймер отключения но компилятор постоянно выдает новые ошибки. Сейчас выделяет строку 131 что смс не был обьявлен в этом объеме. что то я уже совсем не могу понять в чем проблема. Если кому нетрудно подскажите что с этим делать? Заранее благодарю.
geka0110,
Все переменные и функции должны быть объявлено до использования.
Для людей с плохим зрением - до использования.
Для блондинок - они выше должны быть объявлены, чем используются.
Вы используете свою sms в 131 строке, а объявлена она у Вас в 142.
Взять книгу Кернигана и Ритчи (ссылка есть в разделе "Песочница") и читать, по ходу дела запуская и разбирая все примеры. И пока этот процесс не закончится - не лезть программировать что-то ещё.
Я бы Вам посоветовал отдельно разобраться с программой управления, а отдельно с СМС. Потом это объединить. Если это не скопирастенная программа, то Вам несложно будет разделить эти вещи и протестировать по отдельности. Если скопирастили - обратитесь к автору.
сам ты Блондинка если такой умный взял бы и помог.
сам не хрена не шаришь только такое писать умеешь.
Умники сидите тут а за помощью обратился все заднюю .
сам ты Блондинка если такой умный взял бы и помог.
сам не хрена не шаришь только такое писать умеешь.
Умники сидите тут а за помощью обратился все заднюю .
Вы, наверное, читаете по слогам или зациклены на ЧСВ. Вам доступно объяснили, что подпрограмму sms() надо перетащить на 39-ю строку. Вы ЭТО СДЕЛАЛИ? НЕТ? Так какого х*ра возмущаетесь?
взял бы и помог.
А я что, не помог? Не объяснил? Что-то осталось непонятным?
Мда, беру назад свои слова о блондинках и извиняюсь перед ними за невольную клевету. Объяснение:
Вы используете свою sms в 131 строке, а объявлена она у Вас в 142.