Приветствую всех любителей и профи. Нужна помощь в настройке одного полезного устройства.
Хочу сделать автоматику откатных ворот в саду с помощью купленного в Китае радиомодуля. В
комплект радиомодуля входят 2 брелка и платка приемника. Работает он так: нажимаем на 1
кнопку - на 1 выходе сигнал 5в, на втором- 0. Нажимаем на 2 кнопку - на втором выходе 5в.
первый выключается. 3 и 4 каналы ведут себя аналогично, но я их не использую.
На рис. показана схема подключения. Я не стал рисовать силовую часть на выходе - нарисовал
сигнальные светодиоды. Должно работать так: нажали на 1 кнопку - включилось реле реверса
для открытия ворот, через 0,5 сек - включился мотор привода. В крайнем положении
срабатывает концевик - выключается мотор, выключается реле.
При нажатии 2 кнопки включается мотор на закрытие ворот. Второй концевик выключает мотор в
закрытом положении. Оба концевика включены параллельно.
Набросал код, и что-то он у меня никак не хочет работать по моему плану. Вернее работает до
первого нажатия концевика. А дальше живет самостоятельной жизнью, которую я пока не могу
понять. Что-то неправильно в основном цикле.
Может, кто-нибудь глянет на свежую голову. Время терпит, т.к. делать все это планирую
весной.
[img]
[/img]
Код:
$regfile = "attiny13a.dat"
$crystal = 4800000
$hwstack = 8
$swstack = 16
$framesize = 32
Config Pinb.3 = Input ' Кнопка Открыть '
Config Pinb.4 = Input 'Кнопка Закрыть
Config Portb.0 = Output 'Включение реверса
Config Portb.2 = Output 'Включение мотора
Config Int0 = Falling
Config Debounce = 50
On Int0 Button
Enable Interrupts
Enable Int0
Dim K As Byte
Knopka_1 Alias Pinb.3
Knopka_2 Alias Pinb.4
Revers Alias Portb.2
Motor Alias Portb.0
K = 1
Knopka_1 = 0 : Knopka_2 = 0
Do
If Knopka_1 = 1 And K = 1 Then ' Нажата 1 кнопка
Set Revers
Waitms 500
Set Motor
End If
If Knopka_2 = 1 And K = 0 Then ' Нажата 2 кнопка
Set Motor
End If
Loop
Button: ' Сработал концевик
Reset Motor
Reset Revers
K = K + 1
If K > 1 Then K = 0
Return
End