Слив унитаза. 2 кнопки.
- Войдите на сайт для отправки комментариев
Сб, 12/03/2022 - 23:41
#include <Servo.h> // подключаем библиотеку для работы с сервоприводом
Servo servo; // объявляем переменную servo типа "servo"
int button2_pin = 3; // пин кнопки2
int button1_pin = 2; // пин кнопки
int button1State = 0; // переменная для хранения состояния кнопки
int button2State = 0; // переменная для хранения состояния кнопки
void setup() {
pinMode(button1_pin, INPUT); // Инициализируем цифровой вход/выход в режиме входа.
pinMode(button2_pin, INPUT); // Инициализируем цифровой вход/выход в режиме входа.
servo.attach(4); // привязываем сервопривод к аналоговому выходу 10
servo.write(0);
}
void loop() {
button1State = digitalRead(button1_pin);// считываем значения с входа кнопки
if (button1State == HIGH) {
servo.write(140); //ставим вал на 180
delay (2000); // задержка в 1 секунду
}
else {
servo.write(0); //ставим вал на 0
}
{
button2State = digitalRead(button2_pin);// считываем значения с входа кнопки
if (button2State == HIGH) {
servo.write(140); //ставим вал на 180
delay (4000); // задержка в 1 секунду
}
else {
servo.write(0); //ставим вал на 0
}
}
}
Слив воды с бачка унитаза с двумя кнопками. Кнопка №1 - Короткое нажатие - половина уровня бачка и кнопка №2 короткое нажатие - весь бачок. Размещаю потому как больше нигде не нашел простого, понятного и доступного всем метода организовать "электронный слив" Пользуйтесь на здоровье! 
P.S. в комментариях проекта есть некоторые неточности, не обращайте внимания.
Угол поворота сервы настраивается непосредственно при монтаже устройства к сливному клапану..
Время слива также регулируется экспериментальным путем на месте ))
Ппц даже в голове ни разу не промелькнуло, что нет нигде, потому что нахер никому не нужно ?
Сама схема так же под сомнением.
Серва запитана от стабилизатора ардуино, а кнопки вообще подключены чёрт-те как.
Всё не так. Не кнопки, а «змей-горыныч» в количестве двух штук.)))))
И такое сырое бесформенное непонятно что в проекты постить? Ну не знаю... В песочнице этому место.
Да даже и там...
Да даже и там...
Там хотя бы не так стыдно )))
Когда народ научится писать автоматы. Простой автомат на 3 состояния . ЗАКРЫТО, КОРОТКИЙ СЛИВ и СЛИВ. Там даже отработку дребезга делать не надо.
Когда народ научится писать автоматы. Простой автомат на 3 состояния . ЗАКРЫТО, КОРОТКИЙ СЛИВ и СЛИВ. Там даже отработку дребезга делать не надо.
Вообще-то автомат не нужен. Цель выполнять одно действие по нажатию кнопки. Не усложняйте!
#include <Servo.h> // подключаем библиотеку для работы с сервоприводом Servo servo; // объявляем переменную servo типа "servo" int button2_pin = 3; // пин кнопки 2 int button1_pin = 2; // пин кнопки 1 int button1State = 0; // переменная для хранения состояния кнопки int button2State = 0; // переменная для хранения состояния кнопки void setup() { pinMode(button1_pin, INPUT); // Инициализируем цифровой вход/выход в режиме входа. pinMode(button2_pin, INPUT); // Инициализируем цифровой вход/выход в режиме входа. servo.attach(4); // привязываем сервопривод к выходу 4 servo.write(0); } void loop() { button1State = digitalRead(button1_pin);// считываем значения с входа 1 кнопки if (button1State == HIGH) { servo.write(140); //ставим вал на 140 delay (2000); // задержка в 2 секунды servo.write(0); //ставим вал на 0 } button2State = digitalRead(button2_pin);// считываем значения с входа 2 кнопки if (button2State == HIGH) { servo.write(140); //ставим вал на 140 delay (4000); // задержка в 4 секунды servo.write(0); //ставим вал на 0 } }Вот вариант (от нехер делать, с исправленными комментами (а иначе зачем?)). Сами поищите как убрать из схемы резисторы :-)
Эта тема не проектная, а скорее тренировочная для детей-студентов и у знатоков ничего не вызовет кроме отврата.
Когда народ научится писать автоматы. Простой автомат на 3 состояния . ЗАКРЫТО, КОРОТКИЙ СЛИВ и СЛИВ. Там даже отработку дребезга делать не надо.
Вообще-то автомат не нужен. Цель выполнять одно действие по нажатию кнопки. Не усложняйте!
Вообще-то автомат здесь - самое простое
Перенесите эту тему сюда http://arduino.ru/node/39529 пожалуйста.
/*автомат*/ enum STATE {CLOSED, SHORT_OPENED, OPENED}; STATE currentState; void stand(STATE s);// функция перехода void gate_run();// функция отслеживания состояний void setup() { stand(CLOSED); } void loop() { gate_run(); } //---------------------------------------------------------------- void stand(STATE s) { // функция перехода currentState = s; switch (currentState) { case CLOSED: /*закрыть*/ break; case SHORT_OPENED: /*коротко открыть*/ break; case OPENED: /*длинно открыть*/ break; } } void gate_run() { switch (currentState) { case CLOSED: if (true /*команда коротко открыть*/)stand(SHORT_OPENED); else if (true /*команда коротко открыть */)stand(OPENED); break; case SHORT_OPENED: if (true /*время исткло*/)stand(CLOSED); break; case OPENED: if (true /*время исткло*/)stand(CLOSED); break; } }Господа, кто-нибудь, ради Христа, можете мне пояснить НАЮХА? Чем это отличается от нажатия кнопки на самом унитазе (сливном бачке)? Выигрыш-то в чём?
Выигрыш-то в чём?
Типичный гавно-проект. В данном случае в прямом и переносном смысле :)))
Господа, кто-нибудь, ради Христа, можете мне пояснить НАЮХА? Чем это отличается от нажатия кнопки на самом унитазе (сливном бачке)? Выигрыш-то в чём?
дальше приделать датчики и принтер и, если короткий слив делать анализ мочи ...
/*автомат*/ #include <Servo.h> // подключаем библиотеку для работы с сервоприводом Servo servo; // объявляем переменную servo типа "servo" const int button2_pin = /*пин*/3; // пин кнопки2 const int button1_pin = /*пин*/2; // пин кнопки enum STATE {CLOSED, SHORT_OPENED, OPENED}; STATE currentState; unsigned long past; void stand(STATE s);// функция перехода void gate_run();// функция отслеживания состояний void setup() { pinMode(button1_pin, INPUT); // Инициализируем цифровой вход/выход в режиме входа. pinMode(button2_pin, INPUT); // Инициализируем цифровой вход/выход в режиме входа. servo.attach(/*пин*/4); // привязываем сервопривод к аналоговому выходу 10 stand(CLOSED); } void loop() { gate_run(); } //---------------------------------------------------------------- void stand(STATE s) { // функция перехода currentState = s; past = millis(); switch (currentState) { case CLOSED: /*закрыть*/ servo.write(0); break; case SHORT_OPENED: /*коротко открыть*/ servo.write(140); break; case OPENED: /*длинно открыть*/ servo.write(140); break; } } void gate_run() { switch (currentState) { case CLOSED: if (digitalRead(button1_pin) == HIGH /*команда коротко открыть*/)stand(SHORT_OPENED); else if (digitalRead(button2_pin) == HIGH /*команда коротко открыть */)stand(OPENED); break; case SHORT_OPENED: if (millis() - past == 2000 /*время исткло*/)stand(CLOSED); break; case OPENED: if (millis() - past == 4000 /*время исткло*/)stand(CLOSED); break; } }Господа, кто-нибудь, ради Христа, можете мне пояснить НАЮХА? Чем это отличается от нажатия кнопки на самом унитазе (сливном бачке)? Выигрыш-то в чём?
дальше приделать датчики и принтер и, если короткий слив делать анализ мочи ...
:-)))
У меня кнопка за спиной, при сидении не всегда удобно жать...
...надо приложение на смартфон написать и блютуз модуль в бачок...
...и получить мировое господство в отдельно взятом доме (кнопку унитаза сломать "есстеснно")
...надо приложение на смартфон написать и блютуз модуль в бачок...
Со стримингом процесса во все соцсети.
/*автомат*/ #include <Servo.h> // подключаем библиотеку для работы с сервоприводом Servo servo; // объявляем переменную servo типа "servo" const int button2_pin = /*пин*/3; // пин кнопки2 const int button1_pin = /*пин*/2; // пин кнопки enum STATE {CLOSED, SHORT_OPENED, OPENED}; STATE currentState; unsigned long past; void stand(STATE s);// функция перехода void gate_run();// функция отслеживания состояний void setup() { pinMode(button1_pin, INPUT); // Инициализируем цифровой вход/выход в режиме входа. pinMode(button2_pin, INPUT); // Инициализируем цифровой вход/выход в режиме входа. servo.attach(/*пин*/4); // привязываем сервопривод к аналоговому выходу 10 stand(CLOSED); } void loop() { gate_run(); } //---------------------------------------------------------------- void stand(STATE s) { // функция перехода currentState = s; past = millis(); switch (currentState) { case CLOSED: /*закрыть*/ servo.write(0); break; case SHORT_OPENED: /*коротко открыть*/ servo.write(140); break; case OPENED: /*длинно открыть*/ servo.write(140); break; } } void gate_run() { switch (currentState) { case CLOSED: if (digitalRead(button1_pin) == HIGH /*команда коротко открыть*/)stand(SHORT_OPENED); else if (digitalRead(button2_pin) == HIGH /*команда коротко открыть */)stand(OPENED); break; case SHORT_OPENED: if (millis() - past == 2000 /*время исткло*/)stand(CLOSED); break; case OPENED: if (millis() - past == 4000 /*время исткло*/)stand(CLOSED); break; } }Со стримингом процесса во все соцсети.
Так то, по ТЗ ТСа стриминг только в коммунальную сеть предполагается на данном этапе.
А вообще, идея по заполнению г0в№ом информационного пространства исчерпывающе реализована множеством способов, в первую очередь созданием т/н соцсетей. Еще один способ просто не выживет в суровых условиях жесточайшей конкуренции))
А вообще, идея по заполнению г0в№ом информационного пространства исчерпывающе реализована множеством способов
В том числе этим топиком
Чем это отличается от нажатия кнопки на самом унитазе (сливном бачке)? Выигрыш-то в чём?
Физические кнопки это фуу, только сенсорные, желательно в виде экранчика на который можно картинки заливать )
Вообще тема может иметь смысл если заменить кнопки бесконтактными датчиками, но тогда надо и кран с такими и сушилку для рук и на ручку двери что то такое (а задницу бесконтактно мыть и сушить - это вообще отдельная серьезная тема).