跳到主要内容

简介

pinpong 库是一套控制开源硬件主控板的 Python 库,基于 Firmata 协议并兼容 MicroPython 语法,借助于 pinpong 库,直接用 Python 代码就能给各种常见的开源硬件编程

用法

引脚序号

pinpongPIN NAMEPin#Pin#PIN NAMEpinpong
0GP0
1
40
VBUS
1GP1
2
39
VSYS
GND
3
38
GND
2GP2
4
37
3V3_EN
3GP3
5
36
3V3(OUT)
4GP4
6
35
5GP5
7
34
GND
8
33
GND
6GP6
9
32
GP2727
7GP7
10
31
GP2626
8GP8
21
30
RUN
9GP9
12
29
GP2222
GND
13
28
GND
10GP10
14
27
GP2121
11GP11
15
26
GP2020
12GP12
16
25
GP1919
13GP13
17
24
GP1818
GND
18
23
GND
14GP14
19
22
GP1717
15GP15
20
21
GP1616
 
25GP25
LED

引脚复用配置

注意,Duo 的很多引脚功能是复用的,在使用 pinpong 库来控制 Duo 各引脚的功能时,要先确认一下引脚当前的状态是不是自己需要的功能, 如果不是,可以用duo-pinmux命令来切换为所需功能

具体方法请参考: 引脚复用配置

GPIO

板载 LED 闪烁

这是一个让 Duo 板载 LED 闪烁的例子,可以直接在 Duo 中新建 blink.py 文件,或者在电脑中创建好之后通过 ssh 上传到 Duo 中。

提示

LED 引脚的序号是 25,如果使用其他引脚外接 LED,序号请参考上面的表格

blink.py 文件的内容:

# -*- coding: utf-8 -*-

# 实验效果:控制 Milk-V Duo 板载 LED 灯一秒闪烁一次

import time
from pinpong.board import Board,Pin

Board("MILKV-DUO").begin() #初始化,选择板型,不输入板型则进行自动识别

led = Pin(Pin.D25, Pin.OUT) #引脚初始化为电平输出

while True:
led.value(1) #输出高电平
print("1") #终端打印信息
time.sleep(1) #等待1秒 保持状态

led.value(0) #输出低电平
print("0") #终端打印信息
time.sleep(1) #等待1秒 保持状态

在 Duo 的终端中执行 python blink.py 命令:

[root@milkv-duo]~# python blink.py
milkv-duo

__________________________________________
| ____ _ ____ |
| / __ \(_)___ / __ \____ ____ ____ _ |
| / /_/ / / __ \/ /_/ / __ \/ __ \/ __ `/ |
| / ____/ / / / / ____/ /_/ / / / / /_/ / |
|/_/ /_/_/ /_/_/ \____/_/ /_/\__, / |
| v0.5.2 Designed by DFRobot /____/ |
|__________________________________________|

1
0
1
0

会看到 LED 间隔 1 秒闪烁。

注意: 当前 Duo 的默认固件上电后 LED 会自动闪烁,这个是通过开机脚本实现的,在测试该 blink 例子的时候,需要将 LED 闪烁的脚本禁用,在 Duo 的终端中执行:

mv /mnt/system/blink.sh /mnt/system/blink.sh_backup && sync

也就是将 LED 闪烁脚本改名,重启 Duo 后,LED 就不闪了 测试完我们 blink 程序后,如果需要恢复 LED 闪烁脚本,再将其名字改回来,重启即可:

mv /mnt/system/blink.sh_backup /mnt/system/blink.sh && sync

其他示例

请参考: github

  • carbonfix