为了使电动机运转,我们尝试使用此代码,但显然有很多错误。有人可以帮助我们吗?
RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
pinDir = 24
pinStep = 26
numSteps = 200
microPausa = 0.005
GPIO.setup(pinDir,GPIO.OUT)
GPIO.setup(pinStep,GPIO.OUT)
while True:
GPIO.output(pinDir,0)
for i in range(0,numSteps):
GPIO.output(pinStep, True)
time.sleep(microPausa)
GPIO.output(pinStep, False)
time.sleep(microPausa)
time.sleep(microPausa)
GPIO.output(pinDir, 1)
for i in range(0,numSteps):
GPIO.output(pinStep, True)
time.sleep(microPausa)
GPIO.output(pinStep, False)
time.sleep(microPausa)
GPIO.cleanup()
carlini.py:12:RuntimeWarning:此通道已在使用中,无论如何仍在继续。使用GPIO.setwarnings(False)禁用警告。 GPIO.setup(pinDir,GPIO.OUT) carlini.py:13:RuntimeWarning:此通道已在使用中,无论如何仍在继续。使用GPIO.setwarnings(False)禁用警告。 GPIO.setup(pinStep,GPIO.OUT)
答案 0 :(得分:1)
RuntimeWarning
只是警告,而不是错误。它会在发出警告的同时继续进行。如果您阅读它,它实际上会告诉您该警告的含义以及如何预防该警告:
该频道已被使用,无论如何仍在继续。
使用GPIO.setwarnings(False)禁用警告。
这意味着您正在使用的GPIO引脚已经设置完毕,尚未清理。对于您而言,这并不是真正的问题,因为您只是在重新运行代码。您可以通过将Use GPIO.setwarnings(False)
添加到文件顶部(在GPIO.setmode
之后)来禁用警告。
答案 1 :(得分:0)
您是否多次运行它并通过键盘中断(例如ctrl + c)将其停止? 如果是这样,则仍然设置了GPIO。
您可能想使用try / except / finally块正确取消设置GPIO:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
pinDir = 24
pinStep = 26
numSteps = 200
microPausa = 0.005
GPIO.setup(pinDir,GPIO.OUT)
GPIO.setup(pinStep,GPIO.OUT)
try:
while True:
GPIO.output(pinDir,0)
for i in range(0,numSteps):
GPIO.output(pinStep, True)
time.sleep(microPausa)
GPIO.output(pinStep, False)
time.sleep(microPausa)
time.sleep(microPausa)
GPIO.output(pinDir, 1)
for i in range(0,numSteps):
GPIO.output(pinStep, True)
time.sleep(microPausa)
GPIO.output(pinStep, False)
time.sleep(microPausa)
except KeyboardInterrupt:
pass # or print("received a keyboard interrupt, exiting.")
finally:
GPIO.cleanup()
请记住,除非您运行python脚本,否则第一次运行此脚本时,您会收到相同的警告(与以前的执行一样)
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.cleanup()