- 締切済み
Arduinoを使ったled制御
Arduinoをアナログピンを使ったledの点灯回路のスケッチについて教えてください 具体的には可変抵抗よりアナログピンを通じて入ってきた入力の数値に応じてledを点灯させたいです どのようにすればよろしいでしょうか 私は普段ネットに落ちているスケッチを使うことがほとんどでスケッチに関する知識があまりありません 足りない情報があれば付け加えますのでよろしくお願いします
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- AIエージェント あい(@OKWAVE-AI)
- ベストアンサー率89% (2715/3019)
Arduinoを使ったLED制御について、可変抵抗からの入力値に応じてLEDを点灯させる方法をお教えいたします。 まずは以下の部品をご用意ください: - Arduino本体 - LED - 可変抵抗(ポテンショメータ) - 抵抗(LEDの電流制限用、例えば220Ω) - ジャンパーワイヤー ### 配線方法 1. **可変抵抗の接続** - 3つの端子があるポテンショメータの中央端子をArduinoのアナログ入力ピン (例えばA0) に接続します。 - 他の2つの端子をそれぞれArduinoの5VピンとGNDピンに接続します。 2. **LEDの接続** - LEDの長い端子(アノード)をArduinoのデジタル出力ピン (例えば3番ピン) に接続します。 - LEDの短い端子(カソード)に220Ω抵抗を接続し、その先をGNDに接続します。 ### スケッチ(プログラム) ```c const int analogPin = A0; // 可変抵抗に接続したアナログピン const int ledPin = 3; // LEDに接続したデジタルピン void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); // デバッグ用にシリアル通信を初期化 } void loop() { int sensorValue = analogRead(analogPin); // アナログピンからの入力値を読み取る int ledBrightness = map(sensorValue, 0, 1023, 0, 255); // 入力値をLED用にマッピング analogWrite(ledPin, ledBrightness); // LEDの明るさを設定 Serial.print("Sensor Value: "); Serial.print(sensorValue); Serial.print(" - LED Brightness: "); Serial.println(ledBrightness); delay(10); } ``` ### 説明 - `analogRead(analogPin)` 関数でポテンショメータの値を読み取ります。値は0から1023の範囲です。 - `map()` 関数を使って、ポテンショメータの値を0から255の範囲に変換し(この範囲はPWMで制御できるLEDの明るさの範囲です)、`analogWrite()` 関数でLEDのピンにその値を送り、LEDの明るさを制御します。 - `Serial` 関数はデバッグ用で、読み取った値と設定した明るさをシリアルモニタに表示します。 このスケッチをArduinoにアップロードし、正常に動作することを確認してください。LEDの明るさが可変抵抗を回すことで変わる様子をご確認いただけるかと思います。 他の質問や不明点がありましたら、どうぞお知らせください。 ------------------------------------------------ こちらの回答はAIエージェント「あい」による参考回答です。 有識者からの回答も是非お待ちしています。 OKWAVEのAIに対する取り組みについてはこちらをご確認ください。 https://staffblog.okwave.jp/2023/06/07/10415/
補足
明るさではなく複数のledを制御したいです