不同引脚触发的GPIO中断
GPIO interrupt triggered by different pin
tl;博士:
监听GPIO PIN14上的RISING事件(带10K下拉电阻); sending/receiving 不同 GPIO 引脚上的数据时的 Ghost RISING 事件;
我有以下问题:
在我的技术室,我有一个 Raspberry Pi 1B,和 Raspberry Pi 3;我在两个单元上测试了这个,我得到了相同的结果;
我的电源电表有一个闪烁的 LED,1000/kWh;我想用一个光敏电阻来测量这个;光敏电阻接GPIO PIN14;只要我不使用任何其他 GPIO 引脚,此设置就可以正常工作。
使用相同的单元,我想通过 433Mhz 发送一些数据(GPIO PIN7,但是一旦我传输数据,我就会在 PIN14 上收到 RISING 事件...
我在互联网上找到了不同的解决方案,none 其中似乎有效:
- 换一个Raspberry Pi(B1有点旧)
- PIN14使用10K下拉电阻
- 使用不同的电源
- 为 raspberry pi、光敏电阻器和 433Mhz 发射器使用单独的电源
使用下面的代码,我可以看到光敏电阻和 PIN14 的预期行为;但是一旦我启动传输,发送消息的事件和 PIN14 上的 RISING 事件就会同步。当我停止发送消息时,PIN14 上的侦听器停止工作。
有人知道如何解决这个问题吗?
PIN14 监听码:
import datetime
import time
try:
import RPi.GPIO as GPIO
except RuntimeError:
print(
'Error importing RPi.GPIO! This is probably because you need superuser privileges.')
delta = datetime.timedelta(microseconds=100000)
global last_electric_ping
last_electric_ping = datetime.datetime.now()
GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.IN)
def electric_ping(channel):
if GPIO.input(14):
global last_electric_ping
now = datetime.datetime.now()
if delta + last_electric_ping <= now:
print(delta + last_electric_ping, end=" ")
print('ELECTRIC')
last_electric_ping = now
GPIO.add_event_detect(14, GPIO.RISING, callback=electric_ping)
while True:
continue
GPIO.cleanup()
传输代码:
import time
from pi_switch import RCSwitchSender
sender = RCSwitchSender()
sender.enableTransmit(15) # use WiringPi pin 0
num = 1
while True:
time.sleep(1)
print("Woei!")
sender.sendDecimal(num, 24)
num += 1
击鼓:
显然我 运行 遇到了编号问题; BCM 引脚编号表示物理引脚 8 是 GPIO14,这很好;
现在三个猜测 wiringPi 给物理引脚号 8 的数字......是的,数字 15!这是我在第二个脚本中尝试将数据发送到的那个;
现在请原谅,我去那边的角落里用砖头拍打自己...
tl;博士:
监听GPIO PIN14上的RISING事件(带10K下拉电阻); sending/receiving 不同 GPIO 引脚上的数据时的 Ghost RISING 事件;
我有以下问题:
在我的技术室,我有一个 Raspberry Pi 1B,和 Raspberry Pi 3;我在两个单元上测试了这个,我得到了相同的结果;
我的电源电表有一个闪烁的 LED,1000/kWh;我想用一个光敏电阻来测量这个;光敏电阻接GPIO PIN14;只要我不使用任何其他 GPIO 引脚,此设置就可以正常工作。
使用相同的单元,我想通过 433Mhz 发送一些数据(GPIO PIN7,但是一旦我传输数据,我就会在 PIN14 上收到 RISING 事件...
我在互联网上找到了不同的解决方案,none 其中似乎有效:
- 换一个Raspberry Pi(B1有点旧)
- PIN14使用10K下拉电阻
- 使用不同的电源
- 为 raspberry pi、光敏电阻器和 433Mhz 发射器使用单独的电源
使用下面的代码,我可以看到光敏电阻和 PIN14 的预期行为;但是一旦我启动传输,发送消息的事件和 PIN14 上的 RISING 事件就会同步。当我停止发送消息时,PIN14 上的侦听器停止工作。
有人知道如何解决这个问题吗?
PIN14 监听码:
import datetime
import time
try:
import RPi.GPIO as GPIO
except RuntimeError:
print(
'Error importing RPi.GPIO! This is probably because you need superuser privileges.')
delta = datetime.timedelta(microseconds=100000)
global last_electric_ping
last_electric_ping = datetime.datetime.now()
GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.IN)
def electric_ping(channel):
if GPIO.input(14):
global last_electric_ping
now = datetime.datetime.now()
if delta + last_electric_ping <= now:
print(delta + last_electric_ping, end=" ")
print('ELECTRIC')
last_electric_ping = now
GPIO.add_event_detect(14, GPIO.RISING, callback=electric_ping)
while True:
continue
GPIO.cleanup()
传输代码:
import time
from pi_switch import RCSwitchSender
sender = RCSwitchSender()
sender.enableTransmit(15) # use WiringPi pin 0
num = 1
while True:
time.sleep(1)
print("Woei!")
sender.sendDecimal(num, 24)
num += 1
击鼓:
显然我 运行 遇到了编号问题; BCM 引脚编号表示物理引脚 8 是 GPIO14,这很好;
现在三个猜测 wiringPi 给物理引脚号 8 的数字......是的,数字 15!这是我在第二个脚本中尝试将数据发送到的那个;
现在请原谅,我去那边的角落里用砖头拍打自己...