Серво двумя кнопками. Проверьте пожалуйста.

Мешок51
Offline
Зарегистрирован: 12.03.2022

Здравствуйте, соучастники!

Делаю электронный слив для унитаза. После нескольких дней поиска нашел скетч, немного его подправил, (добавил вторую кнопку и убрал светодиоды) вроде заработало на симуляторе, но гложут сомнения, как-то все легко и просто получилось. Посмотрите пожалуйста,будет работать?

#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
    
  }
  }
}

И второй вопрос: можно ли в промежутках между работой полностью отключать Ардуину, например, ИК датчиком через триггерное реле?

nik182
Offline
Зарегистрирован: 04.05.2015

 Странный скетч. Непонятна логика работы. 

Мешок51
Offline
Зарегистрирован: 12.03.2022

На заполнение это никак не влияет. Это на слив.  Смысл устройства - с помощью сервы подымать клапан слива. Нажатие одной кнопки на 2 секунды (сливается примерно половина бачка) другой кнопкой  - на 4 секунды для полного слива всей воды. Делеи нужны для задержки клапана слива в поднятом состоянии на эти самые 2 и 4 секунды

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

1. Убери делеи: http://arduino.ru/tutorials/BlinkWithoutDelay

2. Зачем ардуину отключать?

Мешок51
Offline
Зарегистрирован: 12.03.2022

BOOM пишет:

1. Убери делеи: http://arduino.ru/tutorials/BlinkWithoutDelay

2. Зачем ардуину отключать?

1. В данном случае делеи никак не мешают

2. Чтобы не писать коды для спящего режима)

Мешок51
Offline
Зарегистрирован: 12.03.2022

Я думаю делеи в таком случае никак не будут мешать или вредить работе Ардуино

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

1. Ты ссылку открывал?

2. Зачем ардуино сон? Ты ее от батареек питать вздумал? Это просто глупо - серва будут жрать во много раз больше, чем сможешь сэкономить сном. Да и не тот уровень у тебя - в сон лезть. Пусть работает.

Мешок51
Offline
Зарегистрирован: 12.03.2022

Хорошо, "отключение" убираем))

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Мешок51 пишет:

Я думаю делеи в таком случае никак не будут мешать или вредить работе Ардуино

Дело твоё. Зачем тогда тему создал?

Мешок51
Offline
Зарегистрирован: 12.03.2022

BOOM пишет:

1. Ты ссылку открывал?

 

Думаю для такой простой задачи не нужны все эти заморочки с миллисами.

Мешок51
Offline
Зарегистрирован: 12.03.2022

BOOM пишет:

Мешок51 пишет:

Я думаю делеи в таком случае никак не будут мешать или вредить работе Ардуино

Дело твоё. Зачем тогда тему создал?

Чтобы узнать имеет ли право на жизнь такой вариант воплощения

sadman41
Offline
Зарегистрирован: 19.10.2016

Дак вставь серву в унитаз и узнаешь - работает или нет. В моём нужнике такой девайс испытания не пройдёт.

Мешок51
Offline
Зарегистрирован: 12.03.2022

Как это всё поставить - это будет отдельная тема))) Сейчас хотел про код. Я нуб в этом деле.

lilik
Offline
Зарегистрирован: 19.10.2017

Мне кажется без ардуино будет интересней делать.

Мешок51
Offline
Зарегистрирован: 12.03.2022

lilik пишет:

Мне кажется без ардуино будет интересней делать.

как без Ардуино организовать поворот сервы на определенный угол по короткому нажатию сенсорной кнопки и зафиксировать удержание там на 2 и 4 секунды с возвратом обратно? NE 555? )))

lilik
Offline
Зарегистрирован: 19.10.2017

Сервой можно вращать с помощью NE555 (особенно на два угла), длительности задавать с помощью конденсаторов. Ардуино просто расширяет возможности реализации фантазий :-)

Мешок51
Offline
Зарегистрирован: 12.03.2022

lilik пишет:

Сервой можно вращать с помощью NE555 (особенно на два угла), длительности задавать с помощью конденсаторов. Ардуино просто расширяет возможности реализации фантазий :-)

