メインコンテンツに移動

アナログ I/O

アナログ I/O

アナログ信号の入力や出力をするためのライブラリです。

analogReference

概要
アナログ入力で使われる基準電圧を設定します。analogRead関数は入力が基準電圧と同じとき1023を返します。 例えば、DEFAULT設定ではArduino互換の基準電圧5.0Vとして設定されるため、3.3Vを入力した場合は675が返されます。 ただし、5Vは入力できませんので注意してください。なお、RAW12BIT(12ビットA/D変換)設定時は基準電圧と同じとき、4095を返します。
文法
analogReference(uint8_t mode)
パラメータ
mode:
   DEFAULT:5.0V (Arduino互換)
   INTERNAL:1.1V (内蔵電圧)
   EXTERNAL:AVREFピン供給電圧
   RAW12BIT:3.3V (12ビットA/D変換を行う)
戻り値
なし

analogRead

概要
アナログ値を読み込みます。
文法
int analogRead(uint8_t analog_pin)
パラメータ
analog_pin: アナログピン番号(A0~A7、または22~27)
戻り値
0~1023、12ビットA/D変換時は、0~4095

analogWrite

概要
アナログ値(PWM波)を出力します。LEDの明るさを変えたいときや、モータの回転スピードを調整したいときに使えます。PWM信号の周波数は約490Hzです。
文法
analogWrite(uint8_t pin, int value);
パラメータ
pin: ピン番号(最大15chまで設定可能)
value: 出力するPWMのデューティ(0~255)
戻り値
なし

analogWriteDAC

概要
デジタル値をアナログ変換して出力します。analogWriteと違い、PWMではありません。デジタル値が1023のとき、3.3Vが出力されます。
文法
analogWriteDAC(int pin, int value)
パラメータ
pin: ピン番号(53のみ)
value: アナログ変換値(0~1023)
戻り値
なし

サンプルプログラム

SAKURA上のLEDをナイトライ○ー風に光らせます。


#include <Arduino.h>
unsigned char ledpat[6][4] = {
    { 20, 50, 100, 200 },
    {  50,100,200,  20 },
    { 100,200, 20,  50 },
    { 200, 20, 50, 100 },
    { 100,200, 20,  50 },
    {  50,100,200,  20 },
};
 
void setup()
{
    pinMode(PIN_LED0,OUTPUT);
    pinMode(PIN_LED1,OUTPUT);
    pinMode(PIN_LED2,OUTPUT);
    pinMode(PIN_LED3,OUTPUT);
}
 
void loop()
{
    int i;
    for (i = 0; i < 6; i++){
        analogWrite(PIN_LED0, ledpat[i][0]);
        analogWrite(PIN_LED1, ledpat[i][1]);
        analogWrite(PIN_LED2, ledpat[i][2]);
        analogWrite(PIN_LED3, ledpat[i][3]);
        delay(100);
    }
}