// Motor1.Stop(); // так вообще уберете зависимость от времени
3
// Motor2.Stop(); // Моторы будут работать когда сработают конечники
4
}
Можно вообще убрать полностью убрать класс Power и все связаное с ним.
Я так понял идея была несколько иная. qwone ваш скетч хорош, визуально удобно сделано с библиотеками. И настойки меняются удобно.
Немного про алгоритм - Ворота распашные и на одной воротине есть нащельник, то есть она должна открываться первой и закрываться последней. Из за этого алгоритм работы там такой:
1 Ворота закрыты
2 Нажали кнопку открыть
3 Открвается левая створка (на ней нащельник)
4 Через 5 сек начинает открываеться правая (задержка именно для этого)
5 Ворота открыты
назад наоборот
1 Ворота открыты
2 Нажали кнопку закрыть
3 Закрывается правая створка (БЕЗ нащельника)
4 Через 5 сек начинает закрываться левая
5 Ворота закрыты
И если гдето в середине пути сработала сигнализация, или нажата кнопка пульта то ворота останавливаются.
При устраненни проблем и нажатии кнопки открыть/закрыть ворота соответственно продолжают свой путь :-)
К стати на форумхусе еще 3-4 интересных решения было предложено по поводу алгоритма работы. Вот сколько живу а все убеждаюсть что сколько людей столько и мений.
По поводу присвоения значений в заголовочном файле h видимо в ранних версиях IDE нет такой возможности именно у компилятора. В 1.6.13 все компилится нормально.
чтоб быстрее работало надо еще раз скажу помогать обычной механикой. компенсировать вес ворот ГРУЗОМ обычные блоки и тросик и вуаля можете хоть пальцем закрывать или открывать. ну конечно штыры должны быть смазаны или на подшипниках сейчас же металл.двери делают даже там есть. зачем насиловать мехнику если можно проще.
все ж давно придумано до нас. надо только примеры из жизни брать шлагбаум на веревочке колодец с коромыслом.
1 Ворота закрыты
2 Нажали кнопку открыть
3 Открвается левая створка (на ней нащельник)
4 Через 5 сек начинает открываеться правая (задержка именно для этого)
5 Ворота открыты
назад наоборот
1 Ворота открыты
2 Нажали кнопку закрыть
3 Закрывается правая створка (БЕЗ нащельника)
4 Через 5 сек начинает закрываться левая
5 Ворота закрыты
Проверил на столе последний скетч все работает , как описано.
Единственное замечание : Нет управления включением питания на двигатели.
А это надо . И еще хотелось бы задействовать один пин для управления сигнальными лампами (которые ставят на столбики). Лампы светятся ( а лучше мигают, когда работают моторы приводов)
Проверил на столе последний скетч все работает , как описано.
Единственное замечание : Нет управления включением питания на двигатели.
А это надо . И еще хотелось бы задействовать один пин для управления сигнальными лампами (которые ставят на столбики). Лампы светятся ( а лучше мигают, когда работают моторы приводов)
Поясните плиз..
В скетче нет индикации на дисплее?
Схема "обвязки" платы откуда?
У меня приготовлены нано и уно и платки с 4 реле.
В принципе, можно в схему еще добавить привод для штырей. Один актуатор закрепить на двух штырях и они будут надежно фиксировать створки!
Единственное замечание : Нет управления включением питания на двигатели.А это надо . И еще хотелось бы задействовать один пин для управления сигнальными лампами (которые ставят на столбики). Лампы светятся ( а лучше мигают, когда работают моторы приводов)
В режиме открыть все срабатывает правильно, но после отключения второй створки (и сработки концевика) питание с мотора выключается , а общие питание двигателей нет . оно почемуто отключается при включении режима "закрыть"
В режиме открыть все срабатывает правильно, но после отключения второй створки (и сработки концевика) питание с мотора выключается , а общие питание двигателей нет . оно почемуто отключается при включении режима "закрыть"
Я так косяк сделал. Чем больше проект, тем сложнее уследить. Попозже выложу правленый код
Aibo, у меня прошла очередная смена стиля программирования. Так что если продолжать программу, то придется переписывать заново. Я посмотрел. Вроде там ничего уже дорабатывать не надо. Или у вас появились новые предложения для улучшения. Да и меня нет гаража, и тем более ворот. Так что максимум я могу проверить на макете. Живьем у меня не получится.
Уважаемый qwone , восхищаюсь Вашей работой , все красиво, структурированно.
Собрал прибор по приложеной ниже схеме. Все грамотно работает ,но не устраивает один момент .
нет возможности задержки открытия-закрытия одной створки. Автор не имеет возможности переделать .
Пытаюсь перенести алгоритм на ардуино. В указанной конструкции мне понравилось использование датчика тока ASC712 5A . Датчики останавливают систему в случае перегрузки на двигателе (например что-то попало между створок) , во вторых используется наличие или отсутвие тока для определения двигается створка или стоит. Концевики в приводах остались , но они не связаны с автоматикой, они просто выключают двигатели при достижении крайних точек (соотвественно двигатель остановился- датчик тока выдает данные об остановке ). Кроме того двигатели подключены через Мосфет с драйвером и управляются ШИМ, что позволяет реализовать медленный старт ( без броска тока), что хорошо для моторов, БП и датчиков тока. Удобно так же то, что есть дисплей на котором можно подстрайвать систему.( у меня ворота будут на даче, где нет возможности опреративно менять прошивку)
Добрый день нужна помощь с ардуино до елаю распошные ворота что-то не получается с программой можете сбросить схему расключения уны может где резистор подтягивающий не поставил нет сигнала на включения мотора
Спасибо ! понял , завтра попробую
А так отключен и ИК датчик наличие препятствия если ворота закрываются.
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
}
1
void
Do_Power_OFF() {
2
// Motor1.Stop(); // так вообще уберете зависимость от времени
3
// Motor2.Stop(); // Моторы будут работать когда сработают конечники
4
}
Можно вообще убрать полностью убрать класс Power и все связаное с ним.
Я так понял идея была несколько иная. qwone ваш скетч хорош, визуально удобно сделано с библиотеками. И настойки меняются удобно.
Немного про алгоритм - Ворота распашные и на одной воротине есть нащельник, то есть она должна открываться первой и закрываться последней. Из за этого алгоритм работы там такой:
1 Ворота закрыты
2 Нажали кнопку открыть
3 Открвается левая створка (на ней нащельник)
4 Через 5 сек начинает открываеться правая (задержка именно для этого)
5 Ворота открыты
назад наоборот
1 Ворота открыты
2 Нажали кнопку закрыть
3 Закрывается правая створка (БЕЗ нащельника)
4 Через 5 сек начинает закрываться левая
5 Ворота закрыты
И если гдето в середине пути сработала сигнализация, или нажата кнопка пульта то ворота останавливаются.
При устраненни проблем и нажатии кнопки открыть/закрыть ворота соответственно продолжают свой путь :-)
К стати на форумхусе еще 3-4 интересных решения было предложено по поводу алгоритма работы. Вот сколько живу а все убеждаюсть что сколько людей столько и мений.
По поводу присвоения значений в заголовочном файле h видимо в ранних версиях IDE нет такой возможности именно у компилятора. В 1.6.13 все компилится нормально.
Ожила тема. Сейчас после операции в себя приду и тоже подключусь.
Фото наделаю.
Тем более у меня в гараже все уже давно работает, только плату заменить.
Вычитал, что народ на приводы подает до 80 вольт. Это значит будут работать вдвое быстрее.
Правда я за 15 лет уже сменил 2 привода. Один съел гайку без смазки, а во втором лопнула шестерня в редукторе.
Как то они будут работать на удвоенной скорости? Редуктор там пластмассовый выдюжит ли?
У китайцев на али, линейные приводы есть с разными моторами, разными усилиями и блоки управления к ним.
Около 8-10тыр за комплент
Но сделать самому много интереснее.
Правда тарелочных приводов уже почти нет. Отошол спрос и возить перестали.
чтоб быстрее работало надо еще раз скажу помогать обычной механикой. компенсировать вес ворот ГРУЗОМ обычные блоки и тросик и вуаля можете хоть пальцем закрывать или открывать. ну конечно штыры должны быть смазаны или на подшипниках сейчас же металл.двери делают даже там есть. зачем насиловать мехнику если можно проще.
все ж давно придумано до нас. надо только примеры из жизни брать шлагбаум на веревочке колодец с коромыслом.
1 Ворота закрыты
2 Нажали кнопку открыть
3 Открвается левая створка (на ней нащельник)
4 Через 5 сек начинает открываеться правая (задержка именно для этого)
5 Ворота открыты
назад наоборот
1 Ворота открыты
2 Нажали кнопку закрыть
3 Закрывается правая створка (БЕЗ нащельника)
4 Через 5 сек начинает закрываться левая
5 Ворота закрыты
Скетч будет таким. Полный здесь https://yadi.sk/d/P3todK3f3F4ZDF
Головной файл здесь
01
/*Gate_v3.ino
02
*/
03
// двери
04
// правая без нащельника
05
#include "Cl_motor.h"
06
const
byte
Motor1_Open_pin = 2;
// двигатель 1 откр 0 вкл / 1 выкл
07
const
byte
Motor1_Close_pin = 3;
// двигатель 1 закр 0 вкл / 1 выкл
08
const
byte
Gate1_Open_pin = 6;
// концевик 1 1 сработал / 0 нет
09
const
byte
Gate1_Close_pin = 8;
// концевик 3 1 сработал / 0 нет
10
Cl_motor Motor1(Motor1_Open_pin, Motor1_Close_pin, Gate1_Open_pin, Gate1_Close_pin, 0, 1);
11
// левая с нащельником
12
#include "Cl_motor_master.h"
13
const
uint32_t time_5sec = 5000;
// 5 секунд
14
const
byte
Motor2_Open_pin = 4;
// двигатель 2 откр 0 вкл / 1 выкл
15
const
byte
Motor2_Close_pin = 5;
// двигатель 2 закр 0 вкл / 1 выкл
16
const
byte
Gate2_Open_pin = 7;
// концевик 2 1 сработал / 0 нет
17
const
byte
Gate2_Close_pin = 9;
// концевик 4 1 сработал / 0 нет
18
Cl_motor_master Motor2(Motor2_Open_pin, Motor2_Close_pin, Gate2_Open_pin, Gate2_Close_pin, 0, 1);
19
void
Do_Motor2_Open() {
20
Motor1.Open();
21
}
22
void
Do_Motor2_Close() {
23
Motor1.Close();
24
}
25
// кнопки и датчики
26
#include "Cl_do_btn.h"
27
const
byte
Btn_Open_pin = 11;
// вкл радиоканал 0 нажата / 1 нет
28
Cl_do_btn Btn_Open(Btn_Open_pin, 0);
// сработка 0
29
void
Do_Btn_Open() {
30
Motor2.Open();
31
}
32
const
byte
Btn_Close_pin = 12;
// выкл радиоканал 0 нажата / 1 нет
33
Cl_do_btn Btn_Close(Btn_Close_pin, 0);
// сработка 0
34
void
Do_Btn_Close() {
35
Motor2.Close();
36
}
37
const
byte
IR_sens_pin = 13;
//ИК датчик 1 сработал / 0 нет
38
Cl_do_btn IR_sens(IR_sens_pin, 1);
// сработка 1
39
void
Do_IR_sens() {
40
Motor1.Stop();
41
Motor2.Stop();
42
}
43
void
setup
() {
44
Motor1.
setup
();
45
Motor2.
setup
();
46
Motor2.time_lag=time_5sec;
// выставить задержку открывания из-за наличия нащельника
47
Btn_Open.
setup
();
48
Btn_Close.
setup
();
49
IR_sens.
setup
();
50
}
51
void
loop
() {
52
Motor1.
loop
();
53
Motor2.
loop
(& Do_Motor2_Open,& Do_Motor2_Close);
54
Btn_Open.
loop
( & Do_Btn_Open);
55
Btn_Close.
loop
(& Do_Btn_Close);
56
IR_sens.
loop
(& Do_IR_sens);
57
}
Проверил на столе последний скетч все работает , как описано.
Единственное замечание : Нет управления включением питания на двигатели.
А это надо . И еще хотелось бы задействовать один пин для управления сигнальными лампами (которые ставят на столбики). Лампы светятся ( а лучше мигают, когда работают моторы приводов)
Проверил на столе последний скетч все работает , как описано.
Единственное замечание : Нет управления включением питания на двигатели.
А это надо . И еще хотелось бы задействовать один пин для управления сигнальными лампами (которые ставят на столбики). Лампы светятся ( а лучше мигают, когда работают моторы приводов)
Поясните плиз..
В скетче нет индикации на дисплее?
Схема "обвязки" платы откуда?
У меня приготовлены нано и уно и платки с 4 реле.
В принципе, можно в схему еще добавить привод для штырей. Один актуатор закрепить на двух штырях и они будут надежно фиксировать створки!
зы. Схему не вствить.
Схему рисовал по скетчу , дисплея там нет ..
А схему заархивировать и вставиться
Полный скетч здесь https://yadi.sk/d/ssp7XTvc3F9wM7
Головной файл выкладываю
01
/*Gate_v4.ino
02
лампочки-мигалки ->13 (Led_pin) 0 выкл / 1 вкл
03
подача энергии на моторы ->A0 (Рower_pin) 0 вкл / 1 выкл
04
механизм правой двери без нащельника
05
мотор + -> 2 (Motor1_Open_pin) 0 вкл / 1 выкл
06
мотор - -> 3 (Motor1_Close_pin) 0 вкл / 1 выкл
07
кончник открытия -> 6 (Gate1_Open_pin) 1 сработал / 0 нет
08
кончник закрытия -> 8 (Gate1_Close_pin) 1 сработал / 0 нет
09
механизм левой двери с нащельником
10
мотор + -> 4 (Motor2_Open_pin) 0 вкл / 1 выкл
11
мотор - -> 5 (Motor2_Close_pin) 0 вкл / 1 выкл
12
кончник открытия -> 7 (Gate2_Open_pin) 1 сработал / 0 нет
13
кончник закрытия -> 9 (Gate2_Close_pin) 1 сработал / 0 нет
14
ИК датчик препятсnвия закрытия -> 10 (IR_sens_pin) 1 сработал / 0 нет
15
16
кнопка открытия дверей -> 11 (Btn_Open_pin) 0 нажата / 1 нет
17
кнопка закрытия дверей -> 12 (Btn_Close_pin) 0 нажата / 1 нет
18
*/
19
// лампочки-мигалки
20
#include "Cl_led.h"
21
const
byte
Led_pin = 13;
22
const
uint32_t time_1sec = 1000;
// частота мигания 1 секунда
23
Cl_led Led(Led_pin, 1);
24
// подача энергии на моторы
25
#include "Cl_power.h"
26
const
byte
Power_pin = A0;
27
Cl_power Power(Power_pin, 0);
28
void
Do_Power_ON() {
29
Led.blink();
30
}
31
void
Do_Power_OFF() {
32
Led.OFF();
33
}
34
// двери
35
// правая без нащельника
36
#include "Cl_motor.h"
37
const
byte
Motor1_Open_pin = 2;
// двигатель 1 откр 0 вкл / 1 выкл
38
const
byte
Motor1_Close_pin = 3;
// двигатель 1 закр 0 вкл / 1 выкл
39
const
byte
Gate1_Open_pin = 6;
// концевик 1 1 сработал / 0 нет
40
const
byte
Gate1_Close_pin = 8;
// концевик 3 1 сработал / 0 нет
41
Cl_motor Motor1(Motor1_Open_pin, Motor1_Close_pin, Gate1_Open_pin, Gate1_Close_pin, 0, 1);
42
// левая с нащельником
43
#include "Cl_motor_master.h"
44
const
uint32_t time_5sec = 5000;
// 5 секунд
45
const
byte
Motor2_Open_pin = 4;
// двигатель 2 откр 0 вкл / 1 выкл
46
const
byte
Motor2_Close_pin = 5;
// двигатель 2 закр 0 вкл / 1 выкл
47
const
byte
Gate2_Open_pin = 7;
// концевик 2 1 сработал / 0 нет
48
const
byte
Gate2_Close_pin = 9;
// концевик 4 1 сработал / 0 нет
49
Cl_motor_master Motor2(Motor2_Open_pin, Motor2_Close_pin, Gate2_Open_pin, Gate2_Close_pin, 0, 1);
50
void
Do_Motor2_Open() {
51
Power.ON1();
52
Motor1.Open();
53
}
54
void
Do_Motor2_Close() {
55
Motor1.Close();
56
Power.OFF1();
57
}
58
// кнопки и датчики
59
#include "Cl_do_btn.h"
60
const
byte
Btn_Open_pin = 11;
// вкл радиоканал 0 нажата / 1 нет
61
Cl_do_btn Btn_Open(Btn_Open_pin, 0);
// сработка 0
62
void
Do_Btn_Open() {
63
Power.ON2();
64
Motor2.Open();
65
}
66
const
byte
Btn_Close_pin = 12;
// выкл радиоканал 0 нажата / 1 нет
67
Cl_do_btn Btn_Close(Btn_Close_pin, 0);
// сработка 0
68
void
Do_Btn_Close() {
69
Motor2.Close();
70
Power.OFF2();
71
}
72
const
byte
IR_sens_pin = 13;
//ИК датчик 1 сработал / 0 нет
73
Cl_do_btn IR_sens(IR_sens_pin, 1);
// сработка 1
74
void
Do_IR_sens() {
75
Motor1.Stop();
76
Motor2.Stop();
77
Power.OFF1();
78
Power.OFF2();
79
}
80
void
setup
() {
81
Led.
setup
();
82
Led.T_blink = time_1sec;
83
Power.
setup
(& Do_Power_ON, & Do_Power_OFF);
84
Motor1.
setup
();
85
Motor2.
setup
();
86
Motor2.time_lag = time_5sec;
// выставить задержку открывания из-за наличия нащельника
87
Btn_Open.
setup
();
88
Btn_Close.
setup
();
89
IR_sens.
setup
();
90
}
91
void
loop
() {
92
Led.
loop
();
93
Power.
loop
();
94
Motor1.
loop
();
95
Motor2.
loop
(& Do_Motor2_Open, & Do_Motor2_Close);
96
Btn_Open.
loop
( & Do_Btn_Open);
97
Btn_Close.
loop
(& Do_Btn_Close);
98
IR_sens.
loop
(& Do_IR_sens);
99
}
@qwone : Не хочет компилироваться Gate v.4 , IDE 1.8.0
Странно , а у меня компилируется.
ПС https://yadi.sk/d/ydQFuOGJ3FARBu
Вот теперь и у меня скомпилировалось и загрузилось
Вот тут народ усиленно обсуждает такое-же устройство , посмотрите , если интересно :
https://www.forumhouse.ru/threads/294341/page-31
Попробовал на столе:
кнопки срабатывают , но логика работы непонятна.
В режиме открыть все срабатывает правильно, но после отключения второй створки (и сработки концевика) питание с мотора выключается , а общие питание двигателей нет . оно почемуто отключается при включении режима "закрыть"
Попробовал на столе:
кнопки срабатывают , но логика работы непонятна.
В режиме открыть все срабатывает правильно, но после отключения второй створки (и сработки концевика) питание с мотора выключается , а общие питание двигателей нет . оно почемуто отключается при включении режима "закрыть"
Я так косяк сделал. Чем больше проект, тем сложнее уследить. Попозже выложу правленый код
@qwone есть ли у Вас желание и возможность продолжить работу над проектом? моя почта Le-aibo"Собака"ya.ru
Aibo, у меня прошла очередная смена стиля программирования. Так что если продолжать программу, то придется переписывать заново. Я посмотрел. Вроде там ничего уже дорабатывать не надо. Или у вас появились новые предложения для улучшения. Да и меня нет гаража, и тем более ворот. Так что максимум я могу проверить на макете. Живьем у меня не получится.
Вот накидал новый скетч. Не проверял на работу.Полный здесь https://yadi.sk/d/GTPDoIcB3GhBKs
Головной выложу
001
/*Gate_B
002
лампочки-мигалки ->13 0 выкл / 1 вкл
003
механизм правой двери
004
мотор + -> 2 0 вкл / 1 выкл
005
мотор - -> 3 0 вкл / 1 выкл
006
кончник открытия -> 6 1 сработал / 0 нет
007
кончник закрытия -> 7 1 сработал / 0 нет
008
механизм левой двери
009
мотор + -> 4 0 вкл / 1 выкл
010
мотор - -> 5 0 вкл / 1 выкл
011
кончник открытия -> 8 1 сработал / 0 нет
012
кончник закрытия -> 9 1 сработал / 0 нет
013
ИК датчик препятствия закрытия -> 10 1 сработал / 0 нет
014
радиокнопки
015
кнопка открытия дверей -> А0 0 нажата / 1 нет
016
кнопка закрытия дверей -> А1 0 нажата / 1 нет
017
кнопка остановки дверей -> А2 0 нажата / 1 нет
018
кнопка остановки дверей -> А3 0 нажата / 1 нет
019
*/
020
// шины входа
021
#include "Cl_digitalIn.h"
022
Cl_digitalIn In[] = {
023
Cl_digitalIn(A0),
// 0- вывод A0 входом радио A
024
Cl_digitalIn(A1),
// 1- вывод A1 входом радио B
025
Cl_digitalIn(A2),
// 2- вывод A2 входом радио C
026
Cl_digitalIn(A3),
// 3- вывод A3 входом радио D
027
Cl_digitalIn(6),
// 4- вывод 6 входом конечник прав дверь откр
028
Cl_digitalIn(7),
// 5- вывод 7 входом конечник прав дверь закр
029
Cl_digitalIn(8),
// 6- вывод 8 входом конечник лев дверь откр
030
Cl_digitalIn(9),
// 7- вывод 9 входом конечник лев дверь закр
031
Cl_digitalIn(10)
// 8- вывод 10 входом ИК датчик препятствия
032
};
033
// шины выхода
034
#include "Cl_digitalOut.h"
035
Cl_digitalOut Out[] = {
036
Cl_digitalOut(2) ,
// 0- вывод 2 выходом мотор + прав дверь
037
Cl_digitalOut(3) ,
// 1- вывод 3 выходом мотор - прав дверь
038
Cl_digitalOut(4) ,
// 2- вывод 4 выходом мотор + лев дверь
039
Cl_digitalOut(5) ,
// 3- вывод 5 выходом мотор - лев дверь
040
Cl_digitalOut(10),
// 4- вывод 10 выходом подача питания на моторы
041
Cl_digitalOut(13)
// 5- вывод 13 выходом светодиод
042
};
043
//светодиод
044
#include "Cl_led.h"
045
Cl_led *Led1 =
new
Cl_led(&Out[5], 1);
// подключить светодиод
046
// подача питания на моторы
047
#include "Cl_power.h"
048
void
PowerOn() {
049
Led1->blink(500);
// мигать 0.5 горит 0.5 нет
050
}
051
void
PowerOff() {
052
Led1->OFF();
// выключить мигалку
053
}
054
Cl_power *Power =
new
Cl_power(&Out[4], 10, &PowerOn, &PowerOff);
// подключить подача питания на моторы
055
// двери
056
void
Stat_Motor1_Run() {
057
Power->ON1();
058
}
059
void
Stat_Motor1_Stop() {
060
Power->OFF1();
061
}
062
void
Stat_Motor2_Run() {
063
Power->ON2();
064
}
065
void
Stat_Motor2_Stop() {
066
Power->OFF2();
067
}
068
#include "Cl_motor.h"
069
Cl_motor * Motor[] = {
070
new
Cl_motor(&Out[0], &Out[1], 0, &In[4], &In[5], 1, &Stat_Motor1_Run, &Stat_Motor1_Stop),
// прав дверь
071
new
Cl_motor(&Out[2], &Out[3], 0, &In[6], &In[7], 1, &Stat_Motor2_Run, &Stat_Motor2_Stop)
// лев дверь
072
};
073
// кнопки
074
void
Do_Open() {
075
Motor[0]->Open();
076
Motor[1]->Open();
077
}
078
void
Do_Close() {
079
Motor[0]->Close();
080
Motor[1]->Close();
081
}
082
void
Do_Stop() {
083
Motor[0]->Stop();
084
Motor[1]->Stop();
085
}
086
#include "Cl_do_btn.h"
087
Cl_do_btn * Btn[] = {
088
new
Cl_do_btn(&In[0] , 0, &Do_Open ),
//радиоканал A 0 нажата / 1 нет
089
new
Cl_do_btn(&In[1] , 0, &Do_Close),
//радиоканал B 0 нажата / 1 нет
090
new
Cl_do_btn(&In[2] , 0, &Do_Stop ),
//радиоканал C 0 нажата / 1 нет
091
new
Cl_do_btn(&In[3] , 0, &Do_Stop ),
//радиоканал D 0 нажата / 1 нет
092
new
Cl_do_btn(&In[10], 1, &Do_Stop )
//Ик датчик препятсвия 1 сработал / 0 нет
093
};
094
void
setup
() {
095
Led1->
setup
();
096
Power->
setup
();
097
for
(
byte
i = 0; i < 2; ++i)Motor[i]->
setup
();
098
for
(
byte
i = 0; i < 5; ++i)Btn[i]->
setup
();
099
}
100
101
void
loop
() {
102
Led1->
loop
();
103
for
(
byte
i = 0; i < 2; ++i)Motor[i]->
loop
();
104
for
(
byte
i = 0; i < 5; ++i)Btn[i]->
loop
();
105
}
У меня ошибка строку 092 надо заменить на эту
1
new
Cl_do_btn(&In[8], 1, &Do_Stop )
//Ик датчик препятсвия 1 сработал / 0 нет
строка 040 ошибка
1
Cl_digitalOut(11),
// 4- вывод 11 выходом подача питания на моторы
Уважаемый qwone , восхищаюсь Вашей работой , все красиво, структурированно.
Собрал прибор по приложеной ниже схеме. Все грамотно работает ,но не устраивает один момент .
нет возможности задержки открытия-закрытия одной створки. Автор не имеет возможности переделать .
Пытаюсь перенести алгоритм на ардуино. В указанной конструкции мне понравилось использование датчика тока ASC712 5A . Датчики останавливают систему в случае перегрузки на двигателе (например что-то попало между створок) , во вторых используется наличие или отсутвие тока для определения двигается створка или стоит. Концевики в приводах остались , но они не связаны с автоматикой, они просто выключают двигатели при достижении крайних точек (соотвественно двигатель остановился- датчик тока выдает данные об остановке ). Кроме того двигатели подключены через Мосфет с драйвером и управляются ШИМ, что позволяет реализовать медленный старт ( без броска тока), что хорошо для моторов, БП и датчиков тока. Удобно так же то, что есть дисплей на котором можно подстрайвать систему.( у меня ворота будут на даче, где нет возможности опреративно менять прошивку)
https://yadi.sk/d/B1R87ruS3GptbW
https://yadi.sk/d/3W3k3i223Gptku
Добрый день нужна помощь с ардуино до елаю распошные ворота что-то не получается с программой можете сбросить схему расключения уны может где резистор подтягивающий не поставил нет сигнала на включения мотора
Всем привет! Реализовал автоматические ворота на Arduino, DFPlayer, VNH2SP30, LCD 1602, 433 Mhz, Ethernet module W5500. https://youtu.be/o8iIACNo7ZY