Arduino nano every のタイマ―割込み
Arduino Nano Every は以前のArduino UNO など Atmega328 で使えた、TimerOneやMsTimer2
が使えません。

探してみたらArduino Nano Everyで使いやすいタイマーありました。ライブラリマネージャーでmegaAVR_TimerInterrupt が検索すると出てきて、インストールして、TimerInterruptTest.ino を起動すると1秒間隔でLEDがON-OFFします。サンプルは長いです。

でも、timer1だけ抜き出すと簡単。
これでloop内のdelay(1000)で止まってるけど100ms毎にLEDを点滅。文字数制限のため変数名短縮、最初の2行はincludeの前にdefine入れとかないとエラーになります。


#define USE_TIMER_1 true // これをinclundeの前で定義しないとエラーになる
#define TIMER1_INTERVAL_MS 1000

#include "megaAVR_TimerInterrupt.h"

void TimerHandler1()
{
static bool toggle1 = false;
digitalWrite(LED_BUILTIN, toggle1);
toggle1 = !toggle1;
}

void setup()
{
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
ITimer1.init();
ITimer1.attachInterruptInterval(TIMER1_INTERVAL_MS , TimerHandler1);
}

void loop()
{
delay(10000);
}


連休中に設計
仕事なのか趣味なのかわからない感じで、設計してました。
連続回転サーボでケーブルを巻き取るクレーンのようなもの。

Arduino Nano Everyを使ったマイクロマウス、ハード完成
PCBGOGOで広告付き基板が無料で作れるというので勢いで作ったArduino Nano Everyのマイクロマウス基板にやっと部品を探して載せてハードは完成、ソフトはまだ。
基板を作ったのは2月だから3か月寝かしてた。







alt
ヘッダ付きArduino Nano Every マイクロコントローラ
水上ドローンのフロート第2案。スラスターの回転の計算が間違ってたみたいで思った方向に動かない動画。
カメラのケーブル長について
カメラを水中にぶら下げて水底を撮ろうと思ってます。
とりあえず、5mの切り売りの6Cのロボットケーブルを買いました。
巻取りも考えて高屈曲性ケーブルで細いです。
スリップリングも間にいれて、接続してみます。
懸念事項は、ケーブルの長さによるインピーダンス。

手書きの結線。



その写真。



やっぱり映像が乱れます。全く映らないわけではないですがとぎれとぎれ。
信号が遅れてるのか、レスポンスが悪いのか、電源線の容量が不十分なのか。

最初試したのが、カメラの電源ケーブルの近くに大きめの電解コンデンサを入れてみました。
すると、とぎれが少なくなり、電源が一番怪しいことが分かります。

カメラに照明用LEDがついてるので点灯してみたら、映像が止まってしまいました。
やっぱり電源を何とかしないといけない。

逆にカメラの電源線の方から電力供給して、5mケーブルの先のBECや受信機を動かしてみると、やっぱり映像が途切れます。
これは画像伝送を行ってる受信機の電力不足、ケーブルのインピーダンスが邪魔してます。

考えた末の解決策は、カメラ用に別電源を積むこと。カメラ内の回路とLED点灯は身近なバッテリーを使い、信号を送るのみ。
受信機側はモーター駆動にも使うバッテリーからBECで電源供給。

そうすると、映像もスムーズで、LED点灯しても映像が切れることはなくなりました。
LEDを点灯してカメラと受信機で300mA,LEDに300mAくらい流れてたので、カメラ用電源は4-500mA必要だけど、3セル500mAくらいの電源を積んでおけば1時間くらいは持つでしょう。


amazonから購入したのはこの5mのタイプ
協和ハーモネット スリムロボットケーブル KRT AWG28 X 6C 3m

- CafeLog -