🤖
エンジくん
これまではLEDをON/OFFしていたね。今日は「つまみ(可変抵抗)」を回すとLEDの明るさがなめらかに変わる「アナログ制御」を学ぼう!
1このレッスンで学ぶこと
- 🎛 可変抵抗(つまみ) — 0〜1023の値を読む
- 📡 analogRead() / analogWrite() — アナログ入出力の基本
- ⚡ PWMとは — 高速ON/OFFで「中間の明るさ」を作る
- 🔢 map()関数 — 0〜1023を0〜255に変換する
- 🎮 つまみシミュレーター — ドラッグして明るさを操作!
2用意するもの
💡 部品名をクリックすると詳しい説明とAmazonリンクが見られるよ!
3analogRead と analogWrite
analogRead(A0)
0 〜 1023
アナログピン(A0〜A5)の電圧を読む。0Vなら0、5Vなら1023。可変抵抗やセンサーの値を読むのに使う。
analogWrite(9, x)
0 〜 255
PWM対応ピン(~3,5,6,9,10,11)にPWM信号を出力。0で消灯、255で最大輝度。
🔄 map()関数
map(value, fromLow, fromHigh, toLow, toHigh)
ある範囲の値を別の範囲に比例変換します。
int raw = analogRead(A0); // 0〜1023
int pwm = map(raw, 0, 1023, 0, 255); // 0〜255に変換
int pwm = map(raw, 0, 1023, 0, 255); // 0〜255に変換
🤖
エンジくん
PWMピンはボードに「~」マークがついているよ!D9・D10・D11はLesson 5で使ったピンと同じ。PWMとデジタル出力を両方使えるよ。
4PWMのしくみ
Arduinoのデジタルピンは5Vか0Vしか出せません。でも高速でON/OFFを繰り返すと、目や部品には「2.5V」のように見えます。これがPWMの魔法!
ON時間の割合(デューティ比)を変えると平均電圧が変わる
5コードを書こう
// つまみでLEDの明るさを制御
int potPin = A0; // 可変抵抗のピン
int ledPin = 9; // LEDのピン(PWM対応)
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int raw = analogRead(potPin); // 0〜1023
int pwm = map(raw, 0, 1023, 0, 255); // 0〜255に変換
analogWrite(ledPin, pwm); // LEDの明るさを変える
Serial.print("raw="); Serial.print(raw);
Serial.print(" pwm="); Serial.println(pwm);
delay(50);
}
int potPin = A0; // 可変抵抗のピン
int ledPin = 9; // LEDのピン(PWM対応)
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int raw = analogRead(potPin); // 0〜1023
int pwm = map(raw, 0, 1023, 0, 255); // 0〜255に変換
analogWrite(ledPin, pwm); // LEDの明るさを変える
Serial.print("raw="); Serial.print(raw);
Serial.print(" pwm="); Serial.println(pwm);
delay(50);
}
🔌 配線のポイント
- 可変抵抗の3本足:左端→GND、中央→A0、右端→5V
- D9(PWM) → 220Ω → LEDアノード → GND
- つまみを回すとA0の電圧が0〜5Vで変わる
6実際につないでみよう!
7クイズに挑戦!
🤖
エンジくん
PWMとアナログ制御の仕組みは理解できたかな?
クイズを読み込み中…
8つまみシミュレーター🎮
🤖
エンジくん
仮想のつまみをドラッグして回してみよう!LEDの明るさとPWM波形がリアルタイムで変わるよ!
🎛 アナログ制御シミュレーター — つまみをドラッグして回そう!
可変抵抗(つまみ)
ドラッグで回す
LED
0%
0
analogRead (0〜1023)
0
analogWrite / PWM (0〜255)
0.0V
平均電圧
0%
デューティ比
📊 PWM波形 — 黄色がHIGH(5V)、グレーがLOW(0V)
9まとめ
- ✅
analogRead(A0)で可変抵抗の値(0〜1023)を読める - ✅
analogWrite(9, val)でPWM出力(0〜255)を制御 - ✅ PWMは高速ON/OFFで「中間の明るさ」を作る
- ✅
map()で異なる範囲の数値を変換できる - ✅ PWM対応ピンは「~」マーク付き(D3,5,6,9,10,11)