HTK-W801使用LuatOS编程---点灯

最近入手一个热门的平头哥W801-kit开发板, 是冲着上面自带的BLE和WIFI去的, 但是网上的资料奇少. 看了说明和W806 唯一的差别在于多了蓝牙和WIFI功能, 其他的都一样.

官方推荐的开发环境是C-Sky, 安装后居然要占用>3G的硬盘空间, 有些夸张啊, 为了一个小板子, 硬盘都显得紧张了! 

在网上查了一下, 有人正在把 Micropython 移植到这个板子上, 参考 

micropython/ports/xt804 at master · gengyong/micropython · GitHub

这个版本功能有限, 还是初级的.

作者给出的示例程序

import machine
# PB0 脚, 输出, 默认高电平
pb0 = machine.Pin('B0', machine.Pin.OUT, value=1)
# 输出低电平
pb0.off()

# PA0 脚, 输入
pa0 = machine.Pin('A0', machine.Pin.IN)
# 读取
pa0.value()

根据这个例子可以编写W801上的跑马灯程序

import machine
import time
# PB0 脚, 输出, 默认高电平
pb5 = machine.Pin('B5', machine.Pin.OUT, value=1)
pb25 = machine.Pin('B25', machine.Pin.OUT, value=1)
pb26 = machine.Pin('B26', machine.Pin.OUT, value=1)
pb18 = machine.Pin('B18', machine.Pin.OUT, value=1)
pb17 = machine.Pin('B17', machine.Pin.OUT, value=1)
pb16 = machine.Pin('B16', machine.Pin.OUT, value=1)
pb11 = machine.Pin('B11', machine.Pin.OUT, value=1)

while True:
    # 输出低电平
    pb5.off()
    time.sleep(0.1)
    pb5.on()
    time.sleep(0.1)

另外还有人另起楼灶做的新的开发引擎, 参考

 pikascript: PikaScript是一个完全重写的超轻量级python引擎,零依赖,零配置,可以在少于4KB的RAM下运行(如stm32g030c8和stm32f103c8),极易部署和扩展另外https://gitee.com/Lyon1998/pikascript这个相对于micropython 也算是一个异类.

另外还有人把LuatOS移植到 W801/806 上, 这也难怪, 因为 LuatOS Air301和他们用的是一样的芯片, 移植起来就很容易了. 参考

luatos-soc-air101: 合宙Air101/Air103固件源代码, 适用于Air101/Air103/w806/w800等基于xt804内核的芯片https://gitee.com/openLuat/luatos-soc-air101?_from=gitee_search这里作为一个示例, 点亮W801板载的7颗灯

-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "gpiodemo"
VERSION = "1.0.0"
log.info("main", PROJECT, VERSION)
-- sys库是标配
_G.sys = require("sys")

gpio.setup(0, function(val)
    log.info("PA0", val)
end, gpio.PULLUP)--按键按下接地,因此需要上拉

--下面的GPIO引脚编号,请根据实际需要进行更改!
local LED1 = gpio.setup(27, 0) -- PB11输出模式
local LED2 = gpio.setup(32, 0) -- PB16输出模式
local LED3 = gpio.setup(33, 0) -- PB17输出模式
local LED4 = gpio.setup(34, 0) -- PB18输出模式
local LED5 = gpio.setup(42, 0) -- PB26输出模式
local LED6 = gpio.setup(41, 0) -- PB25输出模式
local LED7 = gpio.setup(21, 0) -- PB5输出模式
sys.taskInit(function()
    while 1 do
        LED1(0)
        LED2(1)
        LED3(1)
        LED4(1)
        LED5(1)
        LED6(1)
        LED7(1)
        sys.wait(100)
        LED1(1)
        LED2(0)
        LED3(1)
        LED4(1)
        LED5(1)
        LED6(1)
        LED7(1)
        sys.wait(100)
        LED1(1)
        LED2(1)
        LED3(0)
        LED4(1)
        LED5(1)
        LED6(1)
        LED7(1)
        sys.wait(100)
        LED1(1)
        LED2(1)
        LED3(1)
        LED4(0)
        LED5(1)
        LED6(1)
        LED7(1)
        sys.wait(100)
        LED1(1)
        LED2(1)
        LED3(1)
        LED4(1)
        LED5(0)
        LED6(1)
        LED7(1)
        sys.wait(100)
        LED1(1)
        LED2(1)
        LED3(1)
        LED4(1)
        LED5(1)
        LED6(0)
        LED7(1)
        sys.wait(100)
        LED1(1)
        LED2(1)
        LED3(1)
        LED4(1)
        LED5(1)
        LED6(1)
        LED7(0)
        sys.wait(100)
        LED1(1)
        LED2(1)
        LED3(1)
        LED4(1)
        LED5(1)
        LED6(1)
        LED7(1)
        sys.wait(100)
    end
end)
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

使用官方的Luatools_v2烧录到W801后会循环点亮板载灯. 但是这个程序显得冗长乏味. 考虑到Lua的表和Python 的列表类似, 结合以前的经验, 用表的方式存储灯, 然后逐个点亮实现跑马灯的效果

-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "gpiodemo"
VERSION = "1.0.0"
log.info("main", PROJECT, VERSION)
-- sys库是标配
_G.sys = require("sys")

gpio.setup(0, function(val)
    log.info("PA0", val)
end, gpio.PULLUP)--按键按下接地,因此需要上拉

--下面的GPIO引脚编号,请根据实际需要进行更改!
local LED1 = gpio.setup(27, 0) -- PB11输出模式
local LED2 = gpio.setup(32, 0) -- PB16输出模式
local LED3 = gpio.setup(33, 0) -- PB17输出模式
local LED4 = gpio.setup(34, 0) -- PB18输出模式
local LED5 = gpio.setup(42, 0) -- PB26输出模式
local LED6 = gpio.setup(41, 0) -- PB25输出模式
local LED7 = gpio.setup(21, 0) -- PB5输出模式
local leds = {LED1,LED2,LED3,LED4,LED5,LED6,LED7}
sys.taskInit(function()
    while 1 do
        for i = 1, 7 do  --正向点灯
            leds[i](0)
            sys.wait(100)
            leds[i](1)
            sys.wait(100)
        end
        for i = 6, 2, -1 do  --逆向点灯
            leds[i](0)
            sys.wait(100)
            leds[i](1)
            sys.wait(100)
        end
    end
end)
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

版权声明:本文为CSDN博主「leotzf」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45616112/article/details/121891478

生成海报
点赞 0

leotzf

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

国产蓝牙MCU选型参考

以前主要用nordic siliconlabs的蓝牙mcu,因为现在缺芯的关系开始准备选型国产单蓝牙mcu来使用,经过几天的简单了解发现这几年国产蓝牙芯片可以说是遍地开花,单模蓝牙,双模蓝

ESP8266 - 首次使用点灯科技

ESP8266 - 首次使用点灯科技 下载相关文件: ESP8266适用的 SDK下载: 下载 操作步骤: 将blinker-library-master.zip解压到 我的电脑>文档>Ardu

rt_thread hc32f460开发四:pwm驱动移植

RT-Thread 驱动开发简介 RT-Thread驱动开发最开始应该是要阅读官方的文档,理解驱动的运行原理和使用方法。PWM部分的文档在这里https://www.rt-thread.org/document/site/#/rt