- Arduino初心者
- Arduinoで色々電子工作をしたい!
- Arduinoで何ができるか紹介してほしい!
こんにちは.けんゆー(@kenyu0501_)です.
今日はアルディーノを使った電子工作を色々とやっていこうと思う!
では,早速始めていこう!
PWM(Pulse Width Modulation)によるアナログ出力
PWMとは,オンとオフの時間区間を変えてやる事で,例えばLEDのような光強度を制御する事です.
厳密には,アナログ出力ではないですが,これをやることによってアナログっぽい出力ができます
蛍の光みたいですね!
概念図を貼っておきます.
(参考:Prototyping Lab)
作成したプログラミングはこちら(参考:Prototyping Lab)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | int led = 9; int brightness = 0; int fadeAmount = 5; void setup() { pinMode(led, OUTPUT); } void loop() { analogWrite(led,brightness); //光の間隔を変更する brightness = brightness + fadeAmount; //光の強度のフェードの方向を決める if (brightness <= 0 || brightness >= 255){ fadeAmount = -fadeAmount; } delay(100); } |
今回は,D13ではなく,D9に+側をさしているのですが,PWMを行う際には「〜」のマークが付いている箇所しかダメです.
つまり,D3,D5,D6,D9,D10,D11の6ピンのみPWMが対応してます.
可変抵抗のつまみを回してアナログでLEDを扱う
さてさて,次はアナログチックではなくて実際にアナログでLチカです.
可変抵抗を左右に回すと,抵抗値が変わるので,LED出力の強度が変わるというものです.
プログラムはこちら(参考:Prototyping Lab)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | const int sensorPin = 0; const int ledPin = 9; void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { int value = analogRead(sensorPin); Serial.println(value); int intensity =map(value, 0, 1023, 0, 255); analogWrite(ledPin, intensity); delay(100); } |
配線などは,見やすいように動画をとったので,参考にしてください!
可変抵抗器の仕組みはこちらです(参考:Prototyping Lab)
可変抵抗器の中にある二つのリングの通電する導線の長さで抵抗の大きさを決めているようですね.
また,このプログラム内ではSerial.printでシリアルにプリントしてます.
アナログ入力の値をグラフで確認
このような感じでアナログ信号のグラフ化も可能です.
方法は,「ツール」→「シリアルプロッタ」です.
数値でみたい場合は,Arduino IDEの右上にある「シリアルモニタ」で確認することができます.
Arduinoは簡単で面白い!
Arduinoは簡単ですごく面白いです!
ぜひ時間があればやってみてください!
関連ブログです!
Processingを使ったグラフィカルなLチカはこちらから!