AnalogIn - アナログ入力

AnalogIn - アナログ入力

Information

本ページは私家版のため、誤り等あればご指摘ください。
最新の情報は公式のドキュメントをご参照ください。 http://mbed.org/handbook/AnalogIn

ピンをアナログ入力に設定し、電圧を読み取ります。
12ビットのADコンバーターを搭載しています。

http://mbed.org/media/uploads/mbedofficial/analogin_interfaces.png

初期化

AnalogIn name(pin);

name: 名前(自由に決めて良い)
pin: ピン名(p15~p20)

入力

val = name;

val = name.read();

valには0(0V)~1.0(3.3V)の数値(float)が代入されます。

val = name.read_u16();

valには0(0V)~65535(0xffff, 3.3V)の数値が代入されます。(上位12ビットが有効)

Warning

一部のCPUのmbedライブラリについて、アナログ入力ピンの内蔵プルアップ/プルダウンがONになっているものがあります。(意図してか、意図せずか不明)
この場合、ドライブ能力の低い電圧源や、抵抗器を介したアナログ入力の値がおかしくなります。

ピンモードを設定しているレジスタを直接アクセスして、プルアップ/プルダウンをOFFにしてください。

アナログ入力を読み取り、1V(3.3V

#include "mbed.h"

AnalogIn ain(p20);
DigitalOut led(LED1);

int main() {
    while (1){
        if(ain > 0.3) {
            led = 1;
        } else {
            led = 0;
        }
    }
}

LPCXpresso LPC1768 コード

AD0入力

#include "LPC17xx.h"

int main() {
    int ad, ch = 0;

    LPC_SC->PCONP |= (1 << 12); // PCADC
    LPC_SC->PCLKSEL0 &= ~(3 << 24); // PCLK_ADC ck/4 (00)

    LPC_PINCON->PINSEL1 &= ~(3 << 14); // ADC0.0
    LPC_PINCON->PINSEL1 |= (1 << 14); // ADC0.0
    LPC_PINCON->PINMODE1 |= (2 << 14); // floating

    LPC_ADC->ADCR = (((SystemCoreClock / 4 / 120000 - 1) & 0xff) << 8)|(1 << 21)|(1 << ch); // PDN

    LPC_ADC->ADCR |= (1 << 24); // START
    while (! (LPC_ADC->ADGDR & (1 << 31))); // DONE

    ad = (LPC_ADC->ADGDR >> 4) & 0x0fff;
    LPC_ADC->ADCR &= ~(7 << 24); // STOP
}

詳細 戻る


2 comments on AnalogIn - アナログ入力:

15 Mar 2018

アナログ入力ピンの内蔵プルダウンがオンになっている場合、どうすればプルダウンをオフにできるでしょうか

07 May 2020

ボードによってはライブラリが不完全で、プルダウン/プルアップが有効になっているものがあるようですね。 ライブラリは将来修正されるかもしれませんが、とりあえずの対応として、使われているマイコンのマニュアルを読んで、ペリフェラルのレジスタをいじってプルダウン/プルアップを無効にすればいいと思います。

Please log in to post comments.