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

回答編集履歴

1

コメントに対して追記しています。

2019/03/22 01:08

投稿

ta.fu
ta.fu

スコア1749

answer CHANGED
@@ -4,10 +4,19 @@
4
4
  attachInterruptを使うことで、IOに変化等があった場合、割り込み処理を行えます。
5
5
  ただし、loop()内でdelayによる時間待ちが結構あるのでうまく実装できるかどうかは不明です。
6
6
  まずdelayを呼ばないような実装にすれば、loop内の処理が速くなるのでは。
7
+ > 1、Interruptを使うとdelayが使えなくなってしますが、delayを使いたいです。
7
8
 
9
+ スイッチの検知のタイミングをもっと短くするには、loop内の処理時間をもっと短くする必要があります。
10
+ delayを使う理由を明確にし、それを実現しかつloop内の処理時間を短くするように設計をするしかないです。
11
+ 例えば、スイッチを押した時間からの経過時間を利用して、LEDやサーボを回すような設計にするとか。
12
+
8
13
  2について
9
14
  コードを見る限り、input_pinとinput_pin2がHIGHの間5秒位サーボが0~180度の間を往復しているようなので、もしかしたらコード通りの動作をしているのでは。
15
+ > 2、何故かinput_pin1,2がLOWの時は微動します...試してみると、LEDテープを動かす間にサーボモーターが微動しました。
10
16
 
17
+ LEDの駆動でノイズとかが入っているのではないですか。
18
+ LED部分を外してみて想定した動作になるか確認し、想定通りであれば、LED部分が悪いということになります。まあそうであれば、これ以上は、ハードよりの話になるため、ちょっと回答は難しいかも。
19
+
11
20
  3について
12
21
  led周りの実装がちょっとおかしい感じがします。
13
22
  showは全部のledの色の設定が終わったら1回だけやればいいはず(for分の外にshowがあるべき?)
@@ -15,4 +24,11 @@
15
24
 
16
25
  一応、オレンジというとr,g,bが(255,165,0)近辺ですが、もしあるとすると、rotateColorに渡すWheelPosが60近辺が比率的に近い値になるかも。
17
26
 
18
- とりあえず、現在どこが動いているかをSerial.printなどで出力しながら動作確認をしたらどうですか。
27
+ とりあえず、現在どこが動いているかをSerial.printなどで出力しながら動作確認をしたらどうですか。
28
+
29
+
30
+ > 3、その通りで、自分は真ん中から流れるものを作りたいのですが、白色だけがどうしても出ないんです。
31
+
32
+ 自分もマイコン内蔵のフルカラーLED(PL9823)を動かしたときがあるのですが、結構タイミングがシビアで決まった色にならない場合がありました。
33
+ こっちもLED40個をドライブするのではなく、初めに5個とか10個とかから始めてみたらどうですか。
34
+ もし、それでうまくいけば、複数ピンで40個を制御すればいいのでは。