> 文档中心 > HTK-W801使用LuatOS编程---点灯

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 machineimport 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#%E4%BD%BF%E7%94%A8pika%E5%8C%85%E7%AE%A1%E7%90%86%E5%99%A8pikapackageexe这个相对于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)    endend)-- 用户代码已结束----------------------------------------------- 结尾总是这一句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    endend)-- 用户代码已结束----------------------------------------------- 结尾总是这一句sys.run()-- sys.run()之后后面不要加任何语句!!!!!