Arduinoで遊ぶページ

Arduinoで遊んだ結果を残すページです。
garretlab
digitalRead()

digitalRead()

概要

指定したピンがHIGHなのかLOWなのかを返します。Atmel社提供のライブラリ群を呼び出すことで実現しています。

digitalRead()のリファレンスはこちらをご覧ください。

ソースコード

digitalRead()は、hardware/arduino/sam/cores/arduino/wiring_digital.c に定義されています。以下に全ソースコードを示します。

extern int digitalRead( uint32_t ulPin )
{
        if ( g_APinDescription[ulPin].ulPinType == PIO_NOT_A_PIN )
    {
        return LOW ;
    }

        if ( PIO_Get( g_APinDescription[ulPin].pPort, PIO_INPUT, g_APinDescription[ulPin].ulPin ) == 1 )
    {
        return HIGH ;
    }

        return LOW ;
}
extern int digitalRead( uint32_t ulPin )
{

入力は、ピン番号(ulPin)です。

        if ( g_APinDescription[ulPin].ulPinType == PIO_NOT_A_PIN )
    {
        return LOW ;
    }

入力されたピン番号に対応するピンタイプ(g_APinDescription[ulPin].ulPinType)がPIO_NOT_A_PINであれば、LOWを返します。g_APinDescriptionにはArduinoの全てのピンの情報が定義されています。g_APinDescription[ulPin].ulPinTypeにPIO_NOT_A_PINが設定されているのは番兵だけです。

        if ( PIO_Get( g_APinDescription[ulPin].pPort, PIO_INPUT, g_APinDescription[ulPin].ulPin ) == 1 )
    {
        return HIGH ;
    }

        return LOW ;
}

PIO_Get()の値によって分岐します。PIO_Get()は、指定したピンの値を返す関数です(正確には少し違いますが)。PIO_Get()の戻り値が1のときはHIGHを返し、そうでない場合はLOWを返します。

バージョン

Arduino 1.5



メニューを表示するためにJavaScriptを有効にしてください。

Arduinoで遊ぶページ
Copyright © 2013 garretlab all rights reserved.
inserted by FC2 system