一直心痒于树莓派能玩硬件,又看不上树莓派的性能。主要是怕买了吃灰。直到网上挖掘一番,收到了这个神器——基于逸宸电子开发的总线适配器!

工业级高速USB转SPI I2C PWM GPIO UART CAN接口电压可软件配置​item.taobao.com

没错,就是这个物件,一款USB转GPIO等常见接口的总线适配器,据官网介绍还有CAN等接口。听上去牛皮的不得了。

我是硬件小白,本着不耻下问的态度疯狂的询问客服:这到底能干嘛,我要点个灯应该怎么办,有没有教程。。。。。。结果,客服回复:自行百度!

唉!没法好好沟通了。我只能自行解决了。

在这篇文章,我介绍了点亮发光二极管的例子——硬件界的Hello World(显然这是我自行百度学来的,鲁迅说的:求人不如求自己!哈哈):

myastrotong:玩转GPIO之点灯(非树莓派)​zhuanlan.zhihu.com

为了继续玩转高级点灯大法,我搜索到这么一款产品,三色信号灯。他家的信号灯同样主要针对树莓派,但这么简单的电路,我身为小白也看得懂,那就买来点灯吧!!

LED交通信号灯模块 5V 红绿灯发光模块 anrduino 适用于树莓派​detail.tmall.com

以下是我自己琢磨的信号灯点灯的教程,谁叫我没买树莓派呢,没有社区的支援,我就自己动手呗。

查询官方文档,总线适配器的各个GPIO的定义如下:

把总线适配器的USB插到电脑端,然后取四根杜邦线,一根GND接地,三根接P8、P9、P10口并分别接到信号灯的G、Y、R端。

接好以后的效果图如下:

然后,Python走起来!

例1 三色灯顺次亮

程序如下,这段程序的效果就是:红、黄、绿灯循环亮、灭(知乎把Python程序的缩进全吞了,我也没办法了,大家重在理解吧)。

from ctypes import *
import platform
from time import sleep
from usb_device import *
from usb2gpio import *if __name__ == '__main__':DevHandles = (c_int * 20)()DevHandle = 0# Scan deviceret = USB_ScanDevice(byref(DevHandles))if(ret == 0):print("No device connected!")exit()else:print("Have %d device connected!"%ret)DevHandle = DevHandles[0]#选择设备0# Open device 打开设备ret = USB_OpenDevice(DevHandle)if(bool(ret)):print("Open device success!")else:print("Open device faild!")exit()# Get device infomation 获取设备信息USB2XXXInfo = DEVICE_INFO()USB2XXXFunctionString = (c_char * 256)()ret = DEV_GetDeviceInfo(DevHandle,byref(USB2XXXInfo),byref(USB2XXXFunctionString))if(bool(ret)):print("USB2XXX device infomation:")print("--Firmware Name: %s"%bytes(USB2XXXInfo.FirmwareName).decode('ascii'))print("--Firmware Version: v%d.%d.%d"%((USB2XXXInfo.FirmwareVersion>>24)&0xFF,(USB2XXXInfo.FirmwareVersion>>16)&0xFF,USB2XXXInfo.FirmwareVersion&0xFFFF))print("--Hardware Version: v%d.%d.%d"%((USB2XXXInfo.HardwareVersion>>24)&0xFF,(USB2XXXInfo.HardwareVersion>>16)&0xFF,USB2XXXInfo.HardwareVersion&0xFFFF))print("--Build Date: %s"%bytes(USB2XXXInfo.BuildDate).decode('ascii'))print("--Serial Number: ",end=' ')for i in range(0, len(USB2XXXInfo.SerialNumber)):print("%08X"%USB2XXXInfo.SerialNumber[i],end='')print("")print("--Function String: %s"%bytes(USB2XXXFunctionString.value).decode('ascii'))else:print("Get device infomation faild!")exit()# 设置GPIO输入输出电压,只针对带可变电压输出版本的适配器有用,其他适配器默认是3.3VDEV_SetPowerLevel(DevHandle,POWER_LEVEL_3V3)t=1GPIO_SetInput(DevHandle,0x0100,0) #关闭P8口GPIO_SetInput(DevHandle,0x0200,0) #关闭P9口 GPIO_SetInput(DevHandle,0x0400,0) #关闭P10口 try:while (1):if t==1: GPIO_SetOutput(DevHandle,0x0100,1) #P8口GPIO_Write(DevHandle,0xFFFF,0xFFFF) sleep(3)GPIO_SetInput(DevHandle,0x0100,0) #关闭P8口 t=2if t==2:GPIO_SetOutput(DevHandle,0x0200,1) #P9口GPIO_Write(DevHandle,0xFFFF,0xFFFF) sleep(2)GPIO_SetInput(DevHandle,0x0200,0) #关闭P9口 t=3if t==3:GPIO_SetOutput(DevHandle,0x0400,1) #P10口GPIO_Write(DevHandle,0xFFFF,0xFFFF) sleep(4) GPIO_SetInput(DevHandle,0x0400,0) #关闭P10口 t=1except KeyboardInterrupt:pass

