Вт мар 29, 2022 20:39:45
Do
'обнуляем время,выключаем реле и светодиод
v=0
Reset Rele 'выключение мотора и диода
Reset Red
set green
'ждем когда истечет время
while v<30
wend
'время истекло
reset green 'выключаем светодиод зеленый
Set Rele 'реле включило мотор
Set Red 'загорелся светодиод
'здесь проверка,разомкнулись ли концевики
while R_end = 0 or L_end=0
wend
waitms 100
'ждем замыкания концевиков
while R_end = 1 and L_end=1
wend
Loop
Вс апр 03, 2022 09:23:18
Вс апр 03, 2022 12:34:28
Вт апр 05, 2022 15:28:20
Ср апр 06, 2022 10:56:53
Ср апр 06, 2022 15:12:27
Ср апр 06, 2022 20:24:42
Ср апр 06, 2022 21:25:22
Ср апр 06, 2022 23:30:32
Вт июл 26, 2022 13:17:21
$regfile = "m328pdef.dat"
$crystal = 8000000
$baud = 9600
$hwstack = 68
$swstack = 68
$framesize = 120
Config Clockdiv = 1
Mcucr.7 = 1 'Turn OFF JTAG
Mcucr.7 = 1
'---------- I2C bus ----------
$lib "i2c_twi.lbx" ' hardware I2C
Config Scl = Portc.5 ' used i2c pins
Config Sda = Portc.4
Config Twi = 400000 ' i2c speed
I2cinit
Waitms 5
'---------- Display ----------
$lib "glcdSSD1306-I2C-Buf.lib"
Config Graphlcd = Custom , Cols = 128 , Rows = 64 , Lcdname = "SSD1306"
Dim Lcd_auto As Byte
Lcd_auto = 1
Const Rotate_180 = 0
#if _build < 20784
Dim ___lcdrow As Byte , ___lcdcol As Byte ' dim these for older compiler versions
#endif
Dim I As Byte , N As Byte
'---------- ВСЕ ЧТО ВЫШЕ ЭТО НАСТРОЙКИ ЭКРАНА
Config Watchdog = 4096 ' (4096) Ватчдог
'Cюда лепим 18b20
'=======================
Config Serialin = Buffered , Size = 60
Config 1wire = PortC.0
'Подключение динамика
'=======================
Config Portb.3 = Output : Set Portc.3 ' Кнопка постановки и снятия с охраны
Spkr Alias Pinb.3 ' Динамик
Pc817 Alias Pinc.3
'Для проверки подключения зарядки
'=======================
Config Portd.5 = Input
Kn2 Alias Pind.5
'Пин для включения модуля, вывод DTR
'=======================
Config Portc.1 = Output
Pkey Alias Portc.1
Pkey = 0
'Выход для 1 удаленного управления - реле 1
'=======================
Config Portb.2 = Output : Set Portd.7 ' PIR СЕНСОР
Outpin1 Alias Portb.2
Outpin1 = 0
Pir Alias Pind.7
'Выход для 2 удаленного управления - реле 2
'=======================
Config Portb.1 = Output
Outpin2 Alias Portb.1
Outpin2 = 0
'Выход для 2 удаленного управления - реле 3
'=======================
Config PortB.0 = Output : Set Portd.3 ' Вход для подключения геркона или кнопки - механического датчика
Outpin3 Alias PortB.0
Outpin3 = 0
Gerkon Alias Pind.3
'Вход для RC5
'=======================
Config Rc5 = Pind.6 , Wait = 1500
Config Pind.6 = Input
Dim Address As Byte
Dim Command As Byte
Enable Interrupts
Declare Sub Getline(s As String)
Declare Sub Flushbuf()
' Настройка АЦП для датчика ВОДЫ
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Dim W As Integer
Dim Wsingl As Single
Dim Wstr As String * 5
'---------- << ПЕРЕМЕННЫЕ
Config Debounce = 50 ' Антидребезг
Dim F As Byte ' Счетчик
Dim M As Byte ' Счетчик как F - запасной
Dim M1 As Byte ' Счетчик для задержки для повторного звонка, чтобы не названивал если дверь открыта.
M1 = 0
Dim M2 As Byte ' Для входа в меню прямо в рабочем режиме.
M2 = 0
Dim Y As Word ' Счетчик для датчика воды
Dim J As Word ' Счетчик для датчика температуры
M = 0
Y = 0
J = 0
Dim Count As Byte ' Счетчик удержания кнопки
Dim Sms_chg As String * 3 ' Состояние входа зарядки для СМС
Dim Chgs As Byte ' Для запрета отправки СМС, если пропало 220 придет СМС 1 раз до след постановки на охрану
Dim Number As String * 11 ' Номер телефона
Dim Temp As String * 10
Dim Temp1 As String * 10
Dim Temp2 As String * 10
Dim Rs As Byte
Dim A As Byte
Dim S As String * 50
Dim B As Byte
Dim R As Byte
Dim Z As String * 15
Dim Sms_num As String * 2 ' Порядковый номер смс
Dim Stmp As String * 1
Dim Sms As String * 120
Dim Otvet As String * 160 ' Сообщение, которое модуль будет отправлять
Dim Sk As String * 66
Dim Tmr As Byte
Dim Sms_val As Byte
Dim Loadpin1 As Bit ' Значение пина выхода 1
Dim Loadpin2 As Bit ' Значение пина выхода 2
Dim Loadpin3 As Bit ' Значение пина выхода 3
Dim Wtrspk As Byte ' Вкл Выкл динамика ( пока настроен на датчик воды, можно настроить так чтобы вообще вырубать звук)
Dim Eeprom_infa5 As Eram Byte
Wtrspk = Eeprom_infa5
'If Wtrspk = 225 Then Wtrspk = 0
Dim Sendsms As Byte ' Переменная для разрешения отправки сообщения по срабатыванию датчик воды - связан с счетчиком количества трех срабатываний
Dim Eeprom_infa3 As Eram Byte
Sendsms = Eeprom_infa3
Dim Zvonok As Byte ' Переменная для разрешения вызовов
Dim Eeprom_infa2 As Eram Byte
Zvonok = Eeprom_infa2
'Zvonok = 0 ' На время тестов
Dim Chargesms As Byte ' Cтатус для контроля зарядки
'---------- << Для динамика
Dim Frq As Word
Dim D As Word
'---------- << Для меню
Dim Temper As Byte ' Значение температуры введенная с пульта RC5
Dim Eeprom_infa1 As Eram Byte
Temper = Eeprom_infa1
If Temper = 255 Then Temper = 45
Dim Rlc As Byte '<<< Разрешаем или запрещаем управлять реле по датчику температуры
Dim Eeprom_infa4 As Eram Byte
Rlc = Eeprom_infa4
If Rlc > 1 Or Rlc < 0 Then Rlc = 0
Dim Wlc As Byte '<<< Разрешаем или запрещаем управлять реле по датчику воды
Dim Eeprom_infa6 As Eram Byte
Wlc = Eeprom_infa6
If Wlc > 1 Or Wlc < 0 Then Wlc = 0
Dim Tsms As Byte '<<< Разрешаем или запрещаем отправку СМС по достижению температуры, работает независимо от постановки и снятия с охраны
Dim Eeprom_infa7 As Eram Byte
Tsms = Eeprom_infa7
If Tsms > 1 Or Tsms < 0 Then Tsms = 0
'Dim Zv As byte ' Переменная для перезвона в случае зависания
'Dim Eeprom_infa11 As Eram Byte
'Zv = Eeprom_infa11
Dim Zad As byte ' Задержка перед вызовом по мех.датчику (пока)
Dim Eeprom_infa12 As Eram Byte
Zad = Eeprom_infa12
If Zad < 0 or Zad > 3 Then Zad = 1
Dim Mm As Byte
Mm = 1 ' Для навигации по меню
'----------
Dim 3sms As Word ' Если три раза сработал датчик воды то больше СМСки не отправляем, т.е. смски шлем только 3 раза до повторной постановки на охрану
Dim Eeprom_infa As Byte
'Soff = 0
If 3sms > 1 Or 3sms < 0 Then 3sms = 0
'''' СОХРАНЕНИЕ РАБОТЫ РЕЛЕ В СЛУЧАЕ ЗАВИСАНИЯ И ПЕРЕЗАГРУЗКИ
Dim k1 As Byte ' 1 релейный канал
Dim Eeprom_infa8 As Eram Byte
k1 = Eeprom_infa8
Dim k2 As Byte ' 2 релейный канал
Dim Eeprom_infa9 As Eram Byte
k2 = Eeprom_infa9
Dim k3 As Byte ' 3 релейный канал
Dim Eeprom_infa10 As Eram Byte
k3 = Eeprom_infa10
Dim Load1 As String * 3 ' RL1 (Статус в СМС словами ОN или OFF)
Dim Load2 As String * 3 ' RL2
Dim Load3 As String * 3 ' RL1
Dim Wtrinf As String * 1 ' Для отображения на экране и в СМС
Dim Kninf As String * 1
Dim Pirinf As String * 1
Dim Secinf As String * 3 ' Сообщение состояния охраны в СМC и на ЖК, YES-NO (Охрана включена или выключена, ОБЩЕЕ СОСТОЯНИЕ СИСТЕМЫ)
Dim Pitanie As String * 3 ' Сообщение для СМС, YES-NO для контроля зарядки
Dim Stwtr As String * 1 ' Статус для СМС было срабатывание или нет (не путать с текущим состоянием)
Dim Stkn As String * 1
Dim Stpir As String * 1
Stwtr = ""
Stkn = ""
Stpir = ""
Dim T As Byte ' Температура
Dim Sign As String * 5 ' Знак температуры
Dim Byte0 As Byte
Dim Byte1 As Byte
Dim T1 As Byte
Dim T2 As Byte
Dim Tstr As String * 4
Dim Numb As Byte
Dim Connect As String * 6 ' Уровень сигнала
Dim Connectvar As Byte ' Уровень сигнала в числовом значении
Dim Operator As String * 20
'Dim Date_str As String * 20
Dim Time_str As String * 20
Dim Bat_str As String * 9 ' Для показа зарядки в процентах
Dim Bat_str1 As String * 9 ' Показ знака напряжения до запятой
Dim Bat_str2 As String * 9 ' Показ знака напряжения после запятой
Dim Phonenumbereeprom As Eram String * 12
Dim Phonenumber As String * 12
Phonenumber = Phonenumbereeprom
Вт авг 09, 2022 15:02:11
$regfile = "m328pdef.dat"
$crystal = 8000000
$baud = 9600
$hwstack = 68
$swstack = 68
$framesize = 120
часть переменных.
Dim Sms_num As String * 2 ' Порядковый номер смс
Dim Sms As String * 120
Dim Otvet As String * 160 ' Сообщение, которое модуль будет отправлять
Dim Sk As String * 66
...
Dim Phonenumbereeprom As Eram String * 12
Dim Phonenumber As String * 12
Phonenumber = Phonenumbereeprom
...
Обработка смски:
If Sms = "savenumber" Then ' Если сообщение содержит данный текст
Phonenumber = Number ' Номер с которого пришла смс используется как номер для отправки сообщений
Phonenumbereeprom = Phonenumber ' Записываем номер в энергонезависимую память
Otvet = "Saved: " + Phonenumber
Setfont Font8x8tt
Lcdat 1 , 1 , " "
Lcdat 1 , 15 , "Save the number"
Wait 1
Lcdat 1 , 1 , " "
Gosub Atd
Gosub Cls1
End If
Вт авг 09, 2022 21:40:37
Вт сен 13, 2022 07:12:32
Вт сен 13, 2022 07:31:35
Пт сен 16, 2022 13:44:21
Ср ноя 23, 2022 20:42:43
Чт ноя 24, 2022 15:18:53
Чт ноя 24, 2022 16:00:29
Пт ноя 25, 2022 07:38:02
N_bits_double = 0
For N_byte = 1 To 8 'перебираем байты
For N_bits_byte = 0 To 7
Vpls.n_bits_double = Value(n_byte).n_bits_byte 'копируем биты
Incr N_bits_double
Next '
Next
Пт дек 02, 2022 18:06:22
Sub Getline(s As String)
S = ""
dim F as byte
Do
B = Inkey() 'берем символ из буфера в формате ASCII
Select Case B
Case 0 'возвращает в случае пустого буфера
Case 13 'возврат каретки (Enter), заместо него можно поставить пробел
Case 10 : If S <> "" Then Exit Do 'конец строки, значит выходит из подпрограммы
Case Else : If B > 31 Then S = S + Chr(b) 'печатаемые
символы начинаются с кода 32 по таблице АСКИ, из них составляем строку
End Select
incr F
if F>100 then 'выйдем после 100 итераций
exit do
end if
Loop
F=0 'обнуляем переменную
End Sub