Розмір відео: 1280 X 720853 X 480640 X 360
Показувати елементи керування програвачем
Автоматичне відтворення
Автоповтор
いつも動画を拝見して参考にさせていただいております、ありがとうございます。ジョイスティック回路で、ドライバーのクロックをマイコンで作らず、555から供給しているのはノイズ、精度等なんらかの問題があるからでしょうか?
観ていただきありがとうございます。ノイズや精度は気にしていません。555でクロックを発振させておけば,正確な時間設定は出来ませんが半固定抵抗で好みの速さにできるので,調整が楽というのが理由です。ジョイスティックコントロール版の場合,loop()の中にたくさんif文があるので,loop()の中でloop() { if ... if ... if ... ・ ・ ・ digitalWrite(xxx,HIGH); delay(yyy); digitalWrite(xxx,LOW); delay(zzz);}とやると,Aruduino のプログラム実行時間に制約され,クロック周波数を設定しずらい,また,その分を delay の yyy, zzz で調整しないとクロックの duty が偏ると思ったからです。しかし今になって,ステッピングモーターに送るクロックはせいぜい数百Hzなのに対し,Arduinoは16Mhzで動いているので,プログラム実行の遅延は微々たるものでは,という気がしてきたので,試しに loop に digitalWrite(0,LOW); digitalWrite(0,HIGH); という行を追加して,オシロで D0 の波形を実測してみました。すると,やはり loop 1回に370usほどかかっていました。タイムラプス版の場合は,時間に正確な必要があるので Arduinoからクロックを送ることにして,for文内のif文判断処理は極力減らし,digitalWrite文で HIGH LOW をグルグル繰り返してクロックを作りました。
@@sotobotech5920 さん、返信ありがとうございます。確かにloop内のdeleyでクロックを作るのは無理がありますね。ほとんどのマイコンはハードでレジスタ設定だけで動作するタイマーを持っていて、AVRも3本もっています。”Arduinoタイマレジスタ設定表”で検索すれば概要はわかると思います。(詳細は”AVR130.pdf”で検索)ArduinoはそのうちTimer0はシステムで使っていますが、Arduino環境でも2本は使えます。MsTimer2というライブラリもあり、こちらはTimer2がms単位ですが割り込みルーチン経由で使えます。
@@mrrazyc 情報ありがとうございます。
@@sotobotech5920 さん、そう言って貰えると僅かでもお返しが出来たように感じられて嬉しいです。私はソフト中心でやってきたので、いつも動画を拝見して回路の勉強をさせて頂いております。
いつも動画を拝見して参考にさせていただいております、ありがとうございます。
ジョイスティック回路で、ドライバーのクロックをマイコンで作らず、555から供給しているのはノイズ、精度等なんらかの問題があるからでしょうか?
観ていただきありがとうございます。
ノイズや精度は気にしていません。
555でクロックを発振させておけば,正確な時間設定は出来ませんが半固定抵抗で好みの速さにできるので,調整が楽というのが理由です。
ジョイスティックコントロール版の場合,loop()の中にたくさんif文があるので,loop()の中で
loop() {
if ...
if ...
if ...
・
・
・
digitalWrite(xxx,HIGH);
delay(yyy);
digitalWrite(xxx,LOW);
delay(zzz);
}
とやると,Aruduino のプログラム実行時間に制約され,クロック周波数を設定しずらい,
また,その分を delay の yyy, zzz で調整しないとクロックの duty が偏ると思ったからです。
しかし今になって,ステッピングモーターに送るクロックはせいぜい数百Hzなのに対し,Arduinoは16Mhzで動いているので,
プログラム実行の遅延は微々たるものでは,という気がしてきたので,試しに loop に
digitalWrite(0,LOW);
digitalWrite(0,HIGH);
という行を追加して,オシロで D0 の波形を実測してみました。すると,やはり loop 1回に370usほどかかっていました。
タイムラプス版の場合は,時間に正確な必要があるので Arduinoからクロックを送ることにして,
for文内のif文判断処理は極力減らし,digitalWrite文で HIGH LOW をグルグル繰り返してクロックを作りました。
@@sotobotech5920 さん、返信ありがとうございます。
確かにloop内のdeleyでクロックを作るのは無理がありますね。
ほとんどのマイコンはハードでレジスタ設定だけで動作するタイマーを持っていて、AVRも3本もっています。
”Arduinoタイマレジスタ設定表”で検索すれば概要はわかると思います。(詳細は”AVR130.pdf”で検索)
ArduinoはそのうちTimer0はシステムで使っていますが、Arduino環境でも2本は使えます。
MsTimer2というライブラリもあり、こちらはTimer2がms単位ですが割り込みルーチン経由で使えます。
@@mrrazyc 情報ありがとうございます。
@@sotobotech5920 さん、そう言って貰えると僅かでもお返しが出来たように感じられて嬉しいです。
私はソフト中心でやってきたので、いつも動画を拝見して回路の勉強をさせて頂いております。