含缩进的关键代码如下:

以下视频演示的就是三个灯循环点亮。效果如下:

GPIO点亮三色信号灯https://www.zhihu.com/video/1224465101992230912

例2:三色灯随机亮

以上程序演示了GPIO控制三色信号灯的基本流程。基于这个程序,我改成一个三色信号灯随机亮灯的猜灯游戏(哄小朋友神器),程序如下(知乎把Python程序的缩进全吞了,我也没办法了,大家重在理解吧):

from ctypes import *
import platform
from time import sleep
from usb_device import *
from usb2gpio import *import randomif __name__ == '__main__':DevHandles = (c_int * 20)()DevHandle = 0# Scan deviceret = USB_ScanDevice(byref(DevHandles))if(ret == 0):print("No device connected!")exit()else:print("Have %d device connected!"%ret)DevHandle = DevHandles[0]#选择设备0# Open device 打开设备ret = USB_OpenDevice(DevHandle)if(bool(ret)):print("Open device success!")else:print("Open device faild!")exit()# Get device infomation 获取设备信息USB2XXXInfo = DEVICE_INFO()USB2XXXFunctionString = (c_char * 256)()ret = DEV_GetDeviceInfo(DevHandle,byref(USB2XXXInfo),byref(USB2XXXFunctionString))if(bool(ret)):print("USB2XXX device infomation:")print("--Firmware Name: %s"%bytes(USB2XXXInfo.FirmwareName).decode('ascii'))print("--Firmware Version: v%d.%d.%d"%((USB2XXXInfo.FirmwareVersion>>24)&0xFF,(USB2XXXInfo.FirmwareVersion>>16)&0xFF,USB2XXXInfo.FirmwareVersion&0xFFFF))print("--Hardware Version: v%d.%d.%d"%((USB2XXXInfo.HardwareVersion>>24)&0xFF,(USB2XXXInfo.HardwareVersion>>16)&0xFF,USB2XXXInfo.HardwareVersion&0xFFFF))print("--Build Date: %s"%bytes(USB2XXXInfo.BuildDate).decode('ascii'))print("--Serial Number: ",end=' ')for i in range(0, len(USB2XXXInfo.SerialNumber)):print("%08X"%USB2XXXInfo.SerialNumber[i],end='')print("")print("--Function String: %s"%bytes(USB2XXXFunctionString.value).decode('ascii'))else:print("Get device infomation faild!")exit()# 设置GPIO输入输出电压,只针对带可变电压输出版本的适配器有用,其他适配器默认是3.3VDEV_SetPowerLevel(DevHandle,POWER_LEVEL_3V3)t=1GPIO_SetInput(DevHandle,0x0100,0) #关闭P8口GPIO_SetInput(DevHandle,0x0200,0) #关闭P9口 GPIO_SetInput(DevHandle,0x0400,0) #关闭P10口 try:while (1):if t==0: GPIO_SetOutput(DevHandle,0x0100,1) #P8口GPIO_Write(DevHandle,0xFFFF,0xFFFF) sleep(3)GPIO_SetInput(DevHandle,0x0100,0) #关闭P8口 #t=2t=random.randint(1,3)%3print(t)if t==0 :t=1if t==1:GPIO_SetOutput(DevHandle,0x0200,1) #P9口GPIO_Write(DevHandle,0xFFFF,0xFFFF) sleep(2)GPIO_SetInput(DevHandle,0x0200,0) #关闭P9口 t=random.randint(1,3)%3print(t)if t==1 :t=2if t==2:GPIO_SetOutput(DevHandle,0x0400,1) #P10口GPIO_Write(DevHandle,0xFFFF,0xFFFF) sleep(4) GPIO_SetInput(DevHandle,0x0400,0) #关闭P10口 t=random.randint(1,3)%3print(t)if t==2 :t=0except KeyboardInterrupt:pass

含缩进的关键代码如下:

随机亮灯的效果如下:

三色信号灯随机点亮https://www.zhihu.com/video/1224468077506576384

以上两个程序,示例了基于逸宸电子开发的总线适配器进行GPIO点信号灯的基本方法。

第一个例子是基础点灯教程,第二个例子是随机点灯教程。很短的程序就可以用GPIO把灯点起来。

官方不愿搭理我这个小白,我只能自己动手摸索,特意写出来这个教程给大家来集思广益,毕竟这个产品还是很好用的。希望以后我能继续开发一些厉害的程序,也希望后续有人能机遇这个硬件提供更多的案例,我也能学习学习(我怎么觉得我最终还是得买个树莓派吃灰)。

