🤖
エンジくん
ロボットアームや扉の自動開閉に使われるサーボモーター!つまみを回すだけで角度をピッタリ指定できるよ。Arduinoの
Servoライブラリで自由自在に動かそう!
1このレッスンで学ぶこと
- ⚙️ サーボモーター — 0〜180°を指定して止められるモーター
- 📚 #include <Servo.h> — Arduinoのライブラリを読み込む
- 🔧 myservo.write(角度) — 0〜180の数値で角度指定
- 🔄 map() — つまみの値(0〜1023)を角度(0〜180)に変換
- 🎮 サーボシミュレーター — スライダーでアームが動く!
2用意するもの
3サーボモーターのしくみ
⚙️ サーボモーターってなんだろう?
通常のモーターは「回り続ける」だけですが、サーボモーターは内部に位置検出センサーがあり、0〜180度の好きな角度でピッタリ止まることができます!
↩️
0度
一番左(始点)
⬆️
90度
真ん中(垂直)
↪️
180度
一番右(終点)
🔌 3本の線の意味
赤
茶/黒
橙/黄
赤線 → 5V(電源+)
茶/黒線 → GND(電源-)
橙/黄線 → D9(信号・PWM)
4コードを見てみよう
🔧 パターン1:決まった角度に動かす
#include <Servo.h> // Servoライブラリを読み込む
Servo myservo; // サーボオブジェクトを作成
void setup() {
myservo.attach(9); // D9ピンにサーボを接続
}
void loop() {
myservo.write(0); // 0度(左端)
delay(1000);
myservo.write(90); // 90度(真ん中)
delay(1000);
myservo.write(180); // 180度(右端)
delay(1000);
}
🎛️ パターン2:つまみでリアルタイム制御
#include <Servo.h>
Servo myservo;
const int POT = A0; // 可変抵抗のピン
void setup() {
myservo.attach(9);
Serial.begin(9600);
}
void loop() {
int val = analogRead(POT); // 0〜1023
int angle = map(val, 0, 1023, 0, 180); // 0〜180に変換
myservo.write(angle);
Serial.println(angle);
delay(15);
}
💡 delay(15)はサーボモーターが動き終わるのを待つ短い時間です。短すぎると動作がギクシャクするので15〜20ms程度がベストです!
5回路のつなぎ方
⚠️ SG90サーボは最大700mA流れることがあります。多数のサーボを使うときは外部電源を使いましょう。1個なら5VピンでOKです!
6実際につないでみよう!
7クイズに挑戦!
🤖
エンジくん
Servoライブラリの使い方と3本の線の意味をしっかり覚えよう!
クイズを読み込み中…
8サーボシミュレーター ⚙️
🤖
エンジくん
スライダーを動かしてサーボアームを回してみよう!プリセットボタンで特定の角度にもジャンプできるよ!
9まとめ
- ✅
#include <Servo.h>でServoライブラリを読み込む - ✅
myservo.attach(9)でD9ピンとサーボを接続する - ✅
myservo.write(角度)で0〜180の好きな角度に動かせる - ✅
map(val, 0, 1023, 0, 180)で可変抵抗の値を角度に変換 - ✅ サーボは赤=5V、茶/黒=GND、橙/黄=信号の3本線で接続