golang 将LED与gobot连接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 将LED与gobot连接相关的知识,希望对你有一定的参考价值。

package main

import (
	"github.com/hybridgroup/gobot"
	"github.com/hybridgroup/gobot/api"
	"github.com/hybridgroup/gobot/platforms/firmata"
	"github.com/hybridgroup/gobot/platforms/gpio"
)

func main() {
	gbot := gobot.NewGobot()

	a := api.NewAPI(gbot)
	a.Start()

	firmataAdaptor := firmata.NewFirmataAdaptor("arduino", "/dev/ttyACM0")
	led11 := gpio.NewLedDriver(firmataAdaptor, "led11", "11")
	led12 := gpio.NewLedDriver(firmataAdaptor, "led12", "12")
	led13 := gpio.NewLedDriver(firmataAdaptor, "led13", "13")

	robot := gobot.NewRobot("bot-blink",
		[]gobot.Connection{firmataAdaptor},
		[]gobot.Device{led11, led12, led13},
	)

	gbot.AddRobot(robot)
	gbot.Start()
}

Android系统移植与驱动开发——第七章——LED驱动

LED驱动的实现原理

 技术分享

编写LED驱动:

测试LED驱动之前需要用USB数据线连接开发板,然后打开电源,成功启动之后,执行build.sh脚本文件编译和安装LED驱动,顺利则会自动连接

如果有多个设备文件将会在后来使用,则要通过指针变量cdev.list.prev和cdev.list.next指针变量连接,从而形成双向链接。

在创建设备文件时要注意:

Device_count表示建立设备文件的个数

Alloc_chrdv_region函数的第2个参数表示分配的起始设备号。

卸载Linux驱动的设备文件,需要依次调用device_destory、class_destory和unregister_chrdev_region方法

ARM控制LED的有三个寄存器,三个寄存器在内存中都有虚拟地址,向这些地址写入数据后,处理器会使用算法将虚拟地址映射为物理地址,并根据物理地址将数据写入相应的硬件端口。

驱动的设备文件。

控制LED有两种方式:

通过字符串控制LED—>file_operation.write

通过I/O命令控制LED—>file_operation.ioctl

LED驱动的模块参数

Moule_param_array(name,type,nump,perm)宏定义为LINUX驱动指定数组形式的模块参数。Name表示参数名,type表示数组元素的数据类型,nump表示存储数组长度的变量的指针,perm表示参数文件的访问权限。

 

编写测试I/O控制命令的通用程序,与设备文件交互的方式:直接写入字符串数据和I/O控制命令。直接向设备文件写入数据可以使用命令行方式来完成,也可以通过write函数来完成,但I/O命令只能通过ioctl发出。

一个完整的Linux驱动主要是由内部处理和硬件交互两部分组成,其中内部处理主要是指Linux驱动的装载、卸载、与设备文件相关的动作处理以及业务逻辑、与硬件交互主要是指通过函数与硬件中的寄存器进行数据交互

以上是关于golang 将LED与gobot连接的主要内容,如果未能解决你的问题,请参考以下文章

Android系统移植与驱动开发——第七章——LED驱动

.NET 与树莓派LED 数码管驱动模块——TM1638

LED显示屏和单片机是怎么串行连接的?

如何将字节发送到 USB 到并口以控制 LED?

工业圆形连接器功能与应用介绍

LabVIEW控制Arduino LED灯闪烁(基础篇—2)