質問編集履歴

1

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

2021/12/06 13:53

投稿

ryu-12
ryu-12

スコア2

test CHANGED
File without changes
test CHANGED
@@ -108,6 +108,110 @@
108
108
 
109
109
 
110
110
 
111
+ ### 追記
112
+
113
+ ご指摘された通り、プログラムを修正してみました。修正後のプログラムは、センサー反応後にモーターが止められるようにはなりましたが、停止後にモーターを再稼働させるプログラムがうまくいきません。どのようにすればよいか、どなたか解決策を教えていただけないでしょうか。
114
+
115
+ ```Python3
116
+
117
+ import RPi.GPIO as GPIO
118
+
119
+ import time
120
+
121
+ import sys
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
+ def motorstop():
142
+
143
+ pwm.stop()
144
+
145
+ pwmR.stop()
146
+
147
+
148
+
149
+ GPIO.setup(19,GPIO.OUT)
150
+
151
+ GPIO.setup(motor1speed,GPIO.OUT)
152
+
153
+ GPIO.setup(motor1Direction,GPIO.OUT)
154
+
155
+ GPIO.setup(SENSOR_PORT, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
156
+
157
+ GPIO.setup(LED, GPIO.OUT)
158
+
159
+
160
+
161
+
162
+
163
+ #モーター制御
164
+
165
+ pwm = GPIO.PWM(19, 100)
166
+
167
+ pwm.start(0)
168
+
169
+ GPIO.output(motor1Direction, 0)
170
+
171
+ pwm.ChangeDutyCycle(40)
172
+
173
+ pwmR = GPIO.PWM(motor1speed, 100)
174
+
175
+ pwmR.start(0)
176
+
177
+ GPIO.output(motor1speed, 1)
178
+
179
+ pwmR.ChangeDutyCycle(23)
180
+
181
+
182
+
183
+
184
+
185
+ while True:
186
+
187
+ try:
188
+
189
+ time.sleep(0.1)
190
+
191
+
192
+
193
+ if(GPIO.input(SENSOR_PORT) == 1):
194
+
195
+ motorstop()
196
+
197
+ GPIO.output(LED, GPIO.HIGH)
198
+
199
+ else:
200
+
201
+ GPIO.output(LED, GPIO.LOW)
202
+
203
+
204
+
205
+ except KeyboardInterrupt:
206
+
207
+ GPIO.cleanup()
208
+
209
+ sys.exit()
210
+
211
+ ```
212
+
213
+
214
+
111
215
  ### 補足情報(ツールバージョンなど)
112
216
 
113
217
  Python 3.7.2