用文件方式操作gpio,写了两种操作文件的方法,但是shell命令方式有点问题,os直接操作文件方式如下:
package main
import (
"fmt"
"os"
"os/exec"
"time"
)
const filename = "/sys/class/gpio/gpio131/value"
//调用shell写文件方式
func cmdRun(v byte) {
command := "echo " + fmt.Sprintf("%d", v) + " > " + filename
fmt.Println(command)
cmd := exec.Command("/bin/sh", command)
err := cmd.Run()
if err != nil {
fmt.Println(err)
}
}
//os直接写文件方式
func osRun(v byte) {
file, err := os.OpenFile(filename, os.O_WRONLY, 0666)
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
_, err = file.WriteString(fmt.Sprintf("%d", v))
if err != nil {
fmt.Println(err)
}
}
func pinSet(v byte) {
// cmdRun(v) 暂时有问题,待调试
osRun(v)
}
func main() {
for {
pinSet(1)
time.Sleep(time.Second)
pinSet(0)
time.Sleep(time.Second)
}
}
最近编辑记录 kekemuyu (2019-05-20 00:27:19)
在线
这也就能点灯吧,稍微复杂一点APP,内存就爆了吧
离线
这也就能点灯吧,稍微复杂一点APP,内存就爆了吧
在线
zero.licheepi文档中操作gpio的方法,放在这里备用
使用sysfs操作GPIO的例子:
#echo 192 > /sys/class/gpio/export #导出 PG0, GREEN
#ls /sys/class/gpio/
export gpio192 gpiochip0 unexport
#ls /sys/class/gpio/gpio192/
active_low direction subsystem/ value device/ power/ uevent
#echo "out" > /sys/class/gpio/gpio192/direction #设置为输出
#echo 0 > /sys/class/gpio/gpio192/value #亮灯
#echo 1 > /sys/class/gpio/gpio192/value #灭灯
#echo "in" > /sys/class/gpio/gpio192/direction #设置为输入
#cat /sys/class/gpio/gpio192/value #读取电平
0
在线
为什么PG0 就是192?
zero.licheepi文档中操作gpio的方法,放在这里备用
使用sysfs操作GPIO的例子:#echo 192 > /sys/class/gpio/export #导出 PG0, GREEN #ls /sys/class/gpio/ export gpio192 gpiochip0 unexport #ls /sys/class/gpio/gpio192/ active_low direction subsystem/ value device/ power/ uevent #echo "out" > /sys/class/gpio/gpio192/direction #设置为输出 #echo 0 > /sys/class/gpio/gpio192/value #亮灯 #echo 1 > /sys/class/gpio/gpio192/value #灭灯 #echo "in" > /sys/class/gpio/gpio192/direction #设置为输入 #cat /sys/class/gpio/gpio192/value #读取电平 0
离线
32 * (G- A) + 0=192
离线