Помощь со скетчем
- Войдите на сайт для отправки комментариев
Всем доброго времени суток.
Прошу сразу не гнать прочь и не кидаться камнями.
Появилась острая необходимость сделать автополив для моей Черимойи.
Помогите, пожалуйста подредактировать скетч. Понимаю что примеров систем автополива в интернете масса, но прошла неделя, эмоции на пределе, микросхемы ночью снятся. Не думал что для меня это будет так сложно.
Были куплены:
1. Arduino mega 2560 (как я понимаю китайский аналог). Как я уже понял для моей задачи подошло бы что-то попроще, но устройство уже у меня.
2. PWM&Servo shield. Думал с помощью нее смогу размножить контакты с основной платы, но опять же уже в процессе понял что для меня штука бесполезная.
3. Драйвер L298N для запуска 12V насоса перистальтического.
4. Два щупа для замера влажности почвы. Тоже уже понял что они жутко быстро окисляются, пока попробовал две никелированные скрепки попробовать, но думаю и их на долго не хватит. Думаю как можно сократить количество замеров до 2-х в день.
5. Экранчик OLED
6. Трехцветный светодиод. Больше для побаловаться, но и он может пригодиться.
7. Модуль WiFi. Думал в итоге приспособить для передачи данных о влажности по WIFI, но пока смутно представляю как это реализовать.
Задача, как вы понимаете проста, при достижении нижнего порога влажности включить на время насос, при этом отображать данные на OLED экранчик.
Помогите, пожалуйста подредактировать скетч.
какой скетч?
Вот, что у меня получилось:
Прошу прощения за медлительность, разбирался как вставить его правильно на форум.
Этот скетч как Франкенштейн - сборная солянка с кучи форумов и сайтов.
Задача, как вы понимаете проста, при достижении нижнего порога влажности включить на время насос, при этом отображать данные на OLED экранчик.
ну, и в чём проблема?
if (нижний порог влажности) {if (!время работы насоса) {включить насос; печать на эеран;}}
Задача, как вы понимаете проста, при достижении нижнего порога влажности включить на время насос, при этом отображать данные на OLED экранчик.
ну, и в чём проблема?
if (нижний порог влажности) {if (!время работы насоса) {включить насос; печать на эеран;}}
Проблема: данные на экран выводятся только когда датчики показывают "НОРМУ". Может быть это изза Delay который насос тормозит..
ТАкже если один датчик в воде а второй на суше, с того который в воде показываются какие то усредненные данные с тем что в воде..
а, зачем ты что-то печатаешь в лупе, а не по событиям.
нафиг, вообще, тебе делей нужен?
а, зачем ты что-то печатаешь в лупе, а не по событиям.
нафиг, вообще, тебе делей нужен?
А по событиям это как? :|
Имеете ввиду, как Вы выше написали, заменить Delay на "if (нижний порог влажности) {if (!время работы насоса) {включить насос; печать на экран;}}"?
а, зачем ты что-то печатаешь в лупе, а не по событиям.
нафиг, вообще, тебе делей нужен?
А по событиям это как? :|
Имеете ввиду, как Вы выше написали, заменить Delay на "if (нижний порог влажности) {if (!время работы насоса) {включить насос; печать на экран;}}"?
события у тебя
if
(sensorValue*
по ним и печатай
if
(sensorValue*) {
myOLED.print();}*менять делай ни на что не нужно - забудь, что он, вообще, существует.
ты же дёргаешь пинами digitalWrite(* по событиям? - там же и печатай.
а, зачем ты что-то печатаешь в лупе, а не по событиям.
нафиг, вообще, тебе делей нужен?
А по событиям это как? :|
Имеете ввиду, как Вы выше написали, заменить Delay на "if (нижний порог влажности) {if (!время работы насоса) {включить насос; печать на экран;}}"?
события у тебя
if
(sensorValue*
по ним и печатай
if
(sensorValue*) {
myOLED.print();}*менять делай ни на что не нужно - забудь, что он, вообще, существует.
ты же дёргаешь пинами digitalWrite(* по событиям? - там же и печатай.
Может если знать хотя бы азы программирования, это все звучит просто, а я вот 95% в этом них не понимаю. Могу только на примере чего-то разобраться.
Уважаемый, Клапауций, не сочтите за труд, хоть один блочок для примера напечатайте, а я по аналогии все и поправлю.
И я может что-то пойму и Вам плюсик в карму =)
Уважаемый, Клапауций, не сочтите за труд, хоть один блочок для примера напечатайте, а я по аналогии все и поправлю.
я тебе дал пример кода
if
(sensorValue*) {
myOLED.print();}что здесь непонятного?
ок. словами перескажу, что в этой строчке происходит: если значение сенсора чему-то соответствует, то нужно напечатать на экране это что-то и, возможно, сделать что-то ещё.
Может если знать хотя бы азы программирования, это все звучит просто, а я вот 95% в этом них не понимаю.
Ну так изучайте, чтобы понимать.
http://arduino.ru/Reference
http://wiki.amperka.ru/видеоуроки:джереми-блюм
https://drive.google.com/file/d/0B9r7cRXQ4DU4XzVLeUVkNHdiaVU/
http://www.programming1189.ru/files/Kern_Ritch.pdf
http://www.programming1189.ru/files/Kern_Ritch.pdf
Жека, а есть что-то более вменяемое?
меня выбешивает и мешает переключиться на поглощение знаний с желания надавать тупой блондинке этой книгой по голове:
1.1. Начнем, пожалуй Единственный способ выучить новый язык программирования — это писать на нем программы.
ять!
Вот код. Но я не проверял. Я просто переработал ваш.
Жека, а есть что-то более вменяемое?
Для новичков - первые три ссылки. Потом можно и к Кернигану&Ритчи приступать. Хотя, например, ЕвгенийП советует наоборот - начинать с этой книги.
Жека, а есть что-то более вменяемое?
Для новичков - первые три ссылки.
я не просил для новичков.
Эээ, ну тогда не знаю. Керниган&Ритчи - это же библия у программистов :-)
Вот код. Но я не проверял. Я просто переработал ваш.
Спасибо Вам, попробую разобраться.
Эээ, ну тогда не знаю. Керниган&Ритчи - это же библия у программистов :-)
ты лично читал? - это может и библия, но для слабоумных.
или, возможно, для детей - что есть существенная разница.
Уважаемый Jeka_M
На сегодняшний день я не готов настолько глубоко погружаться в изучение программирования для создания системы автополива, у меня просто нет на это времени.
Но за направление на путь истинный и рекомендации спасибо =)
Может я слабо понимаю всю сложность данного вопроса и в данном случае проще заплатить какую-то сумму для того, чтобы мне написали рабочую программу?
Посоветуйте.
Может я слабо понимаю всю сложность данного вопроса и в данном случае проще заплатить какую-то сумму для того, чтобы мне написали рабочую программу?
Посоветуйте.
процесс не прост, но вам будет мучительно больно платить за свою ленью
AlexTS Даже вопрос не в лени. В любой программе есть ошибки, даже банальные описки. Но из-за них даже рабочая программы станет не рабочей. Вот по этому и учат программирование. Не для написания программ, а для выявление ошибок в них, а потом их устранения. Что и занимает большую часть рабочего времени программиста.
Клапауций 232
Согласен, полностью.
Я же повторюсь, мне сложно оценить всю сложность процесса для опытного человека.
И если это, как вы выразились не просто. Здесь уже все будет зависеть от суммы.
qwone
Все верно, чтобы найти ошибки, нужно быть программистом. А если я инженер в далекой от программирования области, и свободного времени очень не много, а девайс необходим, приходится из чего-то выбирать и рассматривать разные варианты.
И если это, как вы выразились не просто. Здесь уже все будет зависеть от суммы.
дело в том, что сумма будет не адекватна сложности.
*тем более, тебе уже что-то написали бесплатно.
Клапауций 232
Именно после того, что мне написал qwone, я и задумался о таком варианте =)
Там просто все по-другому!
Рабочая программа это программа которая загружена в изделие работает. Вот только если у программиста нет этого изделия, то определить почему программа не работает сложно. А мой стиль еще и не привычен многим. Так что вылавливать в моем коде ошибки даже мне сложно. Так что скину последний вариант моего кода с комментариями, для отладки.
ПС: Извините, если кому-то помешал заработать.
qwone
Огромное спасибо!
буду разбираться.
Всем добрый вечер.
Еще раз спасибо qwone. Хоть для меня ничего и не понятно в Вашем коде, но я умудрился найти пару неточностей, из-за которых не хотело ничего запускаться.
Теперь вопрос: Из-за чего могут усредняться значения при разных показаниях на датчиках? ТОесть изначально два датчика показывают допустим, 1020. Опускаю один в воду и он начинает показывать допустим 300, а второй при этом сухой и показывает 600. Как думаете, в чем проблема?
скорее всего проблема в самом датчике. Попробуйте заменить его двумя грифилями от простых карандашей. Или графитовым стержнем от пальчиковой батарейки.
http://www.youtube.com/watch?v=eKz8a6yCfaU
скорее всего проблема в самом датчике. Попробуйте заменить его двумя грифилями от простых карандашей. Или графитовым стержнем от пальчиковой батарейки.
http://www.youtube.com/watch?v=eKz8a6yCfaU
Любопытный вариант, благодарю! нужно попробовать.
Но я все-таки не думаю что проблема с датчиками, потому что по одиночке они прекрасно работают..
Еще небольшой вопрос, возможно ли програмно реализовать подачу питания на датчик 2 раза в день, или нужно реле?
Можно. Но программа немного усложнится.
Хочу максимально уйти от электролиза датчиков, хотя если применить графитовые стержни из приведенного Вами видео, этой проблемы быть не должно, но и энергопотребление должно снизиться, да и нет надобности снимать показания раз в секунду.
Просто питание датчик берет с Пинов платы, а оно, как я понимаю, на этих пинах постоянное, поэтому програмно можно задать именно высвечивание данных, а ток через щуп будет в любом случае идти постоянно.
Или я ошибаюсь?
ну да. Включить датчик через пин, пауза, замер,полив если надо ,выключить датчик и пауза на пол дня. Датчики можно включать в разное время.
пс:http://masterkit.ru/shop/smarthome/sensors/1333987
http://gruntoff.ru/publ/kontrol/7-1-0-104
http://meandr.org/archives/25973
Добрый день. Есть три геркона и необходимо только при замыкании всех 3х подать сигнал на светодиод. Помогите со скетчем. Весь можно не писать. Я так понимаю там всего пару строк в loop нужно добавить о которых я не вкурсе.
Despot , так?
Спасибо большое.
Добрый вечер всем.
Уважаемый qwone, можно ли получить ваш e-mail? хотел быть задать частный вопрос.
---
Всем доброго вечера!
на сегодняшний день собрал всю схему, почти все работает. Чтобы уйти от окисления электродов, Анод (оооочень быстро окислялся, буквально на глазах) решено было сделать из двух сединенных между собой графитовых стержней из пальчиковых батареек, катод решено оставить просто из выпрямленной толстой скрепки.
Чтобы уменьшить токопотребление, хочу попробовать питание подавать с цифрового пина Ардуины с определлной задержкой.
Прошу помощи в добавлении нужной строчки в код, а то я чего-то совсем запутался:
Также никак не могу найти причину отображения усредненных значений двух датчиков..если у кого-то появится предположение, прошу откликнуться!
Переработал код
ПС: Я совместил измерение почвы и полив. Хотя лучше их разнести в разные потоки.
Переработал код
ПС: Я совместил измерение почвы и полив. Хотя лучше их разнести в разные потоки.
Огромное спасибо, за помощь и отзывчивость! буду тестить =)
Уважаемый, qwone.
Подскажите, пожалуйста, что такое "время смещения вкл датчика от подачи питания" ?
Что это за смещение? не могу понять...
А также, правильно ли я понимаю, что для того, чтобы изменять время проведения измерений, я должен трогать вот эту строчку: "
const
uint32_t time2_2 = 60 * 60 * 1000;
// время паузы между полививом
?Вот последний код
// время смещения вкл датчика от подачи питания 120 сек
У вас 2 датчика причем совмещены с насосом. Вот я смещаю их работу, что бы они не работали синхронно. То есть один начинает работать с 10 секунд от подачи питания а другой от 120. А так как у них паузы одинаковые, то и дальше они работают не одновременно.
qwone, добрый вечер!
Я Вам очень благодарен, тестирую Ваш новый код)
код в #43?
http://arduino.ru/forum/programmirovanie/pomoshch-so-sketchem#comment-22...
Да, конечно. Именно его.