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 
看到如下结果

使用逻辑分析仪测量

基本一致。










