質問編集履歴

1

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

2021/12/09 07:40

投稿

ryu-12
ryu-12

スコア2

test CHANGED
File without changes
test CHANGED
@@ -104,6 +104,126 @@
104
104
 
105
105
  ```
106
106
 
107
+ ### 追記
108
+
109
+ 回答者様から頂いたプログラムを付け加えてみました。問題視していた「センサーの状態を無視する」という点は解決しましたが、停止から3秒後のモーターの再始動がうまくいかず、再始動時に本来なら回転させたいところですが一瞬だけ(1~5°程度)動いて、その後は停止した状態になってしまいます。
110
+
111
+ 間違っている部分があれば、ご指摘よろしくお願いします。
112
+
113
+ ```Python3
114
+
115
+ import RPi.GPIO as GPIO
116
+
117
+ import time
118
+
119
+ import sys
120
+
121
+ import datetime
122
+
123
+ GPIO.setwarnings(False)
124
+
125
+ GPIO.setmode(GPIO.BOARD)
126
+
127
+
128
+
129
+ motor1speed=15
130
+
131
+ motor1Direction=21
132
+
133
+ SENSOR_PORT = 24
134
+
135
+ LED = 35
136
+
137
+
138
+
139
+
140
+
141
+ GPIO.setup(19,GPIO.OUT)
142
+
143
+ GPIO.setup(motor1speed,GPIO.OUT)
144
+
145
+ GPIO.setup(motor1Direction,GPIO.OUT)
146
+
147
+ GPIO.setup(SENSOR_PORT, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
148
+
149
+ GPIO.setup(LED, GPIO.OUT)
150
+
151
+
152
+
153
+ #モーター制御
154
+
155
+ def motorstart():
156
+
157
+ pwm = GPIO.PWM(19, 100)
158
+
159
+ pwm.start(0)
160
+
161
+ GPIO.output(motor1Direction, 0)
162
+
163
+ pwm.ChangeDutyCycle(40)
164
+
165
+ pwmR = GPIO.PWM(motor1speed, 100)
166
+
167
+ pwmR.start(0)
168
+
169
+ GPIO.output(motor1speed, 1)
170
+
171
+ pwmR.ChangeDutyCycle(23)
172
+
173
+
174
+
175
+ def motorstop():
176
+
177
+ GPIO.output(motor1speed, 0)
178
+
179
+ GPIO.output(motor1Direction, 0)
180
+
181
+
182
+
183
+ motorstart()
184
+
185
+
186
+
187
+ restart_flag = False
188
+
189
+ while True:
190
+
191
+ try:
192
+
193
+ if restart_flag:
194
+
195
+ continue
196
+
197
+ if(GPIO.input(SENSOR_PORT) == 0):
198
+
199
+ motorstart()
200
+
201
+ GPIO.output(LED, GPIO.LOW)
202
+
203
+
204
+
205
+ else:
206
+
207
+ GPIO.output(LED, GPIO.HIGH)
208
+
209
+ motorstop()
210
+
211
+ time.sleep(3)
212
+
213
+ motorstart()
214
+
215
+ restart_flag = True
216
+
217
+
218
+
219
+ except KeyboardInterrupt:
220
+
221
+ GPIO.cleanup()
222
+
223
+ sys.exit()
224
+
225
+ ```
226
+
107
227
  ### 補足情報(FW/ツールのバージョンなど)
108
228
 
109
229
  Python 3.7.2