Go 是一個開源的編程語言,它能讓構(gòu)造簡單、可靠且高效的軟件變得容易。
Go是從2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持開發(fā),后來還加入了Ian Lance Taylor, Russ Cox等人,并最終于2009年11月開源,在2012年早些時候發(fā)布了Go 1穩(wěn)定版本。現(xiàn)在Go的開發(fā)已經(jīng)是完全開放的,并且擁有一個活躍的社區(qū)。
這是本次開發(fā)板開箱和系統(tǒng)燒錄視頻
https://www.bilibili.com/video/BV1Cu4y1m7Lj/
一、命令行點燈
本次使用的開發(fā)板有1G的Ram,運行g(shù)olang不成問題。通過香橙派的使用手冊,可以看到系統(tǒng)默認(rèn)引出的led有兩個,實測MangoPi MQ Quad可以使用的led為/sys/class/leds/green:status/brightness。
可以在命令行終端里輸入以下命令控制led,0為滅,1為亮
echo 0 > /sys/class/leds/green:status/brightness
然后,就可以用golang來實現(xiàn)點燈程序啦。
二、Golang點燈
新建一個main.go文件,并輸入以下內(nèi)容:
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即可,經(jīng)測試 ,若完全連續(xù)寫入,開關(guān)的頻率可達(dá)172Khz。
但是由于程序線程并不能一直強行占用cpu運行,所以使用這種方式控制io,不能實現(xiàn)呼吸燈的效果。但是用來控制繼電器什么的,已經(jīng)完全足夠了。
Golang也支持交叉編譯 ,在x86主機上使用以下命令編譯,并通過scp命令上傳到開發(fā)板上運行即可。
編譯命令
上傳命令
scp main orangepi@192.168.50.60:~/
以下是程序運行截圖
審核編輯 黃宇
-
芒果派
+關(guān)注
關(guān)注
0文章
11瀏覽量
84
發(fā)布評論請先 登錄
相關(guān)推薦
評論