电子说
Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。
Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。
这是本次开发板开箱和系统烧录视频
https://www.bilibili.com/video/BV1Cu4y1m7Lj/
本次使用的开发板有1G的Ram,运行golang不成问题。通过香橙派的使用手册,可以看到系统默认引出的led有两个,实测MangoPi MQ Quad可以使用的led为/sys/class/leds/green:status/brightness。
可以在命令行终端里输入以下命令控制led,0为灭,1为亮
echo 0 > /sys/class/leds/green:status/brightness
然后,就可以用golang来实现点灯程序啦。
新建一个main.go文件,并输入以下内容:
package main
import (
"fmt"
"os"
"time"
)
func main() {
ledFile := "/sys/class/leds/green:status/brightness"
openFile, e := os.OpenFile(ledFile, os.O_RDWR, 777)
if e != nil {
fmt.Println(e)
} else {
fmt.Println("File open, program start!")
for {
time.Sleep(1 * time.Second)
fmt.Println("turn on led!")
openFile.WriteString("1n")
time.Sleep(1 * time.Second)
fmt.Println("turn off led!")
openFile.WriteString("0n")
}
}
openFile.Close()
}
这就是用Golang点灯的程序 ,原理也很简单,通过Golang的os库 ,打开/sys/class/leds/green:status/brightness
文件,然后不断地写入1和0即可,经测试 ,若完全连续写入,开关的频率可达172Khz。
但是由于程序线程并不能一直强行占用cpu运行,所以使用这种方式控制io,不能实现呼吸灯的效果。但是用来控制继电器什么的,已经完全足够了。
Golang也支持交叉编译 ,在x86主机上使用以下命令编译,并通过scp命令上传到开发板上运行即可。
编译命令
GOOS=linux GOARCH=arm64 GOARM=7 go build -o main main.go
上传命令
scp main orangepi@192.168.50.60:~/
以下是程序运行截图
全部0条评论
快来发表一下你的评论吧 !