Lua 是一种有时会被误解的语言。它与 Python 等其他语言不同,但它是一种通用的扩展语言,广泛用于游戏引擎、框架等。总的来说,我发现 Lua 对开发人员来说是一个有价值的工具,可以让他们以一些强大的方式增强和扩展他们的项目。
(资料图片仅供参考)
你可以按照 Seth Kenlon 的文章《Lua 值得学习吗?》的介绍下载并运行常用的 Lua,该文章中还包括了简单的 Lua 代码示例。但是,要充分利用 Lua,最好将它与采用该语言的框架一起使用。在本教程中,我演示了如何使用名为 Mako Server 的框架,该框架旨在使 Lua 程序员能够轻松地编写 IoT 和 Web 应用代码。我还向你展示了如何使用 API 扩展此框架以使用树莓派的 GPIO 引脚。
要求在学习本教程之前,你需要一个可以登录的正在运行的树莓派。虽然我将在本教程中编译 C 代码,但你不需要任何 C 代码经验。但是,你需要一些使用POSIX终端的经验。
安装首先,在树莓派上打开一个终端窗口并安装以下工具,以使用 Git 下载代码和编译 C 代码:
$ sudo apt install git unzip gcc make
接下来,通过运行以下命令编译开源 Mako Server 代码和 lua-periphery 库(树莓派的 GPIO 库):
$ wget -O Mako-Server-Build.sh \ https://raw.githubusercontent.com/RealTimeLogic/BAS/main/RaspberryPiBuild.sh
查看脚本以了解它的作用,并在你觉得没问题后运行它:
$ sh ./Mako-Server-Build.sh
编译过程可能需要一些时间,尤其是在较旧的树莓派上。编译完成后,脚本会要求你将 Mako Server 和 lua-periphery 模块安装到/usr/local/bin/
。我建议安装它以简化软件的使用。别担心,如果你不再需要它,你可以卸载它:
$ cd /usr/local/bin/$ sudo rm mako mako.zip periphery.so
要测试安装,请在终端中输入mako
。这将启动 Mako 服务器,并在你的终端中看到一些输出。你可以按CTRL+C
停止服务器。
现在 Mako 服务器已在你的树莓派上设置好,你可以开始对 IoT 和 Web 应用进行编程,并使用 Lua 操作树莓派的 GPIO 引脚。Mako Server 框架为 Lua 开发人员提供了一个强大而简单的 API 来创建物联网应用,而 lua-periphery 模块让 Lua 开发人员可以与树莓派的 GPIO 引脚和其他外围设备进行交互。
首先创建一个应用目录和一个.preload
脚本,其中插入用于测试 GPIO 的 Lua 代码。.preload
脚本是一个 Mako 服务器扩展,在应用启动时作为 Lua 脚本加载和运行。
$ mkdir gpiotst$ nano gpiotst/.preload
将以下内容复制到Nano 编辑器中并保存文件:
-- Load periphery.so and access the LED interfacelocal LED = require("periphery").LEDlocal function doled() local led = LED("led0") -- Open LED led0 trace"Turn LED on" led:write(true) -- Turn on LED (set max brightness) ba.sleep(3000) -- 3 seconds trace"Turn LED off" led:write(false) -- Turn off LED (set zero brightness) led:close()endba.thread.run(doled) -- Defer execution -- to after Mako has started
上面的 Lua 代码使用你编译并包含在 Mako 服务器中的 Lua-periphery 库控制树莓派 LED。该脚本定义了一个名为doled
的函数来控制 LED。该脚本首先使用 Luarequire
函数加载periphery
库(共享库periphery.so)。返回的数据是一个包含所有 GPIO API 函数的Lua 表。但是,你只需要 LED API,你可以通过在调用require
后附加.LED
来直接访问它。接下来,代码定义了一个名为doled
的函数,它执行以下操作:
periphery
库中的LED
函数,并将字符串led0
传给它,打开树莓派主 LED,识别为led0
。将消息Turn LED on
打印到跟踪(控制台)。通过调用 LED 对象上的write
方法并将布尔值true
传递给它来激活 LED,该值设置 LED 的最大亮度。通过调用ba.sleep(3000)
等待 3 秒。将消息Turn LED off
打印到跟踪。通过调用 LED 对象上的write
方法并将布尔值false
传递给它来停用 LED,这会将 LED 的亮度设置为零。通过调用 LED 对象上的close
函数关闭LED
。在.preload
脚本的末尾,doled
函数作为参数传递给ba.thread.run
函数。这允许将doled
函数的执行推迟到 Mako 服务器启动之后。
要启动gpiotst
应用,请按如下方式运行 Mako 服务器:
$ mako -l::gpiotst
控制台中打印以下文本:
Opening LED:opening "brightness": Permission denied.
访问 GPIO 需要 root 访问权限,因此按CTRL+C
停止服务器并重新启动 Mako 服务器,如下所示:
$ sudo mako -l::gpiotst
现在树莓派 LED 亮起 3 秒。成功!
Lua 解锁 IoT在本入门教程中,你学习了如何编译 Mako 服务器,包括 GPIO Lua 模块,以及如何编写用于打开和关闭树莓派 LED 的基本 Lua 脚本。在以后的文章中,我将在本文的基础上进一步介绍 IoT 功能。
同时,你可以通过阅读它的文档来更深入地研究 Lua-periphery GPIO 库,以了解有关功能以及如何将其与不同外设一起使用的更多信息。要充分利用本教程,请考虑关注交互式 Mako Server Lua 教程以更好地了解 Lua、Web 和 IoT。编码愉快!
标签:最近更新
- 今日热门!用 Lua 控制你的树莓派2023-06-09
- 2300多人涉刑事,啥罪?2023-06-09
- 邮储银行:副行长牛新庄任职资格获批 环球简讯2023-06-09
- 23深铁03票面利率为3.1000%2023-06-09
- 热消息:花样营销失灵,极狐等待华为“开药”?2023-06-09
- 【天天速看料】青岛节能挑战赛落幕!一汽奔腾NAT实测满电续航超400km2023-06-09
- 天天快看点丨京津冀“3+N”联盟关节骨水泥类医用耗材集中带量采购开标 平均降价83.13%2023-06-09
- 天天即时看!20年“老慢支”顽疾竟是肺内古董在作祟2023-06-09
- 寻文化根脉叙一家亲情 两岸少数民族文化交流活动落幕2023-06-09
- 114租房网溧水 溧水114门面租房信息个人)_天天看热讯2023-06-09
- 爱卡途观论坛 途观车主论坛2023-06-09
- 圣堂刺客出装 圣堂刺客出装铭文 当前速看2023-06-09
- 上坡挂几档(自动挡上坡挂几档) 天天快资讯2023-06-09
- 雨声的古诗有哪些 4.表达“晚上无聊听雨”的诗句有哪些 聚焦2023-06-09
- 全球简讯:陕西有二本院校排名 其他信息:2023-06-09
- 兰石化单招考什么内容录取准备些 天天滚动2023-06-09
- 全球微头条丨广汽集团曾庆洪:中国汽车市场将保持微增长 想“找死”的企业就早点降价2023-06-09
- 新劲刚:特定股东彭波拟减持不超1.69%公司股份-天天速读2023-06-09
- 2023年气候债券倡议组织年会亚太区域峰会2023-06-09
- 广州石化增产高附加值注塑料_环球速讯2023-06-09
- 依稀是什么意思韩语_依稀是什么意思 全球简讯2023-06-09
- 仇晓简介(仇晓是谁的情人仇晓是杨正午的情人节)|天天观速讯2023-06-09
- 地方税务局网站(地方税务局网上办税大厅)2023-06-09
- 朝阳多个小区即将进行拆迁旧改!多地拆迁问题官方也答复了!_天天速看2023-06-09
- 一汽解放:5月销量21756辆 世界热闻2023-06-09
- 环球信息:亿纬锂能:孙公司拟在匈牙利投资建设乘用车大圆柱电池项目2023-06-09
- 每日看点!雨声的古诗有哪些 4.表达“晚上无聊听雨”的诗句有哪些2023-06-09
- 时空科技:公司未开展热点题材涉及的“空间计算”业务及技术研发2023-06-09
- 特斯拉做到了!减少55吨二氧化碳当量不在话下2023-06-09
- 跨界造车者,如今怎样了? 观热点2023-06-09