成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用 Lua 控制你的樹莓派

系統 Linux 開發
學習如何使用 Lua 編程語言為物聯網(IoT)設備編程,并與樹莓派上的通用輸入/輸出(GPIO)引腳互動。

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 停止服務器。

IoT 和 Lua

現在 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 interface
local LED = require('periphery').LED
local 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()
end
ba.thread.run(doled) -- Defer execution
                     -- to after Mako has started

上面的 Lua 代碼使用你編譯并包含在 Mako 服務器中的 Lua-periphery 庫控制樹莓派 LED。該腳本定義了一個名為 doled 的函數來控制 LED。該腳本首先使用 Lua require 函數加載 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。編碼愉快!

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2022-03-29 12:40:35

Linux樹莓派

2019-03-24 20:30:18

樹莓派Linux

2019-03-12 18:33:57

樹莓派Linux

2020-07-16 21:00:05

樹莓派Kubernetes集Linux

2017-10-30 16:12:30

DockerServerless樹莓派

2019-03-31 08:00:02

樹莓派更新樹莓派 Linux

2021-03-29 21:24:40

樹莓派Linux

2019-03-26 09:00:43

樹莓派編程Linux

2017-10-09 09:33:55

2019-03-23 19:33:14

樹莓派Linux操作系統

2022-02-11 09:24:05

樹莓派OpenWrt固定IP服務

2021-06-15 15:00:08

Cockpit樹莓派Linux

2021-03-17 10:16:39

樹莓派音樂系統Linux

2018-10-12 11:20:20

樹莓派NAS Linux

2023-07-05 18:50:01

樹莓派Linux

2019-03-28 18:51:52

樹莓派Linux編程語言

2023-03-09 11:35:40

2020-03-17 18:25:22

樹莓派Linux教程

2019-04-11 11:40:32

樹莓派編程語言Linux

2023-03-21 17:06:24

樹莓派路由器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久国产一区二区三区 | heyzo在线| 成人精品一区二区三区中文字幕 | 激情久久网 | 久久性 | 成人h视频在线 | 国产一区二区影院 | av一区二区在线观看 | 午夜无码国产理论在线 | 久久小视频 | 国产一二三区免费视频 | 精品国产一区二区三区久久久久久 | 91高清视频在线观看 | 日韩在线播放网址 | 久久另类视频 | 在线观看一区 | 偷拍自拍网址 | 国产三级一区二区 | 日韩天堂av| 中文字字幕一区二区三区四区五区 | 在线国产视频 | 国产在线一级片 | 国产一级免费视频 | 色黄网站 | 免费黄色的视频 | 日本三级电影免费 | 国产美女视频黄 | 国产精品一区在线播放 | 国产在线观看一区二区三区 | 日韩在线中文 | 亚洲电影一区二区三区 | 亚洲欧美日韩电影 | 自拍视频网 | 亚洲精品日日夜夜 | 毛片视频网站 | 国产一区二区三区四区五区加勒比 | 久久视频精品 | 中文字幕成人 | 亚洲风情在线观看 | 亚洲在线视频 | 日本在线免费视频 |