先做个简单一丢丢的吧。。。正好最近工作也要用这个。
先用Python试了下,很简单就亮了。
用的GPIO 26口。
代码如下:
import RPi.GPIO as GPIO
import time
# 设置 GPIO 引脚编号模式 (BCM 模式)
GPIO.setmode(GPIO.BCM)
# 设置 GPIO 17 为输出引脚
led_pin = 17
GPIO.setup(led_pin, GPIO.OUT)
# LED 闪烁的循环
try:
while True:
GPIO.output(led_pin, GPIO.HIGH) # 点亮 LED
time.sleep(1) # 延迟 1 秒
GPIO.output(led_pin, GPIO.LOW) # 熄灭 LED
time.sleep(1) # 延迟 1 秒
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup() # 清理 GPIO 状态
当然,今天的关键不是PY。而且内核。
换第二种方法,经常看别人驱动大神的方法。先看了GPT,给的答案如下:
# 导出GPIO26
echo 26 | sudo tee /sys/class/gpio/export
# 设置为输出
echo out | sudo tee /sys/class/gpio/gpio26/direction
# 打开LED
echo 1 | sudo tee /sys/class/gpio/gpio26/value
# 关闭LED
echo 0 | sudo tee /sys/class/gpio/gpio26/value
但是实际上这样不行,一直报write error: Invalid argument,真的要郁闷了。后面到处找,才在一篇文章中找到答案。解决 sh:write error:Invalid argument_sh: write error: invalid argument-CSDN博客
说是GPIO号不匹配,在本机查了,如下:
pi@raspberrypi:/sys/class/gpio$ cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 512-565, parent: platform/3f200000.gpio, pinctrl-bcm2835:
gpio-512 (ID_SDA )
gpio-513 (ID_SCL )
gpio-514 (GPIO2 )
gpio-515 (GPIO3 )
gpio-516 (GPIO4 )
gpio-517 (GPIO5 )
gpio-518 (GPIO6 )
gpio-519 (GPIO7 |spi0 CS1 ) out hi ACTIVE LOW
gpio-520 (GPIO8 |spi0 CS0 ) out hi ACTIVE LOW
gpio-521 (GPIO9 )
gpio-522 (GPIO10 )
gpio-523 (GPIO11 )
gpio-524 (GPIO12 )
gpio-525 (GPIO13 )
gpio-526 (GPIO14 )
gpio-527 (GPIO15 )
gpio-528 (GPIO16 )
gpio-529 (GPIO17 )
gpio-530 (GPIO18 )
gpio-531 (GPIO19 )
gpio-532 (GPIO20 )
gpio-533 (GPIO21 )
gpio-534 (GPIO22 )
gpio-535 (GPIO23 )
gpio-536 (GPIO24 )
gpio-537 (GPIO25 )
gpio-538 (GPIO26 )
gpio-539 (GPIO27 )
gpio-540 (NC )
gpio-541 (LAN_RUN_BOOT )
gpio-542 (CTS0 )
gpio-543 (RTS0 )
gpio-544 (TXD0 )
gpio-545 (RXD0 )
gpio-546 (SD1_CLK )
gpio-547 (SD1_CMD )
gpio-548 (SD1_DATA0 )
gpio-549 (SD1_DATA1 )
gpio-550 (SD1_DATA2 )
gpio-551 (SD1_DATA3 )
gpio-552 (PWM0_OUT )
gpio-553 (PWM1_OUT )
gpio-554 (ETH_CLK )
gpio-555 (WIFI_CLK )
gpio-556 (SDA0 )
gpio-557 (SCL0 )
gpio-558 (SMPS_SCL )
gpio-559 (SMPS_SDA )
gpio-560 (SD_CLK_R )
gpio-561 (SD_CMD_R )
gpio-562 (SD_DATA0_R )
gpio-563 (SD_DATA1_R )
gpio-564 (SD_DATA2_R )
gpio-565 (SD_DATA3_R )
gpiochip1: GPIOs 566-567, parent: platform/soc:firmware:virtgpio, brcmvirt-gpio, can sleep:
gpio-566 ( |ACT ) out hi
gpiochip2: GPIOs 568-575, parent: platform/soc:firmware:expgpio, raspberrypi-exp-gpio, can sleep:
原来GPIO26对应的是gpio-538,换成538之后,可以顺利通过命令行点灯了。
# 导出GPIO26
echo 538 | sudo tee /sys/class/gpio/export
# 设置为输出
echo out | sudo tee /sys/class/gpio/gpio538/direction
# 打开LED
echo 1 | sudo tee /sys/class/gpio/gpio538/value
# 关闭LED
echo 0 | sudo tee /sys/class/gpio/gpio538/value
=================================================