Как отследить состояние пина
- Войдите на сайт для отправки комментариев
Пт, 04/03/2016 - 18:42
Доброго времени суток всем!
Вопрос назрел такой: возможно ли отследить состояние пина, работающего на ВЫХОД?
В какой-то момент происходит digitalWrite(PUMP1_PIN, HIGH);
bool P1;
if (PUMP1_PIN == HIGH) bool P1 = 1; не работает.
вообще PUMP1_PIN == HIGH - так можно?
Доброго времени суток всем!
Вопрос назрел такой: возможно ли отследить состояние пина, работающего на ВЫХОД?
В какой-то момент происходит digitalWrite(PUMP1_PIN, HIGH);
bool P1;
if (PUMP1_PIN == HIGH) bool P1 = 1; не работает.
вообще PUMP1_PIN == HIGH - так можно?
Просто отследить элементарно, если у тебя есть свободные пины или мультиметр.
Можно ВЫХОД твоего пина подать на ВХОД аналогово или дискретного, и там прочитать значение.
Дискретный выдаст HIGH/LOW, аналоговый каие-то циферки.
Но можно "прочитать" и взглядом, повесив на выход твоего пина светодид (с резистором).
Как то так...
PS. Но еще лучше контролировать потребляемый ток, напор или струю PUMP_1.
Если, конечно, PUMP_1 это насос.
В какой-то момент происходит digitalWrite(PUMP1_PIN, HIGH);
if (PUMP1_PIN == HIGH) bool P1 = 1; не работает.
вообще PUMP1_PIN == HIGH - так можно?
Почему же не работает? Работает - условие всегда будет выполняться если работаете с не нулевым пином.
А чтобы прочесть состояние пина тогда уж лучше так:
if (digitalRead(PUMP1_PIN) == HIGH) ...
А зачем его читать, он же
памятниквыход? Каким назначили таким и будет. Если скетч всё таки забывает, то есть совершенно секретная команда digitalRead(), она поможет установить истину :)вообще PUMP1_PIN == HIGH - так можно?
Почему же не работает? Работает - условие всегда будет выполняться если работаете с не нулевым пином.
Да, ладно! Пошутил?
Не стоит так шутить с начинающими - они ж скорее всего не поймут шутки и воспримут за истину.
Доброго времени суток всем!
Вопрос назрел такой: возможно ли отследить состояние пина, работающего на ВЫХОД?
В какой-то момент происходит digitalWrite(PUMP1_PIN, HIGH);
bool P1;
if (PUMP1_PIN == HIGH) bool P1 = 1; не работает.
вообще PUMP1_PIN == HIGH - так можно?
Просто отследить элементарно, если у тебя есть свободные пины или мультиметр.
Можно ВЫХОД твоего пина подать на ВХОД аналогово или дискретного, и там прочитать значение.
Дискретный выдаст HIGH/LOW, аналоговый каие-то циферки.
Но можно "прочитать" и взглядом, повесив на выход твоего пина светодид (с резистором).
Как то так...
PS. Но еще лучше контролировать потребляемый ток, напор или струю PUMP_1.
Если, конечно, PUMP_1 это насос.
Нужно же на мониторе отобразить работу помпы.
Блин, пока редактировал сообщение и дописывал его появились новые и все коту под хвост - "у вас нет доступа" :(((( Ну что за движок, слов нет.
Ладно, вкратце. Сделайте так:
boolean P1 = HIGH;
digitalWrite(PUMP1_PIN, P1);
P1 будет соответствовать состоянию пина (ведь по нему же его и выставляли).
Круто! Я не знал, что digitalRead() применима к пину, работающему на выход. Спасибо, буду проверять.
Блин, пока редактировал сообщение и дописывал его появились новые и все коту под хвост - "у вас нет доступа" :(((( Ну что за движок, слов нет.
Ладно, вкратце. Сделайте так:
boolean P1 = HIGH;
digitalWrite(PUMP1_PIN, P1);
P1 будет соответствовать состоянию пина (ведь по нему же его и выставляли).
К сожалению, это просто пример, даже не кусок скетча, Управление тремя пинами происходит внутри функции, по наступлению времени && bool "вкл"
Лучше воспользуйтесь способом из сообщения #6.
В программе, там где "В какой-то момент происходит digitalWrite(PUMP1_PIN, HIGH);" сначала присваиваете переменной (если она в функции, то сделайте ее глобальной) нужное значение - HIGH или LOW, а потом выставляете пин в состояние, соответствующее значению этой переменной. И лишний раз пины читать на надо будет, а только проверять переменную.
Работу помпы можно контролировать кучей способов:
- потребляемым током;
- напором насоса (давлением на выходе);
- расходом насоса;
- оборотами колеса насоса.
Если измерять какие-то из этих параметров и отображать на мониторе- мне кажется, будет достаточно.
Я планирую установить реле протока на насосе и на выходе из бака.
Ну и светодиоды еще от них запитать.
Как то так...
Я себе сразу добавил две переменные для учета времени в МИНУТАХ
Как то так...
Это дозатор жидких удобрений, по прикидкам время работы будет 2 - 5 сек\сутки