Серво двумя кнопками. Проверьте пожалуйста.
- Войдите на сайт для отправки комментариев
Сб, 12/03/2022 - 12:12
Здравствуйте, соучастники!
Делаю электронный слив для унитаза. После нескольких дней поиска нашел скетч, немного его подправил, (добавил вторую кнопку и убрал светодиоды) вроде заработало на симуляторе, но гложут сомнения, как-то все легко и просто получилось. Посмотрите пожалуйста,будет работать?
#include <Servo.h> // подключаем библиотеку для работы с сервоприводом
Servo servo; // объявляем переменную servo типа "servo"
int button2_pin = 4; // пин кнопки2
int button_pin = 2; // пин кнопки
// переменные
int buttonState = 0; // переменная для хранения состояния кнопки
int button2State = 0; // переменная для хранения состояния кнопки
void setup() {
pinMode(button_pin, INPUT); // Инициализируем цифровой вход/выход в режиме входа.
pinMode(button2_pin, INPUT); // Инициализируем цифровой вход/выход в режиме входа.
servo.attach(3); // привязываем сервопривод к аналоговому выходу 3
void loop() {
buttonState = digitalRead(button_pin);// считываем значения с входа кнопки
if (buttonState == HIGH) {
servo.write(180); //ставим вал на 180
delay (2000); // задержка в 2 секунды
}
else {
servo.write(0); //ставим вал на 0
}
{
button2State = digitalRead(button2_pin);// считываем значения с входа кнопки
if (button2State == HIGH) {
servo.write(180); //ставим вал на 180
delay (4000); // задержка в 4 секунды
}
else {
servo.write(0); //ставим вал на 0
}
}
}
И второй вопрос: можно ли в промежутках между работой полностью отключать Ардуину, например, ИК датчиком через триггерное реле?

Странный скетч. Непонятна логика работы.
На заполнение это никак не влияет. Это на слив. Смысл устройства - с помощью сервы подымать клапан слива. Нажатие одной кнопки на 2 секунды (сливается примерно половина бачка) другой кнопкой - на 4 секунды для полного слива всей воды. Делеи нужны для задержки клапана слива в поднятом состоянии на эти самые 2 и 4 секунды
1. Убери делеи: http://arduino.ru/tutorials/BlinkWithoutDelay
2. Зачем ардуину отключать?
1. Убери делеи: http://arduino.ru/tutorials/BlinkWithoutDelay
2. Зачем ардуину отключать?
1. В данном случае делеи никак не мешают
2. Чтобы не писать коды для спящего режима)
Я думаю делеи в таком случае никак не будут мешать или вредить работе Ардуино
1. Ты ссылку открывал?
2. Зачем ардуино сон? Ты ее от батареек питать вздумал? Это просто глупо - серва будут жрать во много раз больше, чем сможешь сэкономить сном. Да и не тот уровень у тебя - в сон лезть. Пусть работает.
Хорошо, "отключение" убираем))
Я думаю делеи в таком случае никак не будут мешать или вредить работе Ардуино
Дело твоё. Зачем тогда тему создал?
1. Ты ссылку открывал?
Думаю для такой простой задачи не нужны все эти заморочки с миллисами.
Я думаю делеи в таком случае никак не будут мешать или вредить работе Ардуино
Дело твоё. Зачем тогда тему создал?
Чтобы узнать имеет ли право на жизнь такой вариант воплощения
Дак вставь серву в унитаз и узнаешь - работает или нет. В моём нужнике такой девайс испытания не пройдёт.
Как это всё поставить - это будет отдельная тема))) Сейчас хотел про код. Я нуб в этом деле.
Мне кажется без ардуино будет интересней делать.
Мне кажется без ардуино будет интересней делать.
как без Ардуино организовать поворот сервы на определенный угол по короткому нажатию сенсорной кнопки и зафиксировать удержание там на 2 и 4 секунды с возвратом обратно? NE 555? )))
Сервой можно вращать с помощью NE555 (особенно на два угла), длительности задавать с помощью конденсаторов. Ардуино просто расширяет возможности реализации фантазий :-)
Сервой можно вращать с помощью NE555 (особенно на два угла), длительности задавать с помощью конденсаторов. Ардуино просто расширяет возможности реализации фантазий :-)
По работе Ардуино с сервоприводами информации больше. По 555 я ничего внятного не нашел.
Ну тогда Ардуино. Проверяйте свой скетч на макете. Только в "сетапе" вал на 0 забыли поставить :-)
servo.attach Это?После добавить
servo.write(0);//ставим вал на 0может это:
После добавить
servo.write(0);//ставим вал на 0Сейчас хотел про код. Я нуб в этом деле.
если спрашиваешь про код - то слушай ответы. Делеи надо убрать. "Заморочки с миллис" - это две строки. Делеи ты поставил просто из лени. Не пытайся убедить нас, что ты такой болван, что не можешь понять миллис.
После добавить
servo.write(0);//ставим вал на 0Желательно, но в вашем варианте скетча необязательно. Проверяйте на макете, спрашивать "почему у меня получилось так..." лучше чем спрашивать "а что будет если я..." :-)
А чё две темы-то? У ТС в доме два унитаза? Или зачем?
По 555 я ничего внятного не нашел.
В том то и беда что Гуглем пользоваться не могут! Ужос! И это интеллигенция, вроде бы.(
А чё две темы-то? У ТС в доме два унитаза? Или зачем?
А порнуху
Сейчас хотел про код. Я нуб в этом деле.
#include <Servo.h> const byte butt2s = 5; const byte butt4s = 6; const byte servPin = 9; Servo myservo; void setup() { myservo.attach(servPin); myservo.write(0); } void loop() { if (digitalRead(butt2s == HIGH)) { myservo.write(180); delay (2000); myservo.write(0); } if (digitalRead(butt4s == HIGH)) { myservo.write(180); delay (4000); myservo.write(0); } }Что-то не работает твой код в симуляторе((
Конечно не работает. Нужно головой подумать и в двух местах поправить - хоть какое-то участие принять в деле.
Поправил, пины кнопок и сервы, все равно не работает
ПС: И с помощью автомата, можно ОДНОЙ ардуиной сделать автоматизацию ЧЕТЫРЕХ сральников. с делеями это не получится.