Закрытие и открытие дверей

Konol
Offline
Зарегистрирован: 16.01.2020

Есть два сервапривода SG90, кнопка 2шт., и датчик припятствия 1шт. хочусделать так чтобы они открывали двери мишу код но ничего не работает помогите пожалуйста!!!

#define PIR 2
#include <Servo.h>
unsigned long prevMilis = 0;
Servo servo1;
Servo servo2;
int servo = 0;
#define button1  6

void setup() {
  Serial.begin(9600);
servo1.attach(11);
servo2.attach(10);
pinMode(button1, INPUT_PULLUP);
}
void loop() {
int pirVal = digitalRead(PIR);
switch (servo) {
 case 0:
 {
 if (pirVal == HIGH) {servo1.write(0) ;}
 if (pirVal == HIGH) {servo2.write(0) ;}
 prevMilis = millis();//Засекаем время
 servo++;
 }
 break;



  case  1:
  if (millis() - prevMilis >= 1000)//Проверяем - прошла ли секунда
  {
  if (pirVal == LOW) {servo1.write(90);}
  if (pirVal == LOW) {servo2.write(90);}
  servo++;
  }
  break;
  case 3:
  if (digitalRead(button1) == LOW || millis() - prevMilis >= 5000)//Проверяем - нажатие кнопки или прошло время (Можно оставить только кнопу)
 {
 if (pirVal == HIGH) {servo1.write(0) ;}
 if (pirVal == HIGH) {servo2.write(0) ;}
 servo++;
 }
 break;
}
 
}    

 

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

поясните, как должно работать, как оно сейчас работает - и чем отличается первое от второго

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

Konol пишет:

сервапривода

Не понял, что имелось в виду: "серво" или "стерва" - в каком месте опечатка?

Konol пишет:

SG90 ... чтобы они открывали двери 

Если дверь не игрушечная в кукольном домике, то не думаю, что откроет.

bwn
Offline
Зарегистрирован: 25.08.2014

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

Если дверь не игрушечная в кукольном домике, то не думаю, что откроет.

Ну почему же? Храповички, шестереночки, часа за два-три управится.)))

Konol
Offline
Зарегистрирован: 16.01.2020

Человек подошел, дверь открылась, человек прошёл кнопку нажал дверь закрылась. Сервопривод SG90

Konol
Offline
Зарегистрирован: 16.01.2020

Где-то просиходит задержка датчик увидел человека и дверь не хочет открываться

genia1991
Offline
Зарегистрирован: 25.12.2019

может я ошибаюсь но 17 строчка servo написано

откуда берет она значения?

genia1991
Offline
Зарегистрирован: 25.12.2019
switch (pirVal) {   //pir датчик который подключен к D2 управляет а не servo

и там еще ошибки вроде есть много

если D2 пин может иметь 2 состояния то тогда откуда case 3 берется?

 

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

genia1991 пишет:

если D2 пин может иметь 2 состояния то тогда откуда case 3 берется?

 

это не ошибка, case и D2 никак не связаны (ну, почти не связаны :)

genia1991
Offline
Зарегистрирован: 25.12.2019

b707 пишет:

genia1991 пишет:

если D2 пин может иметь 2 состояния то тогда откуда case 3 берется?

 

это не ошибка, case и D2 никак не связаны (ну, почти не связаны :)

я так понял что состояние пина вкл или выкл и управляет всей этой конструкцией :)

или тогда в коде чего то не хватает получается ?

genia1991
Offline
Зарегистрирован: 25.12.2019

а я понял эта штука добавляет каждый раз case :)

servo++;

и эта цифра до бесконечности идет.  тогда servo должно обнуляться

 

 

 

 

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

genia1991 пишет:

я так понял что состояние пина вкл или выкл и управляет всей этой конструкцией :)

Состояние датчика (пина) и состояние двери - это два разных состояния. Они, конечно, влияют друг на друга, но это не одно и то же. Состояние датчика тут закодировано в переменной pirval. а состояние двери - в переменной servo

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

genia1991 пишет:

и эта цифра до бесконечности идет.  тогда servo должно обнуляться

т-с-сс, не все сразу,  пусть ТС сам думает :)

genia1991
Offline
Зарегистрирован: 25.12.2019

b707 пишет:

genia1991 пишет:

и эта цифра до бесконечности идет.  тогда servo должно обнуляться

т-с-сс, не все сразу,  пусть ТС сам думает :)

код почти рабочий. немного подправить и все :)