树莓派可以认为是一个小主机,不过也不能简单的认为是个小主机,他也有和MCU评估板测试时的一样的便利性,也就是它的经典的40 PIN针脚。
以下是在官网找到的树莓派5的40 PIN针脚定义:
pinout可以看到输出的引脚定义:
sudo apt update sudo apt upgrade注意这个建议经常更新一下,有妙用;更新完成后就可以进行python环境的安装了:
sudo apt install python3 python3-pip通过以下命令查询一下:
python注意这样会直接进入python环境:
输入命令“quit()”推出环境,我们确认安装成功就可以了,后面我们需要编辑器进行python文件的编写。
我们这里先主要进行的是GPIO的输入和输出操作,实际上也是平常测试最喜欢的环节点灯,我们首先用到的是python编程,咱们打开VNC可以在界面中发现自带的编辑器:用哪个都可以,这里我们选用Thonny进行调试,这里我们用到的是RPI.GPIO库,本身树莓派系统就带有这个库,我们直接调用就可以,咱们先简单的联动一下,按键按下LED亮:
import RPi.GPIO as GPIO import time LED_PIN = 3 #LED KEY_PIN = 37 #KEY GPIO.setmode(GPIO.BOARD) GPIO.setup(LED_PIN, GPIO.OUT) GPIO.setup(KEY_PIN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) while True: key_status = GPIO.input(KEY_PIN) if key_status == GPIO.HIGH: GPIO.output(LED_PIN, True) print("LED ON") else: GPIO.output(LED_PIN, False) print("LED OFF") time.sleep(0.1)#delay 0.1s在测试的过程中就出现了引脚选择的问题,一开始我选的5脚作为按键的输入,注意这里:
3脚和5脚都作为了SPI通信的复用功能,内部硬件已经上拉了电阻,作为输出引脚不影响,可是输入对上面的按键电路就由影响了,后来我换到了37脚,就正常了。
当然了也可以通过中断的方式实现,就和MCU的中断一样,事件发生只响应一次,实现中断和边缘的响应,中断和边缘检测边缘是电信号从LOW到HIGH(上升沿)或从HIGH到LOW(下降沿)的状态变化。通常,我们更关心输入状态的变化,而不是它的值。这种状态的变化是一个事件。为了避免在程序忙于做其他事情时错过按下按钮,有两种方法可以解决这个问题:wait_for_edge()函数、event_detected()函数和在检测到边缘时运行的线程回调函数,代码如下:
import RPi.GPIO as GPIO import time LED_PIN = 3 #LED KEY_PIN = 37 #KEY def key_callback(channel): print("Button pressed!" KEY_state = GPIO.input(LED_PIN) GPIO.output(LED_PIN, not KEY_state) GPIO.setmode(GPIO.BOARD) GPIO.setup(LED_PIN, GPIO.OUT) GPIO.setup(KEY_PIN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.add_event_detect(KEY_PIN, GPIO.FALLING, callback = key_callback, bouncetime = 120 while True: time.sleep(0.1)#delay 0.1s