gpt4 book ai didi

python - Python和Rpi中达到特定值后将值返回到0

转载 作者:太空宇宙 更新时间:2023-11-03 20:25:28 25 4
gpt4 key购买 nike

我有一个连接到 Raspberrypi 的编码器。电机连接到arduino,根据编码器的值,电机将运行。我能够使用串行通信(USB)将值从 rpi 发送到 arduino。问题是,该值不断增加(例如1、2、3……)。我希望编码器的值一旦读取到 10 就应该从 0 开始,如下面的代码所示。如有帮助,我们将不胜感激。

import RPi.GPIO as GPIO
import time
import serial

ser=serial.Serial('/dev/ttyACM0',9600)
#ser.write(b'0')
GPIO.setmode (GPIO.BCM)
GPIO.setwarnings(True)

pin_A = 17
pin_B = 18

Encoder_Count = 0
A_Pos2=0
GPIO.setup (pin_A, GPIO.IN)
GPIO.setup (pin_B, GPIO.IN)
A_Pos = 0
A_Last = "00"
STATE = {"0001":1,"0010":-1,"0100":-1,"0111":1,"1000":1,"1011":-1, "1101":-1, "1110":1}

def Encoder1(channel1):
global Encoder_Count,A_Pos,A_Last,STATE
now = str(GPIO.input(17)) + str(GPIO.input(18))
key = A_Last + now
if key in STATE:
direction = STATE[key]
A_Last = now
A_Pos +=direction


GPIO.add_event_detect (pin_A, GPIO.BOTH, callback=Encoder1)
GPIO.add_event_detect (pin_B, GPIO.BOTH, callback=Encoder1)
#A_Pos2=0

while(1):
# ser.write(b'1')
A_Pos2= A_Pos/(1600)
print (A_Pos2)
if (A_Pos2 >10):
ser.write(b'0')
time.sleep(0.01)


GPIO.cleanup()


最佳答案

这可以通过模运算来完成,除非我遗漏了一些东西:

if (A_Pos2 >10):
A_Pos2 = A_Pos2 % 10

一旦达到 10,A_Pos2 就会重置为 0。

关于python - Python和Rpi中达到特定值后将值返回到0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57854428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com