【芒果派MangoPi MQ Quad】使用Golang点灯

电子说

1.3w人已加入

描述

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来实现点灯程序啦。

二、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:~/

以下是程序运行截图

芒果派


审核编辑 黄宇
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分