GPIO
可以先看下树莓派引脚编号,来源 https://shumeipai.nxez.com/raspberry-pi-pins-version-40
编程方法:C语言使用 wiringPI 库来进行编程,python可使用PRi.GPIO提供的API进行编程
C语言的下次再试,python的库已经装好了的,无需安装,可以直接用,这里我们先试试,先新建一个文件夹吧
mkdir GPIO
cd GPIO/
然后新建两个文件
touch led.py
touch pin_dic.py
pin_dic.py里面主要存一些相关的引脚信息
vi pin_dic.py
将下面内容复制进去(这里用的是物理引脚编码的方法)
pin_dic = {
'SDA':3,
'SLC':5,
'G4' :7,
'G17':11,
'G27':13,
'G22':15,
'MOSI':19,
'MISO':21,
'SCL':23,
'IDSD':27,
'G5':29,
'G6':31,
'G13':33,
'G19':35,
'G26':37,
'TXD':8,
'RXD':10,
'G18':12,
'G23':16,
'G24':18,
'G25':32,
'CE0':24,
'CE1':26,
'IDSC':28,
'G12':32,
'G16':36,
'G20':38,
'G21':40}
之后就可以编写代码了
vi led.py
输入下面内容
import RPi.GPIO as GPIO
import time
from pin_dic import pin_dic
if __name__ == "__main__":
pin_sig = pin_dic['G17']
GPIO.setmode(GPIO.BOARD) # Numbers GPIOs by physical location
GPIO.setup(pin_sig, GPIO.OUT) # Set LedPin's mode is output
GPIO.output(pin_sig, GPIO.HIGH) #
while True:
print('...Led on')
GPIO.output(pin_sig, GPIO.HIGH) # led on
time.sleep(1)
print('Led off...')
GPIO.output(pin_sig, GPIO.LOW) # led off
time.sleep(1)
这里可以 看出是让led亮一次熄灭一次,如果没有led就拿逻辑分析仪看吧,或者直接看打印信息hh,输入
python3 led.py
打印结果如下
使用逻辑分析仪测量
差不多了
PWM部分
pwm这里不做详细介绍,我会在之后的其他内容中进行介绍,pwm可以理解为变频的方波,所以我们可以用它做一些控制上的应用。
pwm比较重要的就是周期和脉宽时间了,我们平时用也主要是这些内容。
这里我们设置一个pwm试试
还是新建一个文件
touch pwm.py
vi pwm.py
复制以下内容进入(注意这里引脚用的是BCD编码),可以看到就是修改频率和占空比进行调节
import RPi.GPIO as GPIO
if __name__ == '__main__':
freq = 100
start = 0
GPIO.setmode(GPIO.BCM)
GPIO.setup(19, GPIO.OUT)
pwm = GPIO.PWM(19, 100)
pwm.start(50)
try:
freq = int(input("输入PWM频率 "))
pwm.ChangeFrequency(freq)
while True:
pwm.ChangeDutyCycle(50)
finally:
pwm.stop()
GPIO.cleanup()
开始运行代码
python3 pwm.py
看到如下结果
使用逻辑分析仪测量
基本一致。