teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

ご指摘された点を含め、プログラムを修正してみました。センサー反応後にモーターを止めるところまでは成功しました。

2021/12/06 13:53

投稿

ryu-12
ryu-12

スコア2

title CHANGED
File without changes
body CHANGED
@@ -53,5 +53,57 @@
53
53
  プログラムを組む際に優先順位があると気づき、何度かプログラムの順序を変えて組んでみましたがうまくいきませんでした。
54
54
  どなたか解決策を教えていただけないでしょうか。
55
55
 
56
+ ### 追記
57
+ ご指摘された通り、プログラムを修正してみました。修正後のプログラムは、センサー反応後にモーターが止められるようにはなりましたが、停止後にモーターを再稼働させるプログラムがうまくいきません。どのようにすればよいか、どなたか解決策を教えていただけないでしょうか。
58
+ ```Python3
59
+ import RPi.GPIO as GPIO
60
+ import time
61
+ import sys
62
+ GPIO.setwarnings(False)
63
+ GPIO.setmode(GPIO.BOARD)
64
+
65
+ motor1speed=15
66
+ motor1Direction=21
67
+ SENSOR_PORT = 24
68
+ LED = 35
69
+
70
+
71
+ def motorstop():
72
+ pwm.stop()
73
+ pwmR.stop()
74
+
75
+ GPIO.setup(19,GPIO.OUT)
76
+ GPIO.setup(motor1speed,GPIO.OUT)
77
+ GPIO.setup(motor1Direction,GPIO.OUT)
78
+ GPIO.setup(SENSOR_PORT, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
79
+ GPIO.setup(LED, GPIO.OUT)
80
+
81
+
82
+ #モーター制御
83
+ pwm = GPIO.PWM(19, 100)
84
+ pwm.start(0)
85
+ GPIO.output(motor1Direction, 0)
86
+ pwm.ChangeDutyCycle(40)
87
+ pwmR = GPIO.PWM(motor1speed, 100)
88
+ pwmR.start(0)
89
+ GPIO.output(motor1speed, 1)
90
+ pwmR.ChangeDutyCycle(23)
91
+
92
+
93
+ while True:
94
+ try:
95
+ time.sleep(0.1)
96
+
97
+ if(GPIO.input(SENSOR_PORT) == 1):
98
+ motorstop()
99
+ GPIO.output(LED, GPIO.HIGH)
100
+ else:
101
+ GPIO.output(LED, GPIO.LOW)
102
+
103
+ except KeyboardInterrupt:
104
+ GPIO.cleanup()
105
+ sys.exit()
106
+ ```
107
+
56
108
  ### 補足情報(ツールバージョンなど)
57
109
  Python 3.7.2