|
本帖最后由 Cherry007 于 2022-12-8 09:03 编辑
可以用notepad创建文本文档,重命名为main.lua
- --LIB_WatchDogConfig("10S")--看门狗
- LIB_SystemLogEnable() --日志
- --机智云平台为每个产品类别分配的唯一PK和PS,一定要改成您自己的PK和PS
- PK = "bf4e8824edbb4ada934c6ca4c8d30eb1"
- PS = "f32f10d34fcd4a4784a8de13dc2ee01b"
- --初始化4G模块
- LIB_Giz4GConfig(PK,PS,6000,0,"UART0","D5","HIGH","D6","HIGH")
- --初始化继电器GPIO
- LIB_GpioOutputConfig("D4","STANDARD")
- --默认继电器为关闭状态
- LIB_GpioWrite("D4",0)
- --人体感应初始化
- LIB_GpioInputConfig("D7","NOPULL")
- --设置sht3x传感器占用SCL0和SDA0引脚,并启动传感器以每秒出10个数据的频率工作,repeatability="HIGH"时精度最高
- LIB_Sht3xConfig("IIC0","10","HIGH")
- --设置0.96寸oled模块占用SCL1和SDA1引脚
- LIB_0_96_OledConfig("IIC1")
- --初始化D8引脚,黄灯
- LIB_GpioOutputConfig("D8","STANDARD")
- --初始化D9引脚,绿灯
- LIB_GpioOutputConfig("D9","STANDARD")
- --设置按键"BTN1"(占用D10口)以低电平有效的方式检测按键动作
- LIB_ButtonConfig("BTN1","D10","L")
- --设置按键"BTN1"(占用D11口)以低电平有效的方式检测按键动作
- LIB_ButtonConfig("BTN2","D11","L")
- --配置A0-A3这四个通道同时开始工作,当每个通道采集满50个点时缓存满,每个点的采集时间间隔为10ms
- LIB_ADConfig(50,10000)
- AD0=0.0
- AD1=0.0
- --配置D0口为PWM功能,参数370表示PWM的周期为370us,参数1表示高电平有效
- LIB_PwmConfig1(370,1)
- --更新D0口的PWM输出占空比为0
- LIB_PwmUpdate1(0)
- cnt = 0
- --继电器
- function Relay()
- --查询机智云是否下发了写"Sw3"开关量数据点的动作
- flag,recv_data = LIB_RecvFromGizCloud("Sw3")
- if flag == 1 then
- if recv_data == 1 then -- 云下发了1
- LIB_GpioWrite("D4",1)--继电器打开
- else -- 云下发了0
- LIB_GpioWrite("D4",0)--继电器关闭
- end
- end
- end
- --人体感应
- function Human_Body_Induction()
- --读取人体感应输入引脚的电平值
- Alarm = LIB_GpioRead("D7")
- --根据传感器状态上报云端
- if Alarm == 1 then
- --上传云端感应到人体
- LIB_SendToGizCloud("In1", Alarm)
- elseif Alarm == 0 then
- --上传云端未感应到人体
- LIB_SendToGizCloud("In1", Alarm)
- end
- end
- --温湿度采集
- function Read_TempAndHumi()
- --查询sht3x传感器是否出数
- sht3x_flag,sht3x_temp,sht3x_humi = LIB_Sht3xGetResult()
- --如果传感器有新的温湿度数据产生
- if sht3x_flag == 1 then
- --在oled的第一行和第二行分别显示温度(摄氏度)和湿度(百分比)
- LIB_0_96_OledPuts("1","1",string.format("temprature: %.2f", sht3x_temp))
- LIB_0_96_OledPuts("2","1",string.format("humidity: %.2f", sht3x_humi))
- --向机智云发送温度和湿度数据
- LIB_SendToGizCloud("Rf3", sht3x_temp)
- LIB_SendToGizCloud("Rf4", sht3x_humi)
- end
- end
- --按键,LED
- function LED_KEY()
- --查询机智云是否下发了写"Sw1"开关量数据点的动作
- flag,recv_data = LIB_RecvFromGizCloud("Sw1")
- if recv_data == 1 then -- 云下发了1
- LIB_GpioWrite("D8",0)--黄灯打开
- else -- 云下发了0
- LIB_GpioWrite("D8",1)--黄灯关闭
- end
- --查询机智云是否下发了写"Sw2"开关量数据点的动作
- flag,recv_data = LIB_RecvFromGizCloud("Sw2")
- if recv_data == 1 then -- 云下发了1
- LIB_GpioWrite("D9",0)--绿灯打开
- else -- 云下发了0
- LIB_GpioWrite("D9",1)--绿灯关闭
- end
- --轮询按键事件
- key_value = LIB_ButtonQuery("BTN1")
- --如果按键1短按过,切换LED1状态
- if key_value == 1 then
- LIB_GpioToggle("D8")
- end
- key_value = LIB_ButtonQuery("BTN2")
- --如果按键2短按过,切换LED2状态
- if key_value == 1 then
- LIB_GpioToggle("D9")
- end
- end
- --光照,电位器电压采集
- function read_ResAndIll_Adc()
- A0_full_flag, A0_tab = LIB_ADCheckBufFull("A0")
- --每当A0通道的缓存满以后,计算缓存内的50个元素的平均值,并换算成电压值
- if A0_full_flag == 1 then
- SUM = 0
- for i = 1, #A0_tab do --此处#A0_tab的值是50,表示A0_tab表内的元素个数
- SUM = SUM + A0_tab[i]
- end
- AVER = SUM / #A0_tab
- AD0=AVER*3.6/4096.0
- --将A0通道的AD值转换成实际电压显示出来,注意这里是保留小数点后一位
- LIB_0_96_OledPuts("3","1",string.format("AD0:%.1f", AD0))
- LIB_SendToGizCloud("Rf1", AD0)
- end
- --每当A1通道的缓存满以后,计算缓存内的50个元素的平均值,并换算成电压值
- A1_full_flag, A1_tab = LIB_ADCheckBufFull("A1")
- if A1_full_flag == 1 then
- SUM = 0
- for i = 1, #A1_tab do --此处#A1_tab的值是50,表示A0_tab表内的元素个数
- SUM = SUM + A1_tab[i]
- end
- AVER = SUM / #A1_tab
- AD1=AVER*3.6/4096.0
- --将A1通道的AD值转换成实际电压显示出来,注意这里是保留小数点后一位
- LIB_0_96_OledPuts("4","1",string.format("AD1:%.1f", AD1))
- LIB_SendToGizCloud("Rf2", AD1)
- end
- end
- --蜂鸣器开关
- function BUZ_run()
- --查询机智云是否下发了写"Sw4"开关量数据点的动作
- flag,recv_data = LIB_RecvFromGizCloud("Sw4")
- if flag == 1 then
- if recv_data == 1 then -- 云下发了1
- cnt = 185
- --蜂鸣器打开
- else -- 云下发了0
- cnt = 0
- --蜂鸣器关闭
- end
- LIB_PwmUpdate1(cnt)
- end
- end
- --红灯亮度调节
- function PWM_LED()
- --查询机智云是否下发了写"Ws2"开关量数据点的动作
- flag,recv_data = LIB_RecvFromGizCloud("Ws2")
- if flag == 1 then
- if Ws2==0 then
- cnt=370
- else
- cnt =300 - Ws2 *3
- end
- --红灯亮度调节
- LIB_PwmUpdate1(cnt)
- end
- end
- --电机调速
- function PWM_MOT()
- --查询机智云是否下发了写"Ws2"开关量数据点的动作
- flag,recv_data = LIB_RecvFromGizCloud("Ws3")
- if flag == 1 then
- if Ws3==0 then
- cnt=0
- else
- cnt = Ws3 *3
- end
- --红灯亮度调节
- LIB_PwmUpdate1(cnt)
- end
- end
- --开始大循环
- while(GC(1) == true)
- do
- -- Relay()
- -- Human_Body_Induction()
-
- -- Read_TempAndHumi()
-
- -- LED_KEY()
- -- Read_ResAndIll_Adc()
-
- -- BUZ_run()
- -- PWM_LED()
- -- PWM_MOT()
- -- LIB_WatchDogFeed() --喂狗
-
- end
复制代码
|
|