Rasperry pi在运行程序时重新启动

2024-09-28 03:21:47 发布

您现在位置:Python中文网/ 问答频道 /正文

当我使用sudopython运行以下代码时,我的raspberry pi将重新启动机器人.py 我的raspberry pi通过robohat控制器(Robohat)连接到4个电机、一个云台和一个超声波传感器

import robohat, time, random
dist_l = 0
dist_r = 0
speed = 80
pan = 1
tilt = 0
tVal = 25 # 20 degrees is centre
pVal = 20 # 25 degrees is centre

robohat.init()
def doServos():# Set servo to wanted degrees
    robohat.setServo(pan, pVal)
    robohat.setServo(tilt, tVal)

end = "False"
while end == "False":

   def dist_check(): #gets distance
        pVal = 20
        tVal = 25
    doServos() #Centre the servos       
def servoPosGo():
    pVal2 = (90)
    robohat.setServo(pan, pVal2)
    robohat.setServo(tilt, tVal)
    dist_l = robohat.getDistance()
servoPosGo()
#Take right reading at 90 degrees


def servoPosGo2():
    pVal3 = (-60)
    robohat.setServo(pan, pVal3)
    robohat.setServo(tilt, tVal)
    dist_r = robohat.getDistance()
servoPosGo2()

doServos() #Centres the servos
dist_check()
if dist_r < 100 or dist_l < 100: #Is the distance greater than 100, and go which is greater but less than 100
    if dist_l > dist_r:
        robohat.spinLeft(speed)
        robohat.forward(speed)
        time.sleep(dist_l - 10)
        robohat.stop()
    elif dist_r > dist_l:
        robohat.spinRight(speed)
        robohat.forward(speed)
        time.sleep(dist_r - 10)
        robohat.stop()
    elif dist_l == dist_r: #If the two distnaces are the same, choose a   random one
        ran = random.randrange(1, 2)
        if ran == (1):
            robohat.spinLeft(speed)
            robohat.forward(speed)
            time.sleep(dist_l - 10)
            robohat.stop()
        elif ran = (2):
            robohat.spinRight(speed)
            robohat.forward(speed)
            time.sleep(dist_r - 10)
            robohat.stop()
elif dist_l > 100 or dist_r > 100: #If distance IS greater than 100, go forward and set end to true
    end = "True"
    robohat.forward(speed)
     if dist_r > dist_l:
        time.sleep(dist_r - 10)
     elif dist_l > dist_r:
        time.sleep(dist_l - 10)

Tags: thetimedistdefsleeppanendforward
1条回答
网友
1楼 · 发布于 2024-09-28 03:21:47

给你的RPi一个更强的交流适配器。它至少应该有1.2安培

此外,确保您的伺服电源不是从RPi,地面必须是相同的,只有伺服命令行连接到RPi引脚。还有一个事实是,RPi提供3.5V的输出到其GPIO,而大多数伺服需要5V的电源和命令行。尽管其中一些可以在cmd线路电压较低的情况下正常工作。你知道吗

如果你没有将你的马达直接连接到GPIO,你必须重新检查接地等

有时会有助于在电源输入端增加大电容,这样突然的瞬变就不会使您的RPi重新启动。你知道吗

相关问题 更多 >

    热门问题