树莓派 ubuntu gpio_玩转GPIO之点亮三色信号灯(非树莓派)相关推荐

  1. wringPi 初始化GPIO 为上拉_玩转GPIO之PWM点亮呼吸灯(非树莓派)

    在这篇文章,我介绍了基于逸宸电子开发的总线适配器来点亮LED灯的基本方法! myastrotong:玩转GPIO之点灯(非树莓派)​zhuanlan.zhihu.com 这款总线适配器的介绍见这里: ...

  2. 树莓派 ubuntu gpio_如何给树莓派安装操作系统

    新的树莓派拿到手中,你迫不及待的要把玩.别急,这可不像你买的Macbook开机就能用,想要顺利启动树莓派,还要经历五个步骤. 准备一张micro SD卡 把操作系统写入SD卡 连接显示器等外围设备 通 ...

  3. 树莓派 ubuntu gpio_树莓派学习笔记(一)输入输出GPIO

    硬件:树莓派3B+ 系统:ubuntu mate #RPI.GPIO模块使用 RPI.GPIO提供了一个在Raspberry中控制GPIO的类 #它是运行在基于Linux核心中,由于无法预测系统资源使 ...

  4. 树莓派 ubuntu gpio_树莓派自动温控风扇

    某天忘记把树莓派的电源断掉,然后第二天早上被它的风扇声音吵醒!! 严格来说在温度不高的时候风扇没必要打开,好在树莓派最不怕的就是各种折腾了. 动手把风扇改成温控的. 描述 raspbian的/sys/ ...

  5. 【iCore3 双核心板_FPGA】例程二:GPIO输出实验——点亮三色LED

    实验指导书及代码包下载: http://pan.baidu.com/s/1boiOJBT iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  6. 华为4g模块测试软件,华为ME909 4G LTE模块在树莓派+Ubuntu Mate平台的联网演示

    华为ME909 4G LTE模块在树莓派+Ubuntu Mate平台的联网演示 华为ME909 4G LTE模块在树莓派+Ubuntu Mate平台的联网演示 关键词:华为  HUAWEI  ME90 ...

  7. 树莓派siri homekit_树莓派可以这样玩

    树莓派是一个是基于Linux的单片机电脑,现在树莓派不仅可以装Linux系统,也可以安装Windows 系统.即树莓派就是一台小电脑,可以把它当作一个开发板进行学习或者玩耍. 树莓派可以进行深度开发, ...

  8. 树莓派开始,玩转Linux12:Linux真身

    树莓派开始,玩转Linux12:Linux真身 我们经常用"Linux"来指代整个Linux操作系统.但对于不同人来说,"Linux"指代的含义又有所区别.说到 ...

  9. 树莓派~Ubuntu~OpenCV

    一.安装OpenCV 直接按这个帖子来 ubuntu16.04安装opencv3.4.1教程 这个帖子带了如何编写测试例程的内容 在树莓派Ubuntu Mate中安装OpenCV

  10. ubuntu上玩3D,把状态栏面板栏给玩没了

    ubuntu上玩3D,把状态栏面板栏给玩没了,整个界面里只有几个桌面的图标,上下任务栏都没了,按照网上的一些方法,结束gnome-panle,再重新加载,结果,两个面板回来了,不过是空空的,什么也没有 ...

最新文章

  1. 如何设计一款电商产品?
  2. Eureka VS Zookeeper
  3. 转 graphviz工具及其原理
  4. python第三方库numpy-Python第三方库之openpyxl(2)
  5. 打印机可以打印不能扫描怎么弄_为什么打印机可以通过电脑打印可不能扫描呢...
  6. ie传递给系统调用的数据区域太小_【Linux系列】系统调用
  7. HDU - 6749 Mosquito(二分+状态压缩+最大流)
  8. Redis 它是什么?它用来做什么?它的优势与短板如何?
  9. Windows 中自定义Error Codes
  10. 阿里取消周报!但普通数据人的周报、月报焦虑,谁来拯救?
  11. 闭包,作用域链,垃圾回收,内存泄露
  12. C++设计模式(全网最通俗易懂的设计模式进阶)
  13. ftp一句話download
  14. 网络安全实验8 基于网络入侵检测系统
  15. 0x02 如何安装【XPS 查看器】?超简单哦!
  16. 基于物联网的多传感器远程温度监测系统
  17. 惠普台式计算机系列,惠普星系列590-051 台式机 拆解
  18. centos7下解压rar文件
  19. 如何获取微信小店页面路径
  20. Qt for winrt结合Winrt API开发

热门文章

  1. Java泛型入门篇: 泛型类、泛型接口以及泛型方法
  2. vue实现导出excel,pdf功能
  3. [原创]Javascript 利用mousetrap.js进行键盘事件操作
  4. vue前端实现批量导出
  5. mobilenet cpu 加速_UP手游加速器苹果版下载安装-UP手游加速器iOS苹果版下载
  6. Pycocotools 报error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Bui
  7. 添加打印机无法搜索计算机,电脑无法搜索添加局域网打印机怎么办
  8. 射频识别技术漫谈(1)——概念、分类
  9. 地图比例尺与空间分辨率之间的关系_地图比例尺与分辨率
  10. 有哪些比较好用的开源项目管理工具?