康康2020 发表于 2022-12-8 08:43:12

Shineblink开发板怎么创建main.lua

Shineblink开发板怎么创建main.lua


Cherry007 发表于 2022-12-8 08:43:45

本帖最后由 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
      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
      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

页: [1]
查看完整版本: Shineblink开发板怎么创建main.lua