Установка значений с помощью кнопок для весового дозатора
- Войдите на сайт для отправки комментариев
Сделал весовой дозатор для воды, не без помощи форумчан (за что отдельная благодарность).
Нажимаю кнопку, через реле включается помпа, качающая воду. Когда необходимый вес набирается, помпа выключается.
Все отлично работает.
Но хочется добавить возможность программирования необходимого веса с помощью кнопок, а не прибегать к постоянному перезаливанию скетчей с новым весом для дозирования.
Для этого я решил разбить значение (00.00 грамм) на отдельные 4 цифры. Где, как вы уже наверняка догадались, первая цифра отвечает за значения кратные 10 грамм, вторая за кратные 1 грамму, третья за 0.1, четвертая цифра за 0.01 грамм. Но это так, легкое отступление. Если есть предложение лучше, буду только рад!
А для начала, я хочу разобраться как изменять значение хотя бы одной цифры.
void loop() { lcd.setCursor(7, 1); lcd.print(numb); if (digitalRead(butA) == HIGH) { countOn(); } } int countOn() { if (digitalRead (butB) == HIGH && numb < 9) { numb = numb + 1; delay(300); } if (digitalRead(butB) == HIGH && numb == 9) { numb = 0; delay(300); lcd.clear(); } }
В данном отрезке кода на экран выводится цифра 0. Затем, пока я держу кнопку (butА), при каждом нажатии кнопки (butВ) цифра на экране изменяется на +1. Все замечательно, но менять эту цифру я могу только пока кнопка (butA) зажата.
Так вот, как сделать так, чтобы по одному нажатию кнопки (butA) включалась возможность изменения цифр кнопкой (butB), а по следующему отключалась?
P.S.: Опыт программирования меньше 10 дней, поэтому прошу отнестись с пониманием.
Проще всего по длительности нажатия. Короткое-изменение параметра. Длинное - допустим 0,5-1 секунда переход к следующему. Очень длинное > 2 секунд выход и запись в память.
Спасибо! Это отличный вариант!
А можете подсказать код, или где его поискать? Даже не знаю что у гугла спрашивать.
Спасибо! Это отличный вариант!
А можете подсказать код, или где его поискать? Даже не знаю что у гугла спрашивать.
Поищите здесь на форуме, работа с кнопками. А может кто и готовый кусочек подкинет. Я у себя нашел только замороченные. Лучше их не смотреть. Вот примерно, что Вам нужно http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-novichku?page=2#comment-48930 ну и дальше должны попадаться примеры, возможно более подходящие. Кроме того есть еще и библиотеки для кнопок.
4 кнопки.
Перебором по кругу.
Как во всех автомобильных приёмниках вводится код.
Спасибо большое! Тут нашел все что надо!
Все, как менять значения с помощью кнопок я разобрался.
А вот как теперь сохранять значения в памяти контроллера, чтобы они не сбрасывались к 00.00 при каждой перезагрузки, не могу найти информацию.
Подскажите пожалуйста.
Подскажите пожалуйста.
eeprom_Ref.h
На самом деле не знал куда копать. Много натыкался на "запись на внешнюю память", но ничего того что нужно (на первый взгляд) не мог найти. А потом уже увидел "EEPROM", понял что это такое и после этого уже достаточно быстро разобрался.
Но тем не менее, за ответ спасибо!
Все, как менять значения с помощью кнопок я разобрался.
А вот как теперь сохранять значения в памяти контроллера, чтобы они не сбрасывались к 00.00 при каждой перезагрузки, не могу найти информацию.
Подскажите пожалуйста.
Гугли "Ардуино EEPROM"
Спасибо! Это отличный вариант!
А можете подсказать код, или где его поискать? Даже не знаю что у гугла спрашивать.
Пробовал код QWONE
и библиотеку Алекса Гайвера, зачёт для этих целей