質問編集履歴

3

電子工作の進展

2021/02/12 05:38

投稿

mau
mau

スコア13

test CHANGED
File without changes
test CHANGED
@@ -413,3 +413,25 @@
413
413
  ```
414
414
 
415
415
  [写真7(2/12 12:00)](https://drive.google.com/file/d/1l4U9dNey-ykpJfuiqss3FwbpLzr1qKtT/view?usp=sharing)
416
+
417
+
418
+
419
+ 追記3(2/12 14:30)
420
+
421
+ LEDリングのサンプルコードを利用したところ、信号線に信号がいっていることがわかりました。
422
+
423
+ ただし、課題として
424
+
425
+ ・自身が書いたLEDリングのソースコードだと虹色に光らない➡そもそも思うように光らない
426
+
427
+ ・超音波センサを反応させ続けないとプログラムが動かない➡1回の値の取得で継続的に動作させたい
428
+
429
+ ということが明らかになりました。
430
+
431
+ この課題を改善するためには、どのようにプログラムを書き換えればよろしいでしょうか?
432
+
433
+ (LEDリングの信号線のpinの位置はコードに合わせて変えております。)
434
+
435
+
436
+
437
+ }

2

回路図の追加、プログラムの意図、写真の追加

2021/02/12 05:38

投稿

mau
mau

スコア13

test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,199 @@
34
34
 
35
35
 
36
36
 
37
- 追記
37
+ ```
38
+
39
+ 特になし
40
+
41
+ ```
42
+
43
+
44
+
45
+ ### 該当のソースコード
46
+
47
+
48
+
49
+ ```C
50
+
51
+ /*
52
+
53
+ * 最大32256バイトのフラッシュメモリのうち、スケッチが3614バイト(11%)を使っています。
54
+
55
+ * 最大2048バイトのRAMのうち、グローバル変数が41バイト(2%)を使っていて、ローカル変数で2007バイト使うことができます。
56
+
57
+ */
58
+
59
+
60
+
61
+ //ライブラリの読み込み
62
+
63
+ #include <Adafruit_NeoPixel.h>
64
+
65
+ #define MAX_VAL 64 // 0 to 255 for brightness ➡ 8bitの範囲で輝度の調整
66
+
67
+ #define DELAY_TIME 50
68
+
69
+
70
+
71
+ int echoPin = 2;
72
+
73
+ int trigPin = 3;
74
+
75
+ double Duration = 0;
76
+
77
+ double Distance = 0;
78
+
79
+ int Neopixel_Count = 60;
80
+
81
+ int Neopixel_Pin = 4; //NeoPixelを接続するデジタル出力ピン
82
+
83
+
84
+
85
+ //インスタンスの生成
86
+
87
+ Adafruit_NeoPixel strip = Adafruit_NeoPixel(Neopixel_Count,Neopixel_Pin,NEO_GRB + NEO_KHZ800);
88
+
89
+ /*Adafruit_NeoPixelの各パラメータについて
90
+
91
+ *
92
+
93
+ * 1つ目のパラメータは、使用するLEDの個数を表す。使用するLEDの数に設定すればメモリの節約になる➡
94
+
95
+ * 2つ目のパラメータは、使用するピンの番号(input)を表す。ピンの接続先に注意すること➡Neopixel_Pin
96
+
97
+ * 3つ目のパラメータはデータの並べ方や転送速度を表す。変更する必要もなさそうだし、正直よくわからんからそのまま。
98
+
99
+ */
100
+
101
+ // NEO_RGB Pixels are wired for RGB bitstream
102
+
103
+ // NEO_GRB Pixels are wired for GRB bitstream
104
+
105
+ // NEO_KHZ400 400 KHz bitstream (e.g. FLORA pixels)
106
+
107
+ // NEO_KHZ800 800 KHz bitstream (e.g. High Density LED strip)
108
+
109
+
110
+
111
+
112
+
113
+ void setup() {
114
+
115
+ pinMode(echoPin,INPUT);
116
+
117
+ pinMode(trigPin,OUTPUT);
118
+
119
+
120
+
121
+ //インスタンスの使用
122
+
123
+ strip.begin();
124
+
125
+ strip.show();
126
+
127
+ /*
128
+
129
+ * 「インスタンス名.begin()」でインスタンスの使用を開始。
130
+
131
+ * この時すべてのLED上に関する、Arduino上のチャンネル用メモリに0が書き込まれる。➡LEDの初期化
132
+
133
+ * 「インスタンス名.show()」でArduinoからLEDへ転送され、一時的にLEDがオフになる。
134
+
135
+ */
136
+
137
+ }
138
+
139
+
140
+
141
+ void loop() {
142
+
143
+ digitalWrite(trigPin, LOW);
144
+
145
+ delayMicroseconds(2);
146
+
147
+ digitalWrite( trigPin, HIGH ); //超音波を出力
148
+
149
+ delayMicroseconds( 10 ); //
150
+
151
+ digitalWrite( trigPin, LOW );
152
+
153
+ Duration = pulseIn( echoPin, HIGH ); //センサからの入力
154
+
155
+ Duration = Duration/2;//往復距離なので片道の距離に置き換える
156
+
157
+ Distance = Duration*340*100/1000000;//音速を340m/sと定義し、片道距離の正規化を行う。
158
+
159
+ if (Distance < 2 ){//どの距離でLEDを光らせたいか決める
160
+
161
+ theaterChaseRainbow(DELAY_TIME);
162
+
163
+ strip.show();
164
+
165
+ }
166
+
167
+ }
168
+
169
+
170
+
171
+
172
+
173
+ //虹色にLEDを光らせる
174
+
175
+ void theaterChaseRainbow(int wait){
176
+
177
+ for (int j=0; j<256; j++){//256色➡0~255パターンの色の変化をさせるため
178
+
179
+ for (int i=0; i<strip.numPixels(); i++){//インスタンス名.numPixelsでLEDの個数を取得
180
+
181
+ strip.setPixelColor(i,i+j);
182
+
183
+ }
184
+
185
+ }
186
+
187
+ }
188
+
189
+
190
+
191
+ /*インスタンスにカラーデータを書き込む関数
192
+
193
+ * インスタンス名.setPixelColor(i,c);
194
+
195
+ * i番目のLEDにcで表されるカラーデータを書き込む関数
196
+
197
+ * ➡for文を使えば番号をずらすことができるから、1本の信号線で全てのLEDを光らせることができる
198
+
199
+ */
200
+
201
+
202
+
203
+ ```
204
+
205
+
206
+
207
+ ### 試したこと
208
+
209
+
210
+
211
+ ここに問題に対して試したことを記載してください。
212
+
213
+
214
+
215
+ ### 補足情報(FW/ツールのバージョンなど)
216
+
217
+
218
+
219
+ 使用基盤:Aruduino UNO
220
+
221
+ 超音波センサ:HC-SR04
222
+
223
+ LED:NeoPixel Ring 12連フルカラー
224
+
225
+
226
+
227
+
228
+
229
+ 追記(2/12 9:00)
38
230
 
39
231
  色々ご指摘ありがとうございます。回路図作成に手間取ってて返信が遅れました。
40
232
 
@@ -60,190 +252,164 @@
60
252
 
61
253
 
62
254
 
255
+ 追記2(2/12 12:00)
256
+
257
+ 配線自体は上手くいったようですが、プログラムが思う通りに動いてくれません。
258
+
259
+ ご指摘いただいた通り、超音波センサの距離の閾値を変えてみましたが、上手く反応していない状態です。ご教授よろしくお願いします。
260
+
261
+ ```C
262
+
263
+ /*
264
+
265
+ * 最大32256バイトのフラッシュメモリのうち、スケッチが3614バイト(11%)を使っています。
266
+
267
+ * 最大2048バイトのRAMのうち、グローバル変数が41バイト(2%)を使っていて、ローカル変数で2007バイト使うことができます。
268
+
269
+ */
270
+
271
+
272
+
273
+ //ライブラリの読み込み
274
+
275
+ #include <Adafruit_NeoPixel.h>
276
+
277
+ #define MAX_VAL 64 // 0 to 255 for brightness ➡ 8bitの範囲で輝度の調整
278
+
279
+ #define DELAY_TIME 50
280
+
281
+
282
+
283
+ int echoPin = 2;
284
+
285
+ int trigPin = 3;
286
+
287
+ double Duration = 0;
288
+
289
+ double Distance = 0;
290
+
291
+ int Neopixel_Count = 60;
292
+
293
+ int Neopixel_Pin = 4; //NeoPixelを接続するデジタル出力ピン
294
+
295
+
296
+
297
+ //インスタンスの生成
298
+
299
+ Adafruit_NeoPixel strip = Adafruit_NeoPixel(Neopixel_Count,Neopixel_Pin,NEO_GRB + NEO_KHZ800);
300
+
301
+ /*Adafruit_NeoPixelの各パラメータについて
302
+
303
+ *
304
+
305
+ * 1つ目のパラメータは、使用するLEDの個数を表す。使用するLEDの数に設定すればメモリの節約になる➡
306
+
307
+ * 2つ目のパラメータは、使用するピンの番号(input)を表す。ピンの接続先に注意すること➡Neopixel_Pin
308
+
309
+ * 3つ目のパラメータはデータの並べ方や転送速度を表す。変更する必要もなさそうだし、正直よくわからんからそのまま。
310
+
311
+ */
312
+
313
+ // NEO_RGB Pixels are wired for RGB bitstream
314
+
315
+ // NEO_GRB Pixels are wired for GRB bitstream
316
+
317
+ // NEO_KHZ400 400 KHz bitstream (e.g. FLORA pixels)
318
+
319
+ // NEO_KHZ800 800 KHz bitstream (e.g. High Density LED strip)
320
+
321
+
322
+
323
+
324
+
325
+ void setup() {
326
+
327
+ pinMode(echoPin,INPUT);
328
+
329
+ pinMode(trigPin,OUTPUT);
330
+
331
+
332
+
333
+ //インスタンスの使用
334
+
335
+ strip.begin();
336
+
337
+ strip.show();
338
+
339
+ /*
340
+
341
+ * 「インスタンス名.begin()」でインスタンスの使用を開始。
342
+
343
+ * この時すべてのLED上に関する、Arduino上のチャンネル用メモリに0が書き込まれる。➡LEDの初期化
344
+
345
+ * 「インスタンス名.show()」でArduinoからLEDへ転送され、一時的にLEDがオフになる。
346
+
347
+ */
348
+
349
+ }
350
+
351
+
352
+
353
+ void loop() {
354
+
355
+ digitalWrite(trigPin, LOW);
356
+
357
+ delayMicroseconds(2);
358
+
359
+ digitalWrite( trigPin, HIGH ); //超音波を出力
360
+
361
+ delayMicroseconds( 10 ); //
362
+
363
+ digitalWrite( trigPin, LOW );
364
+
365
+ Duration = pulseIn( echoPin, HIGH ); //センサからの入力
366
+
367
+ Duration = Duration/2;//往復距離なので片道の距離に置き換える
368
+
369
+ Distance = Duration*340*100/1000000;//音速を340m/sと定義し、片道距離の正規化を行う。
370
+
371
+ if (Distance < 5 ){//どの距離でLEDを光らせたいか決める
372
+
373
+ theaterChaseRainbow(DELAY_TIME);
374
+
375
+ strip.show();
376
+
377
+ }
378
+
379
+ }
380
+
381
+
382
+
383
+
384
+
385
+ //虹色にLEDを光らせる
386
+
387
+ void theaterChaseRainbow(int wait){
388
+
389
+ for (int j=0; j<256; j++){//256色➡0~255パターンの色の変化をさせるため
390
+
391
+ for (int i=0; i<strip.numPixels(); i++){//インスタンス名.numPixelsでLEDの個数を取得
392
+
393
+ strip.setPixelColor(i,i+j);
394
+
395
+ }
396
+
397
+ }
398
+
399
+ }
400
+
401
+
402
+
403
+ /*インスタンスにカラーデータを書き込む関数
404
+
405
+ * インスタンス名.setPixelColor(i,c);
406
+
407
+ * i番目のLEDにcで表されるカラーデータを書き込む関数
408
+
409
+ * ➡for文を使えば番号をずらすことができるから、1本の信号線で全てのLEDを光らせることができる
410
+
411
+ */
412
+
63
413
  ```
64
414
 
65
- 特になし
66
-
67
- ```
68
-
69
-
70
-
71
- ### 該当のソースコード
72
-
73
-
74
-
75
- ```C
76
-
77
- /*
78
-
79
- * 最大32256バイトのフラッシュメモリのうち、スケッチが3614バイト(11%)を使っています。
80
-
81
- * 最大2048バイトのRAMのうち、グローバル変数が41バイト(2%)を使っていて、ローカル変数で2007バイト使うことができます。
82
-
83
- */
84
-
85
-
86
-
87
- //ライブラリの読み込み
88
-
89
- #include <Adafruit_NeoPixel.h>
90
-
91
- #define MAX_VAL 64 // 0 to 255 for brightness ➡ 8bitの範囲で輝度の調整
92
-
93
- #define DELAY_TIME 50
94
-
95
-
96
-
97
- int echoPin = 2;
98
-
99
- int trigPin = 3;
100
-
101
- double Duration = 0;
102
-
103
- double Distance = 0;
104
-
105
- int Neopixel_Count = 60;
106
-
107
- int Neopixel_Pin = 4; //NeoPixelを接続するデジタル出力ピン
108
-
109
-
110
-
111
- //インスタンスの生成
112
-
113
- Adafruit_NeoPixel strip = Adafruit_NeoPixel(Neopixel_Count,Neopixel_Pin,NEO_GRB + NEO_KHZ800);
114
-
115
- /*Adafruit_NeoPixelの各パラメータについて
116
-
117
- *
118
-
119
- * 1つ目のパラメータは、使用するLEDの個数を表す。使用するLEDの数に設定すればメモリの節約になる➡
120
-
121
- * 2つ目のパラメータは、使用するピンの番号(input)を表す。ピンの接続先に注意すること➡Neopixel_Pin
122
-
123
- * 3つ目のパラメータはデータの並べ方や転送速度を表す。変更する必要もなさそうだし、正直よくわからんからそのまま。
124
-
125
- */
126
-
127
- // NEO_RGB Pixels are wired for RGB bitstream
128
-
129
- // NEO_GRB Pixels are wired for GRB bitstream
130
-
131
- // NEO_KHZ400 400 KHz bitstream (e.g. FLORA pixels)
132
-
133
- // NEO_KHZ800 800 KHz bitstream (e.g. High Density LED strip)
134
-
135
-
136
-
137
-
138
-
139
- void setup() {
140
-
141
- pinMode(echoPin,INPUT);
142
-
143
- pinMode(trigPin,OUTPUT);
144
-
145
-
146
-
147
- //インスタンスの使用
148
-
149
- strip.begin();
150
-
151
- strip.show();
152
-
153
- /*
154
-
155
- * 「インスタンス名.begin()」でインスタンスの使用を開始。
156
-
157
- * この時すべてのLED上に関する、Arduino上のチャンネル用メモリに0が書き込まれる。➡LEDの初期化
158
-
159
- * 「インスタンス名.show()」でArduinoからLEDへ転送され、一時的にLEDがオフになる。
160
-
161
- */
162
-
163
- }
164
-
165
-
166
-
167
- void loop() {
168
-
169
- digitalWrite(trigPin, LOW);
170
-
171
- delayMicroseconds(2);
172
-
173
- digitalWrite( trigPin, HIGH ); //超音波を出力
174
-
175
- delayMicroseconds( 10 ); //
176
-
177
- digitalWrite( trigPin, LOW );
178
-
179
- Duration = pulseIn( echoPin, HIGH ); //センサからの入力
180
-
181
- Duration = Duration/2;//往復距離なので片道の距離に置き換える
182
-
183
- Distance = Duration*340*100/1000000;//音速を340m/sと定義し、片道距離の正規化を行う。
415
+ [写真7(2/12 12:00)](https://drive.google.com/file/d/1l4U9dNey-ykpJfuiqss3FwbpLzr1qKtT/view?usp=sharing)
184
-
185
- if (Distance < 2 ){//どの距離でLEDを光らせたいか決める
186
-
187
- theaterChaseRainbow(DELAY_TIME);
188
-
189
- strip.show();
190
-
191
- }
192
-
193
- }
194
-
195
-
196
-
197
-
198
-
199
- //虹色にLEDを光らせる
200
-
201
- void theaterChaseRainbow(int wait){
202
-
203
- for (int j=0; j<256; j++){//256色➡0~255パターンの色の変化をさせるため
204
-
205
- for (int i=0; i<strip.numPixels(); i++){//インスタンス名.numPixelsでLEDの個数を取得
206
-
207
- strip.setPixelColor(i,i+j);
208
-
209
- }
210
-
211
- }
212
-
213
- }
214
-
215
-
216
-
217
- /*インスタンスにカラーデータを書き込む関数
218
-
219
- * インスタンス名.setPixelColor(i,c);
220
-
221
- * i番目のLEDにcで表されるカラーデータを書き込む関数
222
-
223
- * ➡for文を使えば番号をずらすことができるから、1本の信号線で全てのLEDを光らせることができる
224
-
225
- */
226
-
227
-
228
-
229
- ```
230
-
231
-
232
-
233
- ### 試したこと
234
-
235
-
236
-
237
- ここに問題に対して試したことを記載してください。
238
-
239
-
240
-
241
- ### 補足情報(FW/ツールのバージョンなど)
242
-
243
-
244
-
245
- 使用基盤:Aruduino UNO
246
-
247
- 超音波センサ:HC-SR04
248
-
249
- LED:NeoPixel Ring 12連フルカラー

