// This program achieves LED blink on Raspberry Pi with Go lang.
// This is implemented with hard-coding and uses only main function.
package main
import (
"fmt"
"os"
"time"
)
func main() {
// Initialize GPIO25
fmt.Println("Initialize GPIO25")
fd, err := os.OpenFile("/sys/class/gpio/export", os.O_WRONLY|os.O_SYNC, 0666)
if err != nil {
fmt.Println("open /sys/class/gpio/export fails")
fmt.Println(err)
return
}
fmt.Fprint(fd, "25")
fd.Close()
// Check iinitialization result
fmt.Println("Check initialization result")
_, err = os.Stat("/sys/class/gpio/gpio25")
if err != nil {
fmt.Println("Export GPIO25 fails")
fmt.Println(err)
} else {
fmt.Println("Export GPIO25 succeeds")
}
// Set direction to out
fmt.Println("Set direction of GPIO25 to out")
fd, err = os.OpenFile("/sys/class/gpio/gpio25/direction", os.O_WRONLY|os.O_SYNC, 0666)
if err != nil {
fmt.Println("open /sys/class/gpio/gpio25/direction fails")
fmt.Println(err)
}
fmt.Fprint(fd, "out")
fd.Close()
// Start blink
fmt.Println("Start blink")
for i := 0; i < 20; i++ {
fd, err := os.OpenFile("/sys/class/gpio/gpio25/value", os.O_WRONLY|os.O_SYNC, 0666)
if err != nil {
fmt.Println("open /sys/class/gpio/gpio25/value fails")
fmt.Println(err)
}
if i%2 == 1 {
// Turn on LED
fmt.Fprint(fd, 1)
} else {
// Turn off LED
fmt.Fprint(fd, 0)
}
fd.Close()
time.Sleep(100 * time.Millisecond)
}
// End
fmt.Println("Start finalizing")
fd, err = os.OpenFile("/sys/class/gpio/gpio25/value", os.O_WRONLY|os.O_SYNC, 0666)
if err != nil {
fmt.Println("open /sys/class/gpio/gpio25/value fails")
fmt.Println(err)
}
// Turn off LED
fmt.Println("Turn off LED")
fmt.Fprint(fd, 0)
fd.Close()
fd, err = os.OpenFile("/sys/class/gpio/unexport", os.O_WRONLY|os.O_SYNC, 0666)
if err != nil {
fmt.Println("open /sys/class/gpio/unexport fails")
fmt.Println(err)
return
}
fmt.Fprint(fd, "25")
fd.Close()
fmt.Println("End finalizing")
}
Raspberry Pi with Go lang
相關文章
- [Raspberry PI 4B]where to find Rev num of a Raspberry PI 4B
- raspberry pi bookworm setting static ipWorm
- FreeBSD on Raspberry PI root, freebsd account password
- install java javac on kali linux, raspberry piJavaLinux
- Raspberry Pi 3簡明配置教程
- Raspberry Pi 400上安裝vscodeVSCode
- Raspberry Pi 4B 安裝 CentOS 8CentOS
- crontab on raspberry pi, full path, not relative path, is needed.
- PyCharm使用技巧:Raspberry Pi的遠端開發PyCharm
- FreeBSD on Raspberry PI,首次執行pkg update出現bootstrap errorbootError
- 利用Raspberry Pi搭建一個基於OpenMediaVault系統的NAS
- Raspberry PI:Shadowsocks+Polipo實現全域性科學上網
- Raspberry PI 3B:連線到 SSID 時出現問題
- 人工智慧入門與實戰 使用Raspberry Pi和Python演練人工智慧Python
- [Raspberry PI 4B]how to clone a 32 GB SD card to a 16GB SD?
- 張高興的 Raspberry Pi AI 開發指南:(一)Hailo-8 配置AI
- 記錄給樹莓派刷Raspberry Pi OS(Raspbian)系統的配置流程樹莓派
- 電子創客案例手冊 Arduino和Raspberry Pi電子製作實戰UI
- Raspberry pi 3b+ 安裝dotnet5 VSCode Remote-SSH 遠端開發VSCodeREM
- Azure中將 Raspberry Pi 聯機模擬器連線到 Azure IoT 中心 (Node.js)Node.js
- [GO-LANG] Why is my trivial program such a large binary?Go
- 張高興的 Raspberry Pi AI 開發指南:(二)使用 Python 和 HailoRT 進行實時目標檢測AIPython
- 張高興的 Raspberry Pi AI 開發指南:(三)將自定義模型編譯為 Hailo NPU 的 .hef 模型AI模型編譯
- 第一章 Go lang開發環境搭建Go開發環境
- SAP PI
- 層次分明井然有條,Go lang1.18入門精煉教程,由白丁入鴻儒,Go lang包管理機制(package)EP10GoPackage
- go lang學習筆記——channel機理及排程理解Go筆記
- 實證與虛無,抽象和具象,Go lang1.18入門精煉教程,由白丁入鴻儒,Go lang介面(interface)的使用EP08抽象Go
- 我的樹莓派 Raspberry Pi Zero 2W 折騰筆記,記錄一些遇到的問題和解決辦法樹莓派筆記
- C語言中pi=&j和*pi=j的區別C語言
- Go Lang 使用go mod匯入本地包和第三方包飄紅解決方法Go
- JavaScript Math.PIJavaScript
- SAP PI入門
- 談談SAP PI 的功能和PI顧問的特點
- Raspberry:Wiringpi的安裝及使用
- java.lang.NoSuchMethodError: javax.servlet.ServletContext.getContextPath()Ljava/lang/String;JavaErrorServletContext
- java.lang.ClassNotFoundExceptionJavaException
- HTML lang 屬性HTML