По работе Ардуино с сервоприводами информации больше. По 555 я ничего внятного не нашел.

lilik
Offline
Зарегистрирован: 19.10.2017

Ну тогда Ардуино. Проверяйте свой скетч на макете. Только в "сетапе" вал на 0 забыли поставить :-)

Мешок51
Offline
Зарегистрирован: 12.03.2022

servo.attach Это?

lilik
Offline
Зарегистрирован: 19.10.2017

После добавить

 servo.write(0); //ставим вал на 0

Мешок51
Offline
Зарегистрирован: 12.03.2022

может это:

servo.attach(3, 0, 180);

 

Мешок51
Offline
Зарегистрирован: 12.03.2022

lilik пишет:

После добавить

 servo.write(0); //ставим вал на 0

Это тоже надо в сетапе прописать?

b707
Offline
Зарегистрирован: 26.05.2017

Мешок51 пишет:

Сейчас хотел про код. Я нуб в этом деле.


если спрашиваешь про код - то слушай ответы. Делеи надо убрать. "Заморочки с миллис" - это две строки. Делеи ты поставил просто из лени. Не пытайся убедить нас, что ты такой болван, что не можешь понять миллис.

lilik
Offline
Зарегистрирован: 19.10.2017

Мешок51 пишет:

lilik пишет:

После добавить

 servo.write(0); //ставим вал на 0

Это тоже надо в сетапе прописать?

Желательно, но в вашем варианте скетча необязательно. Проверяйте на макете, спрашивать "почему у меня получилось так..." лучше чем спрашивать "а что будет если я..." :-)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А чё две темы-то? У ТС в доме два унитаза? Или зачем?

SLKH
Offline
Зарегистрирован: 17.08.2015

Мешок51 пишет:

 По 555 я ничего внятного не нашел.

"А порнуху и/или рекламу вы в интернете найти можете?" (Петрович, за точность цитаты не ручаюсь).

 

Green
Offline
Зарегистрирован: 01.10.2015

В том то и беда что Гуглем пользоваться не могут! Ужос! И это интеллигенция, вроде бы.(

Мешок51
Offline
Зарегистрирован: 12.03.2022

ЕвгенийП пишет:

А чё две темы-то? У ТС в доме два унитаза? Или зачем?

Потому что в этой теме не помогли, а в другой даже готовый скетч с автоматом подогнали. Разницу чувствуете? )))

Мешок51
Offline
Зарегистрирован: 12.03.2022

SLKH пишет:

А порнуху

Это святое! )))

SLKH
Offline
Зарегистрирован: 17.08.2015

 

b707 пишет:
Мешок51 пишет:

Сейчас хотел про код. Я нуб в этом деле.

если спрашиваешь про код - то слушай ответы. Делеи надо убрать. "Заморочки с миллис" - это две строки. Делеи ты поставил просто из лени. Не пытайся убедить нас, что ты такой болван, что не можешь понять миллис.
я вот тоже такой болван, что не могу понять, чем ужасны в ЭТОЙ задаче делэи и на хрена в ЭТОЙ  задаче миллисы с енумами и автоматами.


#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);
  }
}
Мешок51
Offline
Зарегистрирован: 12.03.2022

Что-то не работает твой код в симуляторе((

sadman41
Offline
Зарегистрирован: 19.10.2016

Конечно не работает. Нужно головой подумать и в двух местах поправить - хоть какое-то участие принять в деле.

Мешок51
Offline
Зарегистрирован: 12.03.2022

Поправил, пины кнопок и сервы, все равно не работает

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

SLKH пишет:
я вот тоже такой болван, что не могу понять, чем ужасны в ЭТОЙ задаче делэи и на хрена в ЭТОЙ  задаче миллисы с енумами и автоматами.

Ты не поверишь, но решать задачи через автомат проще. Берешь шаблон автомата , прописываешь состояния , условия перехода и что выполнить при переходе и все.  Всегда можно модернизировать программу. А спотыкаться на делеях это к мазахистам.

ПС: И с помощью автомата, можно ОДНОЙ ардуиной сделать автоматизацию ЧЕТЫРЕХ сральников. с делеями это не получится.