【问题标题】:GPIO state in code changes, but mechanical relay doesn't change代码中的 GPIO 状态发生变化,但机械继电器没有变化
【发布时间】:2016-11-28 21:48:52
【问题描述】:

我有一个连接到 SainSmart 16 通道机械继电器的 Raspberry Pi 3 Model B。我有一个 python 脚本来改变继电器的状态,虽然程序中的状态会随着不同的 GPIO 通道而改变,但机械继电器永远不会改变状态。

有人有什么想法吗?

我的 Python 脚本

#!/usr/bin/python
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
sleepTime = 0.5

pinList = [4, 17, 27, 22, 10, 9, 11, 5, 6, 13, 19, 26, 21, 20, 16, 12]

for i in pinList:
    GPIO.setup(i, GPIO.OUT)

for i in pinList:
    time.sleep(sleepTime);
    GPIO.output(i, GPIO.HIGH)
    print (str(i) + " high")
    print ("state: " + str(GPIO.input(i)))

for i in pinList:
    time.sleep(sleepTime);
    GPIO.output(i, GPIO.LOW)
    print(str(i) + " low")
    print ("state: " + str(GPIO.input(i)))

GPIO.cleanup()

脚本的输出

4 high
state: 1
17 high
state: 1
27 high
state: 1
22 high
state: 1
10 high
state: 1
9 high
state: 1
11 high
state: 1
5 high
state: 1
6 high
state: 1
13 high
state: 1
19 high
state: 1
26 high
state: 1
21 high
state: 1
20 high
state: 1
16 high
state: 1
12 high
state: 1
4 low
state: 0
17 low
state: 0
27 low
state: 0
22 low
state: 0
10 low
state: 0
9 low
state: 0
11 low
state: 0
5 low
state: 0
6 low
state: 0
13 low
state: 0
19 low
state: 0
26 low
state: 0
21 low
state: 0
20 low
state: 0
16 low
state: 0
12 low
state: 0

感谢阅读。

【问题讨论】:

  • 你的继电器的电气特性是什么?
  • 使用晶体管激活继电器
  • 这是中继:sainsmart.com/…
  • 使用我的解决方案,将 12Vdc 更改为 5Vdc(电池)

标签: python raspberry-pi


【解决方案1】:

使用上图,我最初将两个 5v 引脚(引脚 2 和 4)连接到继电器模块上的相应引脚。然后,我从 GPIO4(引脚 7)开始连接 GPIO 引脚,向下移动 GPIO 引脚的左列,然后向上移动。作为理由,我使用了引脚 6 和引脚 9。这就是我提出问题时的设置方式。

但是通过将 5v 电缆从针脚 2 移动到针脚 1(3.3v),解决了我的问题。

注意:我从https://www.element14.com/community/docs/DOC-73950/l/raspberry-pi-3-model-b-gpio-40-pin-block-pinout得到图表

【讨论】:

    猜你喜欢
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 2020-09-22
    • 2020-10-21
    • 2019-09-23
    相关资源
    最近更新 更多