树莓派实现按钮关机、重启等(按钮点击篇)


准备

  • 按钮
  • 面包板
  • 杜邦线

接线

代码(python3)

  1. # -*- coding: utf-8 -*-
  2. import time,os
  3. import RPi.GPIO as GPIO
  4. # 树莓派 关机/重启按钮(单击篇)
  5. BUTTON=18
  6. GPIO.setmode(GPIO.BCM)
  7. GPIO.setup(BUTTON,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
  8. # 单击
  9. def click():
  10. times=0 # 点击次数(当按下后,抬起算一次)
  11. click_status=1 # 记录上次循环点击状态,1:按下 0:断开(抬起)
  12. # 检测约0.8秒内按下按钮的次数
  13. for x in range(80):
  14. v=GPIO.input(BUTTON)
  15. # 按下
  16. if v==1 and click_status==0:
  17. click_status=1
  18. # 抬起,算按一次
  19. if v==0 and click_status==1:
  20. click_status=0
  21. times+=1
  22. time.sleep(0.01)
  23. return times
  24. while True:
  25. if GPIO.input(BUTTON)==1:
  26. times=click()
  27. if times!=0:
  28. print('按下次数:',times)
  29. if times==2:
  30. print('关机键')
  31. os.system('sudo poweroff')
  32. if times==3:
  33. print('重启')
  34. os.system('sudo reboot')
  35. time.sleep(0.01)