1

回路図の追加、プログラムの意図

2021/02/12 03:26

投稿

mau
mau

スコア13

test CHANGED
File without changes
test CHANGED
@@ -34,6 +34,32 @@
34
34
 
35
35
 
36
36
 
37
+ 追記
38
+
39
+ 色々ご指摘ありがとうございます。回路図作成に手間取ってて返信が遅れました。
40
+
41
+ 写真の件については申し訳ございません。違う種類のものが混ざっていたようです。
42
+
43
+
44
+
45
+ プログラムについて補足させていただきますと、
46
+
47
+ 超音波センサーで距離を取得し、一定の距離以下(今回はとりあえず2としておきましたが、2未満は難しいという事ですので後ほど修正させていただきます。)になったとき、
48
+
49
+ LED 12連Ringが虹色に点灯するプログラムを書かせていただきました。
50
+
51
+ また、センサが感知するたびにLEDが光るというようにしたいです。
52
+
53
+ ゆくゆくは、9Vのモバイルバッテリーを搭載させ持ち運びができるようにする予定です。
54
+
55
+
56
+
57
+ 回路図もfrizingを用いて書かせていただきました。ご迷惑をお掛けしますが、再度ご教授お願いします。
58
+
59
+ ![回路図](e25c03414c95f89051c1225361a7147a.jpeg)
60
+
61
+
62
+
37
63
  ```
38
64
 
39
65
  特になし