Автоматические ворота гаража
- Войдите на сайт для отправки комментариев
Пнд, 16/05/2016 - 16:06
Есть гараж, есть ворота, однажды я задумался над тем, что было бы неплохо подъезжая к дому нажать кнопу и чтобы ворота сами открылись, а не глушить авто, заходить во двор, заходить в гараж, открывать ворота, заезжать, закрывать ворота и прочее и прочее. Решил что это можно сделать с помощью ардуино, который будет принимать сигнал(посоветуйте что лучше для этого использовать, я работаю iOS/Android разработчиком могу сделать управление с телефона) и через драйверы открывать/закрывать ворота.
Вопрос вот в чём: есть ли у кого идеи какие моторы использовать для того, чтобы открывать не самые лёгкие ворота и которые могли бы их крепко держать в закрытом состоянии?
Спасибо!
самые слабые линейные приводы для распашных ворот стоят от 10 т.р. за штуку, плюс монтаж. Если ворота тяжелые, проще будет их заменить на секцыонные.
Блютус, думается, лучше, чем СМС, в этом случае - будет работать в пределах визуального контроля, т.е. дети или кто другой случайно СМС на открытие ворот не отправит...
Гуглите по "электромеханический привод распашных гаражных ворот" - с червячным редуктором вариантов масса. И учитывайте, в каком регионе проживаете - если снежные сугробы не редкость, то с распашными воротами может возникнуть проблема и придётся думать о смене конструкции на откидные или другого типа.
Не обязательно требовать этого от привода, можно применить и отдельный запорный ригель, управляемый сервоприводом или соленоидом.
Прежде чем прикручивать ардуино надо решить вопрос с механикой
вы даже не описали конструкцию ворот. Откатные? Распашные?
если обычные распашные то пытаться их механизировать дело не очень благодарное. Никакой привод не будет их держать надежно в закрытом состоянии, нужно будет еще городить электрозамок
секционные у нас стоят от 40к и это открываемые вручную и без монтажа. А можете ссылкой поделиться на приводы?
Ворота не самые тяжёлые, я хочу их немного нарастить, но думаю учитывая что петли смажутся и обработаются графитовой смазкой особо ничего не изменится
Ворота распашные, гараж на небольшом подъёме, чищу снег регулярно, с сугробами быть проблемы не должно
Прежде чем прикручивать ардуино надо решить вопрос с механикой
вы даже не описали конструкцию ворот. Откатные? Распашные?
если обычные распашные то пытаться их механизировать дело не очень благодарное. Никакой привод не будет их держать надежно в закрытом состоянии, нужно будет еще городить электрозамок
Распашные
Ну сделать на соленоиде механизм запирания не проблема, да и в принципе надеятся на привод в плане длительного запирания нельзя, нужна страховка.
Посоветуете привод?
Ну есть готовые приводы для распашных ворот
Ну есть готовые приводы для распашных ворот
Посмотрел решения, цены впечатлили :) Мне вчера перед сном пришла ещё идея червячной передачи, в ней ведь усилие обратнопропорционально шагу резьбы, скорость мне не особо важна, а механизм простой и ведущую шестерню может вращать не особо то и мощный моторчик, обычный, а не шаговый.
В заводских приводов распашных ворот и стоит червячная передача
конструкция простая, кроме мотора и червяка есть еще концевые выключатели
можете сами сделать - делайте
В заводских приводов распашных ворот и стоит червячная передача
конструкция простая, кроме мотора и червяка есть еще концевые выключатели
можете сами сделать - делайте
Ну мне мысль пришла использовать не ведомую шестерню, а рейку, как в рулевом механизме автомобилей, то есть ведущая шестерня толкает рейку, а рейка толкает воротину, чем ближе к стене, тем короче рейка нужна, но нужно большее усилие. Надо чертёж набросать.
все верно, привод, на нем шестерня, рейка зубчатая, два концевика
кстати привод и будет удерживать ворота в замкнутом состоянии, вопрос только что когда света нет, нужно продумать открытие вручную
кстати привод и будет удерживать ворота в замкнутом состоянии, вопрос только что когда света нет, нужно продумать открытие вручную
можно так же как в фирменных - делать выведение червяка из зацепления
либо делать легко сьемные концы приводов
В заводских приводов распашных ворот и стоит червячная передача
конструкция простая, кроме мотора и червяка есть еще концевые выключатели
можете сами сделать - делайте
А можете подсказать мотор и шилд для ардуинки? Мотор нужен компактненький, можно попробовать конечно посчитать по передаточному числу какая мощность нужна будет, но сейчас хотя б навскидку?
моторы которые видел для ардуины слишком маленькеи и маломощные
здесь что то помощнее нужно
а в заводских приводах поторы стоят от сетевого напряжения переменного тока, в фирменном же контроллере комутируются банально реле
кстати вот может быть будет интересно, там про самодельные приводы тоже есть http://asis-kbr.ru/forum/viewtopic.php?f=9&t=118&sid=9d386486eaac3cd1b7f...
Два года уже работает "открывалка" ворот по такой схеме: ворота распашные, одна створка, открываются внутрь, подвес ворот сделан с небольшим (около1,5 см) отклонением от вертикали с таким расчётом, что ворота всегда стремятся открыться. В закрытом состоянии створка ворот удерживается защёлкой, открываемой с помощью дверного пистолета(актюатора), который приводится в действие дешёвой автомобильной сигналкой. Пульт от сигналки закреплен в автомобиле около козырька под потолком. Подъехал, нажал кнопочку, ворота распахнулись, заехал, вышел из авто - закрыл ворота. Сигналка питается от автомобильного аккумулятора, подзарядку который просит раз в два-три месяца. Конструкция была собрана в порыве вдохновения за полчаса. Бюджет проэкта - 200 рублей (покупка нового актюатора), сигналка использована старая- полусгоревшая(остался рабочий только один канал управления - он и был использован для управления защёлкой). Аккумулятор также использован Б/У.
Два года уже работает "открывалка" ворот по такой схеме: ворота распашные, одна створка, открываются внутрь, подвес ворот сделан с небольшим (около1,5 см) отклонением от вертикали с таким расчётом, что ворота всегда стремятся открыться.......
ууу вам створкой ворот еще от ветра в боковуху со всей дури не залетало? а рано или поздно так и будет.
Как насчёт использовать линейные актуаторы? у меня завалялись 2 штуки 36дюймов, громадные и тяжёлые. 36вольт питание. усилие ппц... модель qarl-3636+
Статическая нагрузка: макс. 1350 кг
Динамическая нагрузка: макс. 540 кг
чопочом? :) Можете написать в какой-нибудь мессенджер на номер 7 g27 I60 b5 bb? Есть вайбер и телеграм.
Как насчёт использовать линейные актуаторы? у меня завалялись 2 штуки 36дюймов, громадные и тяжёлые. 36вольт питание. усилие ппц... модель qarl-3636+
Статическая нагрузка: макс. 1350 кг
Динамическая нагрузка: макс. 540 кг
с каким актуатором ворота нафик не нужны, машину можно тягать вверх через забор..
а то еще на ворота тратится..
идея отличная, но у меня бибика тяжелая - средний рамный внедорожник, примерно 2,5 тонны :)
Написал в вайбер
http://fermer.ru/forum/elektronika-dlya-fermerskogo-khozyaistva/122607
Вот здесь почитайте! У меня откатные, на трещетке от тормазов КамаЗ :)
2 года полет нормальный! Движок от вентилятора охлаждения ВаЗ :)
Два года уже работает "открывалка" ворот по такой схеме: ворота распашные, одна створка, открываются внутрь, подвес ворот сделан с небольшим (около1,5 см) отклонением от вертикали с таким расчётом, что ворота всегда стремятся открыться.......
ууу вам створкой ворот еще от ветра в боковуху со всей дури не залетало? а рано или поздно так и будет.
открываются внутрь! Это прозевали?
Ветер исключен, а вот по спиняке в гараже кто то может и получить)))
Почитал тему. Пишу первый пост.
С почином!
Работатют ворота на актуаторах уже 15 лет (в Питере).
Актуаторы 24" 36в. 36" будут еще интереснее, только открываются относительно медленно. У меня установлено на полхода и это 35 секунд. Усилия хватает с головой. Зимой можно даже снег не отгребать, правда, пока от свежий. ))
Автономность, при отключении света, решается акумуляторами. В гараже всегда пригодятся резервные. При зарядке, коммутировать их на 12в, а в режиме ожидания на 36. Решается авторелюшками.
Управление сделано даже без триггеров, еще на поляризованных реле. но пора бы переделать на ардуино и с дисплеем.
А вот сделано на атмеге8.
http://tehnoobzor.com/schemes/automatics/40-samodelnye-avtomaticheskie-vorota.html
Другие публикации этих ворот.
http://el-shema.ru/publ/avtoehlektronika/samodelnye_raspashnye_vorota/3-1-0-143
http://radioskot.ru/publ/raznoe/raspashnye_avtomaticheskie_vorota/18-1-0-507
Пробовал залить HEX файл в уно и нано, но дисплей не работает, хотя что-то там заливается. Никак не разобраться. Темен пока в ардуинах, хоть и стар уже.
Можно скоординировать усилия. За мной силовуха, а с Вас скетч. )))
Как насчёт использовать линейные актуаторы? у меня завалялись 2 штуки 36дюймов, громадные и тяжёлые. 36вольт питание. усилие ппц... модель qarl-3636+
Статическая нагрузка: макс. 1350 кг
Динамическая нагрузка: макс. 540 кг
Отличный комплект. Еще надо закрепить грамотно. Есть нюансы.
В них встроена аварийная остановка. Отключает актуатор в конце хода. Можно настраивать его величину.
Микрик останавливает мотор, но позволяет ему крутиться в другую сторону. Два микрика и два диода, вот и вся коммутация. Есть еще герконовый датчик импульсов.
Dedan Получилось залить фаил ? Тоже интересует сия тема
Нет не получилось. Но я в этом деле совсем профан. Поэтому отложил.
Вроде как заливает, но при подключении экрана на нем ничего нет.
Если получится залить отпишитесь. Заманчивее в готовую плату все влить, чем с ЛУТом мучиться.
Вы какой програмой фаил открываете ?
001
#define INTERVAL1 5000UL
002
#define INTERVAL2 5000UL
003
int
eng11 = 2;
// двигатель 11 откр
004
int
eng12 = 3;
// двигатель 12
005
int
eng21 = 4;
// двигатель 21 откр
006
int
eng22 = 5;
// двигатель 22
007
int
end1 = 6;
// концевик 1
008
int
end2 = 7;
// концевик 2
009
int
end3 = 8;
// концевик 3
010
int
end4 = 9;
// концевик 4
011
int
power =10;
// силовая линия
012
int
on=11;
// вкл радиоканал
013
int
off=12;
// выкл радиоканал
014
int
ikch=13;
//ИК датчик
015
int
radion=0;
// переменная радио вкл
016
int
radioff=0;
//переменная радио октл
017
int
regim=0;
//переменная режима вкл
018
int
onradio=0;
019
int
offradio=0;
020
int
openg=0;
021
int
closeg=0;
022
int
count1=0;
023
int
count2=0;
024
void
setup
()
025
{
026
pinMode(eng11, OUTPUT);
027
pinMode(eng12, OUTPUT);
028
pinMode(eng21, OUTPUT);
029
pinMode(eng22, OUTPUT);
030
pinMode(power,OUTPUT);
031
pinMode(end1,INPUT);
032
pinMode(end2,INPUT);
033
pinMode(end3,INPUT);
034
pinMode(end4,INPUT);
035
pinMode(on,INPUT);
036
pinMode(off,INPUT);
037
pinMode(ikch,INPUT);
038
digitalWrite(eng11, HIGH);
//канал1 Питание откл
039
digitalWrite(eng12, HIGH);
//канал1 Питание откл
040
digitalWrite(eng21, HIGH);
//канал1 Питание откл
041
digitalWrite(eng22, HIGH);
//канал1 Питание откл
042
digitalWrite(power, LOW);
//канал1 Питание откл
043
radion=0;
// вкл радиоканал
044
radioff=0;
// откл радиоканал
045
regim=0;
046
count1=0;
047
count2=0;
048
}
049
050
void
loop
(){
051
//--------------------------------------------обработка радио --------------------------------
052
static
unsigned
long
previousMillis1 = 0;
// храним время последнего переключения светодиода
053
static
unsigned
long
previousMillis2 = 0;
054
if
(digitalRead(on)==LOW&&radion==0&®im==0)
//если кнопка ON нажата
055
// и перемення "radion" равна 0 , то ...
056
{
057
regim=1;
// вкл режим работы
058
radion++;
//пишем 1 в переменную
059
//это нужно для того что бы с каждым нажатием кнопки
060
//происходило только одно действие
061
// плюс защита от "дребезга"
062
}
063
if
(digitalRead(on)==HIGH&&radion==1)
//если кнопка НЕ нажата
064
//и переменная равна - 1 ,то ...
065
{
066
radion=0;
//обнуляем переменную
067
}
068
////___________________________________________________________________________________________
069
if
(digitalRead(off)==LOW&&radioff==0)
//если кнопка OFF нажата
070
// и перемення "radioff" равна 0 , то ...
071
{
072
regim=2;
// вкл режим работы
073
radioff++;
//пишем 1 в переменную
074
//это нужно для того что бы с каждым нажатием кнопки
075
//происходило только одно действие
076
// плюс защита от "дребезга"
077
}
078
if
(digitalRead(off)==HIGH&&radioff==1)
//если кнопка НЕ нажата
079
//и переменная равна - 1 ,то ...
080
{
081
radioff=0;
//обнуляем переменную
082
}
083
if
(digitalRead(ikch)==HIGH)
//если сработал ик канал
084
{
085
digitalWrite(eng11, HIGH);
// двигатель 1 выкл
086
digitalWrite(eng12, HIGH);
// двигатель 2 выкл
087
digitalWrite(eng21, HIGH);
// двигатель 2 выкл
088
digitalWrite(eng22, HIGH);
// двигатель 2 выкл
089
digitalWrite(power, LOW);
// выкл силовую линию
090
regim=0;
091
}
092
//--------------------------------------------ОКРЫТИЕ--------------------------------
093
if
(regim==1)
// если пришел радиосигнал откр и все ворота закрыты - открываем ворота
094
{
095
if
(digitalRead(end1)==LOW&&digitalRead(end2)==LOW)
// ЕСЛИ 2 КОНЦЕВИКА ОТКЛЮЧЕНЫ
096
{
097
digitalWrite(power, HIGH);
// вкл силовую линию
098
digitalWrite(eng11, LOW);
// двигатель 1 вкл открытие
099
if
(millis() - previousMillis1 > INTERVAL1)
// задан интервал 2сек.
100
{
101
count1++;
102
previousMillis1 = millis();
103
}
104
if
(count1==3)
105
{
106
digitalWrite(eng21, LOW);
// двигатель 2 вкл закрытие
107
count1=0;
108
}
109
}
110
if
(digitalRead(end1)==HIGH)
//если сработал концевик 1 и воротина закрыта выключаем двигатель 1
111
{
112
digitalWrite(eng11, HIGH);
// двигатель 1 выкл
113
}
114
if
(digitalRead(end2)==HIGH)
//если сработал концевик 2 и воротина закрыта выключаем двигатель 2
115
{
116
digitalWrite(eng21, HIGH);
// двигатель 2 выкл
117
digitalWrite(power, LOW);
// выкл силовую линию
118
digitalWrite(eng11, HIGH);
// двигатель 1 выкл
119
regim=0;
120
openg=0;
121
}
122
}
123
//-------------------------------------ЗАКРЫТИЕ-------------------------------
124
if
(regim==2)
// если пришел радиосигнал закр и все ворота открыты - закр ворота
125
{
126
if
(digitalRead(end3)==LOW&&digitalRead(end4)==LOW)
// ЕСЛИ 2 КОНЦЕВИКА ОТКЛЮЧЕНЫ
127
{
128
digitalWrite(power, HIGH);
// вкл силовую линию
129
digitalWrite(eng12, LOW);
// двигатель 1 вкл закрытие
130
if
(millis() - previousMillis2 > INTERVAL2)
//проверяем не прошел ли нужный интервал, если прошел то
131
{
132
count2++;
133
previousMillis2 = millis();
// сохраняем время последнего переключения
134
}
135
if
(count2==3)
136
{
137
digitalWrite(eng22, LOW);
// двигатель 2 вкл закрытие
138
count2=0;
139
}
140
}
141
if
(digitalRead(end3)==HIGH)
//если сработал концевик 3 и воротина открыта выключаем двигатель 1
142
{
143
digitalWrite(eng12, HIGH);
// двигатель 1 выкл
144
}
145
if
(digitalRead(end4)==HIGH)
//если сработал концевик 4 и воротина открыта выключаем двигатель 2
146
{
147
digitalWrite(eng22, HIGH);
// двигатель 2 выкл
148
digitalWrite(power, LOW);
// выкл силовую линию
149
digitalWrite(eng12, HIGH);
// двигатель 1 выкл
150
regim=0;
151
closeg=0;
152
}
153
}
154
}
Вот мой код С задержкой одной воротни на открытие и другой на закрытие
Но задержка рабботает не коректно То с задержкой откроется (закроется ) То без задержки Может кто подкоректирует ?
петрович 33: Удалось ли доделать скетч ???
петрович 33: Удалось ли доделать скетч ???
А у тебя есть решение или та же проблема?
Решения пока нет , только собираюсь делать
Вот тут пробовали допилить скетч, а так же доработать схему протеуса.
мне просто интересно че народ парится с распашными воротами когда наверно можно сделать тупо жалюзи в каркас ворот.
или типа как у амеров в гараже. открывать вообще можно на грузе вот закрывать приводом
мне просто интересно че народ парится с распашными воротами когда наверно можно сделать тупо жалюзи в каркас ворот.
или типа как у амеров в гараже. открывать вообще можно на грузе вот закрывать приводом
Потому, что распашние уже есть и привод, лишь вишенка на торте!))
Полный скетч здесь https://yadi.sk/d/vzSB5RwW3Ev5eL не проверял
Головной файл выкладываю сюда
01
/*Gate.ino
02
*/
03
// повер
04
#include "Cl_power.h"
05
const
uint32_t time_5sec = 5000;
// 5 секунд
06
const
byte
Power_pin = 10;
// силовая линия
07
Cl_power Power(Power_pin, 1);
// 1 вкл
08
// моторы
09
#include "Cl_motor.h"
10
const
byte
Motor1_Open_pin = 2;
// двигатель 1 откр 0 вкл / 1 выкл
11
const
byte
Motor1_Close_pin = 3;
// двигатель 1 закр 0 вкл / 1 выкл
12
const
byte
Gate1_Open_pin = 6;
// концевик 1 1 сработал / 0 нет
13
const
byte
Gate1_Close_pin = 8;
// концевик 3 1 сработал / 0 нет
14
Cl_motor Motor1(Motor1_Open_pin, Motor1_Close_pin, Gate1_Open_pin, Gate1_Close_pin, 0, 1);
15
const
byte
Motor2_Open_pin = 4;
// двигатель 2 откр 0 вкл / 1 выкл
16
const
byte
Motor2_Close_pin = 5;
// двигатель 2 закр 0 вкл / 1 выкл
17
const
byte
Gate2_Open_pin = 7;
// концевик 2 1 сработал / 0 нет
18
const
byte
Gate2_Close_pin = 9;
// концевик 4 1 сработал / 0 нет
19
Cl_motor Motor2(Motor2_Open_pin, Motor2_Close_pin, Gate2_Open_pin, Gate2_Close_pin, 0, 1);
20
// кнопки и датчики
21
#include "Cl_do_btn.h"
22
const
byte
Btn_Open_pin = 11;
// вкл радиоканал 0 нажата / 1 нет
23
Cl_do_btn Btn_Open(Btn_Open_pin, 0);
// сработка 0
24
void
Do_Btn_Open() {
25
Power.ON();
26
Motor1.Open();
27
Motor2.Open();
28
}
29
void
Do_Power_OFF() {
30
Motor1.Stop();
31
Motor2.Stop();
32
}
33
const
byte
Btn_Close_pin = 12;
// выкл радиоканал 0 нажата / 1 нет
34
Cl_do_btn Btn_Close(Btn_Close_pin, 0);
// сработка 0
35
void
Do_Btn_Close() {
36
Power.ON();
37
Motor1.Close();
38
Motor2.Close();
39
}
40
const
byte
IR_sens_pin = 13;
//ИК датчик 1 сработал / 0 нет
41
Cl_do_btn IR_sens(IR_sens_pin, 1);
// сработка 1
42
void
Do_IR_sens() {
43
Motor1.Stop();
44
Motor2.Stop();
45
Power.OFF();
46
}
47
48
void
setup
() {
49
Power.
setup
();
50
Power.time_OFF = time_5sec;
// максимальное время для закрытия дверей
51
Motor1.
setup
();
52
Motor2.
setup
();
53
Btn_Open.
setup
();
54
Btn_Close.
setup
();
55
IR_sens.
setup
();
56
}
57
58
void
loop
() {
59
Power.
loop
(& Do_Power_OFF);
60
Motor1.
loop
();
61
Motor2.
loop
();
62
Btn_Open.
loop
( & Do_Btn_Open);
63
Btn_Close.
loop
(& Do_Btn_Close);
64
IR_sens.
loop
(& Do_IR_sens);
65
}
qwone: Буду пробовать
qwone: а схемы нет ? конечно по скетчу понять можно ...но
В 35 ообщение есть ссылка на схему и на вариант скетча
Что то не компилируе пишит
Что то не компилируе пишит
01
/*Cl_do_btn.h
02
*/
03
#ifndef Cl_do_btn_h
04
#define Cl_do_btn_h
05
06
#include "Arduino.h"
07
class
Cl_do_btn {
08
public
:
09
Cl_do_btn(
byte
_pin,
bool
_logic);
10
void
setup
();
11
void
loop
(
void
(* Do)());
12
private
:
13
byte
pin ;
14
bool
btn, btn_old;
15
bool
logic;
16
bool
bounce_btn = 0;
// антидребезговый флаг
17
uint32_t past = 0 ;
18
};
19
#endif //Cl_do_btn_h
У меня версия 1.8.0 Компиляция проходит нормально. А видно не нравится присвоение при объявлении внутри класса . Можно присвоить значение в конструкторе. Cl_do_btn
Eсли кого-то интересует упрощеный вариант то он здесь https://yadi.sk/d/aGaHMPcm3ExnHy
01
/*Gate_v2.ino
02
кнопка ОТКРЫТЬ -> 2 (Btn_Open_pin)
03
-> GND
04
кнопка ЗАКРЫТЬ -> 3 (Btn_Close_pin)
05
-> GND
06
*/
07
// мотор
08
#include "Cl_motor.h"
09
const
byte
Motor_Open_pin = 4;
// двигатель 1 откр 0 вкл / 1 выкл
10
const
byte
Motor_Close_pin = 5;
// двигатель 1 закр 0 вкл / 1 выкл
11
const
byte
Gate_Open_pin = 6;
// концевик 1 1 сработал / 0 нет
12
const
byte
Gate_Close_pin = 7;
// концевик 2 1 сработал / 0 нет
13
Cl_motor Motor(Motor_Open_pin, Motor_Close_pin, Gate_Open_pin, Gate_Close_pin, 0, 1);
14
//кнопки
15
#include "Cl_do_btn.h"
16
const
byte
Btn_Open_pin = 2;
// Кнопка ОТКРЫТЬ ВОРОТА 0 нажата / 1 нет
17
Cl_do_btn Btn_Open(Btn_Open_pin, 0);
// сработка 0
18
void
Do_Btn_Open() {
19
Motor.Open();
20
}
21
const
byte
Btn_Close_pin = 3;
// Кнопка ЗАКРЫТЬ ВОРОТА 0 нажата / 1 нет
22
Cl_do_btn Btn_Close(Btn_Close_pin, 0);
// сработка 0
23
void
Do_Btn_Close() {
24
Motor.Close();
25
}
26
void
setup
() {
27
// мотор
28
Motor.
setup
();
29
//кнопки
30
Btn_Open.
setup
();
31
Btn_Close.
setup
();
32
}
33
34
void
loop
() {
35
// мотор
36
Motor.
loop
();
37
//кнопки
38
Btn_Open.
loop
( & Do_Btn_Open);
39
Btn_Close.
loop
(& Do_Btn_Close);
40
}
Вот попробовал нарисовать схему для скетча Петровича 33:
https://yadi.sk/d/gTPj1kku3F3Qne
Попробовал скетч qwone , у меня 1.80 ,
все загрузилось , скомпилировалось . Приводы работают всего 5 сек.
Т.е. общее время работы приводов ограничено 5 секундами .
Попробовал скетч qwone , у меня 1.80 ,
все загрузилось , скомпилировалось . Приводы работают всего 5 сек.
Т.е. общее время работы приводов ограничено 5 секундами .
1
const
uint32_t time_5sec = 5000;
// 5 секунд
Поставьте другое значение.
1
const
uint32_t time_5sec = 10000;
// будет 10 секунд
Спасибо большое , завтра попробую!!
1
void
Do_Power_OFF() {
2
// Motor1.Stop(); // так вообще уберете зависимость от времени
3
// Motor2.Stop(); // Моторы будут работать когда сработают конечники
4
}
Можно вообще убрать полностью убрать класс Power и все связаное с ним.
Может я не там смотрю , но у меня в скетче Gate, так и есть , я так и пробовал...
Вот так в скетче Gate класс повер отключен.
01
/*Gate.ino
02
*/
03
// повер
04
//#include "Cl_power.h"
05
//const uint32_t time_5sec = 5000; // 5 секунд
06
//const byte Power_pin = 10; // силовая линия
07
//Cl_power Power(Power_pin, 1); // 1 вкл
08
// моторы
09
#include "Cl_motor.h"
10
const
byte
Motor1_Open_pin = 2;
// двигатель 1 откр 0 вкл / 1 выкл
11
const
byte
Motor1_Close_pin = 3;
// двигатель 1 закр 0 вкл / 1 выкл
12
const
byte
Gate1_Open_pin = 6;
// концевик 1 1 сработал / 0 нет
13
const
byte
Gate1_Close_pin = 8;
// концевик 3 1 сработал / 0 нет
14
Cl_motor Motor1(Motor1_Open_pin, Motor1_Close_pin, Gate1_Open_pin, Gate1_Close_pin, 0, 1);
15
const
byte
Motor2_Open_pin = 4;
// двигатель 2 откр 0 вкл / 1 выкл
16
const
byte
Motor2_Close_pin = 5;
// двигатель 2 закр 0 вкл / 1 выкл
17
const
byte
Gate2_Open_pin = 7;
// концевик 2 1 сработал / 0 нет
18
const
byte
Gate2_Close_pin = 9;
// концевик 4 1 сработал / 0 нет
19
Cl_motor Motor2(Motor2_Open_pin, Motor2_Close_pin, Gate2_Open_pin, Gate2_Close_pin, 0, 1);
20
// кнопки и датчики
21
#include "Cl_do_btn.h"
22
const
byte
Btn_Open_pin = 11;
// вкл радиоканал 0 нажата / 1 нет
23
Cl_do_btn Btn_Open(Btn_Open_pin, 0);
// сработка 0
24
void
Do_Btn_Open() {
25
// Power.ON();
26
Motor1.Open();
27
Motor2.Open();
28
}
29
void
Do_Power_OFF() {
30
Motor1.Stop();
31
Motor2.Stop();
32
}
33
const
byte
Btn_Close_pin = 12;
// выкл радиоканал 0 нажата / 1 нет
34
Cl_do_btn Btn_Close(Btn_Close_pin, 0);
// сработка 0
35
void
Do_Btn_Close() {
36
// Power.ON();
37
Motor1.Close();
38
Motor2.Close();
39
}
40
const
byte
IR_sens_pin = 13;
//ИК датчик 1 сработал / 0 нет
41
Cl_do_btn IR_sens(IR_sens_pin, 1);
// сработка 1
42
void
Do_IR_sens() {
43
Motor1.Stop();
44
Motor2.Stop();
45
// Power.OFF();
46
}
47
48
void
setup
() {
49
// Power.setup();
50
// Power.time_OFF = time_5sec; // максимальное время для закрытия дверей
51
Motor1.
setup
();
52
Motor2.
setup
();
53
Btn_Open.
setup
();
54
Btn_Close.
setup
();
55
IR_sens.
setup
();
56
}
57
58
void
loop
() {
59
// Power.loop(& Do_Power_OFF);
60
Motor1.
loop
();
61
Motor2.
loop
();
62
Btn_Open.
loop
( & Do_Btn_Open);
63
Btn_Close.
loop
(& Do_Btn_Close);
64
IR_sens.
loop
(& Do_IR_sens);
65
}