Arduino体験記 #01 とりあえず触ってみた
とあることから、Arduinoにふれることになりまして、やってみたら意外と面白くって、ちょっと続きそうと思っています。
とはいうものの、電子工作も初心者、プログラミングも初心者なので、最初は「ブレッドボードってなんやねん?!」から始まりました。
Arduinoって何?
Arduinoは、プログラミングと電子工作を組み合わせて、簡単にアイデアを形にできるツールです。初心者でも扱いやすいマイコンボードとして有名で、LEDを光らせるところからロボットを動かすまで、幅広いプロジェクトに対応しています。
私がArduinoに興味を持ったきっかけは「とあること」から始まりました(詳細はまた別の機会に!)。一見ハードルが高そうに見えたのですが、触ってみると意外と簡単で、楽しさにハマっています。
とりあえず触ってみた
最初に取り組んだのは、ブレッドボードにLEDをつないで点灯させること。ですが、ここで「ブレッドボードって何?」という壁にぶつかりました。
ブレッドボードは部品を簡単に接続できるツールで便利。はんだづけとかしなくっていいんだーとちょっとした喜びが。そのあとは、ネットの情報やChatGPTに頼りながら、なんとか配線してコードを書き、LEDを点滅させることに成功!小さな成功体験が嬉しいもんだなと。
超音波センサーとサーボモーター
「とあること」から、インプットの部材には超音波センサーを、アウトプットの部材にはサーボモーターを利用するってことだったので、手探りで配線からしてみることに。とはいうものの、やりかたなんてわからないわけですが、こんなときにもChatGPTで。
便利ですね。こんなふうに答えてくれるんだから…
そして配線はこんな感じで。これはTinkerCADで作成。
コードはChatGPTで
実は、プログラミングはChatGPTにかなり助けてもらっています。ゼロからはじめようとすると、取っ掛かりすらつかめないので。
#include <Servo.h>
// サーボモーターの初期化
Servo myServo;
// 超音波センサーのピン定義
const int trigPin = 9;
const int echoPin = 8;
// 変数定義
long duration;
int distance;
void setup() {
// 超音波センサーのピンモード設定
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// サーボモーターのピンを設定
myServo.attach(3);
// シリアルモニタを開始
Serial.begin(9600);
// サーボモーターを初期位置に設定
myServo.write(90);
}
void loop() {
// 超音波センサーで距離を測定
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Echoピンのパルス幅を計測
duration = pulseIn(echoPin, HIGH);
// 距離計算 (cm)
distance = duration * 0.034 / 2;
// シリアルモニタに距離を表示
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// 距離に応じてサーボモーターを動かす
if (distance < 20) {
myServo.write(0); // 物体が近い場合
} else if (distance < 50) {
myServo.write(90); // 中間距離の場合
} else {
myServo.write(180); // 物体が遠い場合
}
delay(500); // 0.5秒待機
}
時間が取れたので、これをコピペせずに、ポチポチと入力をしてみた。ゆっくり入力していくと「あー、これはこういう意味なのね」と気づけるものですね。
こんな感じに
このあと数値をちょっといじってみて、動き方を変えてみながら仕上がったのはこんな感じ。
まだまだ簡単なものですが、初めての電子工作とプログラミングでここまでできたのは、大きな一歩だなと。意外とできるもんだなと。
やろうと思ったら、できるもんですね。ということで、ちょとずつ進歩したらこちらのマガジンに追記していきます。
最後に
毎朝Voicyで音声配信しております。
また、僕についての情報やお問い合わせは
をご覧ください。