ラズベリーパイを使用し,下記のタッチセンサのプログラムを動作させたいプログラムに加えて任意で起動と停止を行うようにしたいのですがうまくいきません。現在エラーは発生していないのですが任意での操作はできていません。どうプログラムを修正を行えばよろしいのでしょうか。
try: while True: accel_data = mpu.get_accel_data() #x_angle = util.get_x_rotation(accel_data['x'], accel_data['y'], accel_data['z']) y_angle = util.get_y_rotation(accel_data['x'], accel_data['y'], accel_data['z']) if y_angle < normalMin: motor.setDirection("stop") else: motor.setDirection("forward") if y_angle >= mediumMin and highMin > y_angle: motor.setPower("MEDIUM") elif y_angle >= highMin: motor.setPower("HIGH") if stopped and runtime > 0: sys.stdout.write(blanks) sys.stdout.write("Timer stopped: %i seconds\r" % runtime) sys.stdout.flush() elif stopped: sys.stdout.write(blanks) sys.stdout.write("Touch enter to start!\r") sys.stdout.flush() else: sys.stdout.write(blanks) sys.stdout.write("Timer running: %i seconds\r" % (runtime + (time.time() - start))) sys.stdout.flush() time.sleep(0.1) #sys.stdout = open("log.txt" , "w") #print("Y_ANGLE", y_angle) #and ("X_ANGLE", y_angle) #print("Y", y_angle) #print( now) #print(now.date()) now = datetime.datetime.now() print(now.strftime("\t %Y-%m-%d \t %H:%M:%S.%f")) #print ("%0.2d:%0.2d:%0.2d" % (now.hour, now.minute, now.millis)) #print(millis) #print(process_time) #print( x_angle) accel_data = mpu.get_accel_data() print("X", accel_data['x']) #print(accel_data['y']) print("Y", y_angle) print("Z", accel_data['z']) gyro_data = mpu.get_gyro_data() print("Gx", gyro_data['x']) print("Gy", gyro_data['y']) print("Gz", gyro_data['z']) # #print("Ax:{:.4f}\tAy:{:.4f}\tAz:{:.4f}\tGx:{:.4f}\tGy:{:.4f}\tGz:{:.4f} ".format(accel_data['x'], accel_data['y'], accel_data['z'], gyro_data['x'], gyro_data['y'], gyro_data['z'])) elif stopped: sys.stdout.write(blanks) sys.stdout.write("Touch enter to start!\r") sys.stdout.flush() else: sys.stdout.write(blanks) sys.stdout.write("Timer running: %i seconds\r" % (runtime + (time.time() - start))) sys.stdout.flush() time.sleep(0.1) finally: #self.stop() sys.stdout.close() motor.clean() time.sleep(0.5) atexit.register(exitHandler)
できない、とはどうなるんでしょうか
タッチセンサーでの任意での起動 停止ができておらず、タッチセンサーがただ反応しているだけという状況です。
このコードの中で、タッチセンサの検出はどの部分でしょうか
if stopped and runtime > 0:
sys.stdout.write(blanks)
sys.stdout.write("Timer stopped: %i seconds\r" % runtime)
sys.stdout.flush()
elif stopped:
sys.stdout.write(blanks)
sys.stdout.write("Touch enter to start!\r")
sys.stdout.flush()
else:
sys.stdout.write(blanks)
sys.stdout.write("Timer running: %i seconds\r" % (runtime + (time.time() - start)))
sys.stdout.flush()
time.sleep(0.1)
この部分です。
そこはメッセージ出してるだけにみえますが。
import sys
import time
import touchphat
stopped = True
runtime = 0
@touchphat.on_touch("Enter")
def start_stop():
global start
global stopped
global runtime
if stopped:
start = time.time()
stopped = False
else:
stopped = True
runtime += (time.time() - start)
@touchphat.on_touch("Back")
def reset():
global runtime
runtime = 0
blanks = " " * 25 + "\r"
try:
while True:
if stopped and runtime > 0:
sys.stdout.write(blanks)
sys.stdout.write("Timer stopped: %i seconds\r" % runtime)
sys.stdout.flush()
elif stopped:
sys.stdout.write(blanks)
sys.stdout.write("Touch enter to start!\r")
sys.stdout.flush()
else:
sys.stdout.write(blanks)
sys.stdout.write("Timer running: %i seconds\r" % (runtime + (time.time() - start)))
sys.stdout.flush()
time.sleep(0.1)
except KeyboardInterrupt():
sys.exit()
これがタッチセンサのプログラムです
あなたの回答
tips
プレビュー