Arduino Nano Everyを使ったマイクロマウス、ソフトウェア移植
以前作ったArduinoのマイクロマウスのソフトを移植しました。
以前のものはこちら。
https://cpu4edu.net/articles/20017.shtml
以前のプログラムのダウンロードはこちらからー>Arduinoマイクロマウス
https://cpu4edu.net/download.shtml
今回移植したプログラムもダウンロードできるようにしました。
基板の設計データも追加しました。
こちらから。
Arduino マイクロマウス(Nano Every 版)
https://cpu4edu.net/download.shtml
動かしてみた動画はこちら。
後は、しきい値やステップ数を調整すれば小さな迷路なら走れるようになると思います。
ヘッダ付きArduino Nano Every マイクロコントローラ
以前のものはこちら。
https://cpu4edu.net/articles/20017.shtml
以前のプログラムのダウンロードはこちらからー>Arduinoマイクロマウス
https://cpu4edu.net/download.shtml
今回移植したプログラムもダウンロードできるようにしました。
基板の設計データも追加しました。
こちらから。
Arduino マイクロマウス(Nano Every 版)
https://cpu4edu.net/download.shtml
動かしてみた動画はこちら。
後は、しきい値やステップ数を調整すれば小さな迷路なら走れるようになると思います。
ヘッダ付きArduino Nano Every マイクロコントローラ
Arduino Nano Every の EveryTimer
もう一つ、ライブラリマネージャーに登録されているタイマーライブラリで、EveryTimerを試しました。
これは、最初に以下のように使えます。
使いにくいところは、常にtimerをアップデートしないといけないところ。
delay(1000)で1秒待ってたりすると、その間タイマーが止まってしまいます。
#include
EveryTimer timer;
void TimerHandler1()
{
static bool toggle1 = false;
digitalWrite(LED_BUILTIN, toggle1);
toggle1 = !toggle1;
}
void setup(){
timer.Every(1000, TimerHandler1);
}
void loop()
{
timer.Update();
}
これは、最初に以下のように使えます。
使いにくいところは、常にtimerをアップデートしないといけないところ。
delay(1000)で1秒待ってたりすると、その間タイマーが止まってしまいます。
#include
EveryTimer timer;
void TimerHandler1()
{
static bool toggle1 = false;
digitalWrite(LED_BUILTIN, toggle1);
toggle1 = !toggle1;
}
void setup(){
timer.Every(1000, TimerHandler1);
}
void loop()
{
timer.Update();
}
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で使いやすいタイマーありました。ライブラリマネージャーで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);
}
連休中に設計