ArduinoでADC調光を行う

PWM制御

Arduinoでアナログ制御を行おうとすると、PWM制御という単語にたどりつく。
Arduinoは基本的に0Vか5Vの電気の出力しか行えない。しかし、PWMは出力する電気を高速でON/OFFすることで、疑似的に出力する電気の量を変えることができる。
100回のON/OFFの切り替えで、50回だけ5Vを出力し、疑似的に2.5Vの電気を出力することができる。

アナログ出力とアナログ入力

アナログ出力でLEDの明るさを調節する

ArduinoはPWM制御の行えるピンが決まっている。
3、5、6、9、10、11ピンが使える。
今回は3番ピンでPWMによるLEDの調光を行う。

使う回路はこんな感じ。
スイッチがついているが、今回は使わない。


int led;

void setup() {
  pinMode(3,OUTPUT);
}

void loop() {
  for(led=0;led<256;led++){
    analogWrite(3,led);
    delay(5);
  }

  for(led=255;led>0;led--){
    analogWrite(3,led);
    delay(5);
  }
}

Arduinoでアナログ出力を行うときはanalogWrite()という関数を使う。
アナログ出力で注意するところは、Arduinoでは0Vから5Vの変化を0から255の数値に変換して行う。
5Vの電気を出力したいとき255を引数として与え、2.5Vなら127の数値を引数として与える。





アナログ入力を行ってアナログ出力を調節する

Arduinoでアナログ入力を行うときはA0からA7というピンを使う。
「A」はanalogのAである。
アナログ入力を行うので、可変抵抗器をスイッチの代わりに使ってみた。
可変抵抗器はその名の通りに、抵抗の値を変化させることができる。
これを使って、抵抗値の変化をアナログ入力してLEDの調光を行ってみる。

int led;
int sw;

void setup() {
  pinMode(A1,INPUT);
  pinMode(3,OUTPUT);
}

void loop() {
  //入力
  sw=analogRead(A1);

  //処理
  led = sw/4;

  //出力
  analogWrite(3,led);
}

アナログ入力をするときは、analogRead()という関数を使う。
analogRead()は入力されたデータを0から1023の数値で扱う。
最大値が1023なので、これを4で割ればだいたい255くらいの数値になる。




こういったLEDの調光をADC調光という。
ADCとはアナログデジタルコンバータの略称である。
アナログで入力されたものをデジタルに変換するという意味である。
アナログ回路を勉強するとこの単語がててくる。覚えておくと便利である。





コメント

このブログの人気の投稿

STM32CubeIDEに日本語化プラグインを導入する

STM32F401でLチカをする(LED点灯)

STM32F401-Nucleoでシリアル通信をやってみる