材料准备 树莓派*1 面包板*1 面包线(公母头)*4 面包线(公公头)*2 5mm LED 灯*1 10k 电阻器*1 组装电路 1,LED 的阳极(+)与树莓派的 Pin22 相连,LED 的阴极(-)与树莓派的 Pin20(Ground) 相连 2,按键的一端与 Pin1(3.3v) 相连;按键的另一端与 Pin18(GPIO 24) 相连,同时与一个 10K 电阻相连,10K 电阻的另一端连接到 Pin20(Ground) 3,参考文章末尾图片 创建程序 nano ledstatus.py 程序内容 import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(24,GPIO.IN,pull_up_down=GPIO.PUD_DOWN) GPIO.setup(25,GPIO.OUT) ledStatus = True while True: if (GPIO.input(24) == GPIO.HIGH): print("button pressed!") ledStatus = not ledStatus if ledStatus: GPIO.output(25,GPIO.HIGH) else: GPIO.output(25,GPIO.LOW) time.sleep(0.3) time.sleep(0.01) 说明 GPIO.setup(24,GPIO.IN,pull_up_down=GPIO.PUD_DOWN) 将 GPIO24 设置为输入状态,pull_up_down=GPIO.PUD_DOWN参数告诉程序初始化这个口为接地 while True 是一个无限循环,不断读取 GPIO24 的值,根据读取的值是否为高电平 GPIO.HIGH 来判断按键是否按下 if (GPIO.input(24) == GPIO.HIGH) 如果按键按下,则翻转 LED 的状态——让 LED 亮或者灭。 print("button pressed!") 按下按键时候打印一行信息 time.sleep(0.01) 间隔 0.01 个时间单位之后再循环执行。如果不设置间隔循环时间,这个程序将无限马上循环执行,将大量占用树莓派的 CPU 使用时间。 使用 root 权限执行程序 sudo python ledstatus.py a. |