◆以前からやりたかったNゲージの踏切電子工作です。アルデュイーノのプログラムを使ってSG90というサーボモーターをコントロールします。完成品は色々出ていますが、アマゾンさんでマイコンボード(900円)、サーボモーター(5個で1500円)で作れました。あとはカンカンカンの警報音とLEDの点滅が残っています。

◆まだ試作の段階ですが、動画に撮りましたのでご覧ください。

◆「アルデュイーノ・ナノ」というウノと同じ配列番号のマイコンボードです。このようにコンパクトで使いやすいです。電源コネクターはスマホと同じタイプCとなっています。

◆仕組みは線路の二か所に「リードスイッチ」を設置しています。

◆反対側です。リードスイッチは極性がないので、どちらか一方をグランド(マイナス)につなぎます。

◆そして車両の裏側に、100均の丸い磁石を貼り付けています。これが通るとリードスイッチがONとなり、通り過ぎるとOFFになります。

◆このように仕組みは簡単です。サーボモーターには爪楊枝を代用して付けています。

◆プログラムは、ここに貼っておきます。各行は1から始まり最後は33です。コピペで使えると思います。

--------------------------------------------------------------------

#include <Servo.h>

Servo myServo;  // サーボモーターの命令を作成
int switchPin = 2;  // リードスイッチのピン番号(①と②をタコ足配線)
int servoPin = 9;   // サーボモーターのピン番号
int pos = 0;        // サーボモーターの位置
bool isUp = false;  // 遮断棒の状態(起動時に上がっている状態にする)

void setup() {
  myServo.attach(servoPin);  // サーボモーターをピンに接続
  pinMode(switchPin, INPUT_PULLUP);  // リードスイッチピンを入力モードに設定
}

void loop() {
 if (digitalRead(switchPin) == LOW) { // ①②いずれかのスイッチが入ったら動作開始
    delay(15);  // デバウンス処理
 if (digitalRead(switchPin) == LOW) {
      isUp = !isUp;  // 状態を反転
  if (isUp) {
  for (pos = 0; pos <= 70; pos += 1) { // 遮断棒がゆっくり下がる
  myServo.write(pos);
   delay(40);  // 上がる遮断棒の速度調整
 }
} else {
  for (pos = 70; pos >= 0; pos -= 1) { // 遮断棒がゆっくり上がる
  myServo.write(pos);
   delay(40);  // 下がる遮断棒の速度調整
 }
}
  while (digitalRead(switchPin) == LOW);  // ①②いずれかのスイッチが入るまで待機     
  }
 }
}
-------------------------------------------------------------------

◆追伸:ご質問もお受けします。