Arduino-io-functions

提供:Dev Guides
移動先:案内検索

Arduino-I/O関数

Arduinoボードのピンは、入力または出力として構成できます。 これらのモードでのピンの機能について説明します。 Arduinoアナログピンの大部分は、デジタルピンとまったく同じ方法で構成および使用できることに注意することが重要です。

INPUTとして構成されたピン

Arduinoピンはデフォルトで入力として構成されているため、入力として使用する場合、* pinMode()*で入力として明示的に宣言する必要はありません。 このように構成されたピンは、高インピーダンス状態にあると言われます。 入力ピンは、ピンの前の100メガオームの直列抵抗に相当する、サンプリングする回路に対して非常に小さな要求を行います。

これは、入力ピンをある状態から別の状態に切り替えるのにほとんど電流がかからないことを意味します。 これにより、ピンは静電容量式タッチセンサーの実装や、LEDのフォトダイオードとしての読み取りなどのタスクに役立ちます。

何も接続されていない、または他の回路に接続されていないワイヤが接続されたpinMode(pin、INPUT)として構成されたピンは、ピン状態のランダムな変化を報告し、環境からの電気ノイズを拾い、または状態を容量結合します近くのピンの。

プルアップ抵抗

プルアップ抵抗は、入力が存在しない場合に入力ピンを既知の状態に導くのに役立ちます。 これは、入力にプルアップ抵抗(+ 5V)またはプルダウン抵抗(グランドへの抵抗)を追加することで実行できます。 10K抵抗は、プルアップまたはプルダウン抵抗に適した値です。

入力として構成されたピンでビルトインプルアップ抵抗を使用する

Atmegaチップには20,000個のプルアップ抵抗が組み込まれており、ソフトウェアからアクセスできます。 これらの組み込みプルアップ抵抗器にアクセスするには、* pinMode()*をINPUT_PULLUPとして設定します。 これにより、INPUTモードの動作が効果的に反転します。HIGHはセンサーがオフ、LOWはセンサーがオンであることを意味します。 このプルアップの値は、使用するマイクロコントローラーによって異なります。 ほとんどのAVRベースのボードでは、値は20kΩ〜50kΩであることが保証されています。 Arduino Dueでは、50kΩ〜150kΩです。 正確な値については、ボード上のマイクロコントローラーのデータシートを参照してください。

INPUT_PULLUPで構成されたピンにセンサーを接続する場合、もう一方の端をグランドに接続する必要があります。 単純なスイッチの場合、これにより、スイッチが開いているときにピンがHIGHになり、スイッチが押されるとLOWになります。 プルアップ抵抗は、入力として構成されたピンに薄暗く接続されたLEDを点灯するのに十分な電流を提供します。 プロジェクトのLEDが機能しているように見えても、非常に薄暗い場合は、これが起こっている可能性があります。

ピンがHIGHかLOWかを制御する同じレジスタ(内部チップメモリ​​位置)がプルアップ抵抗を制御します。 その結果、ピンがINPUTモードのときにプルアップ抵抗がオンになるように構成されたピンは、pinMode()を使用してピンをOUTPUTモードに切り替えると、ピンがHIGHに構成されます。 これは他の方向でも機能し、pinMode()で入力に切り替えられた場合、HIGH状態のままになっている出力ピンにはプルアップ抵抗が設定されます。

pinMode(3,INPUT) ;//set pin to input without using built in pull up resistor
pinMode(5,INPUT_PULLUP) ;//set pin to input using built in pull up resistor

OUTPUTとして構成されたピン

pinMode()でOUTPUTとして設定されたピンは、低インピーダンス状態にあると言われます。 これは、他の回路に相当量の電流を提供できることを意味します。 Atmegaピンは、最大40 mA(ミリアンペア)の電流を他のデバイス/回路に供給(正電流を供給)またはシンク(負電流を供給)できます。 これは、LEDを明るく点灯するのに十分な電流(直列抵抗を忘れないでください)、または多くのセンサーを実行しますが、リレー、ソレノイド、またはモーターを実行するのに十分な電流ではありません。

出力ピンから高電流デバイスを実行しようとすると、ピン内の出力トランジスタを損傷または破壊したり、Atmegaチップ全体を損傷したりする可能性があります。 多くの場合、これによりマイクロコントローラーのピンが「デッド」になりますが、残りのチップは依然として適切に機能します。 このため、特定のアプリケーションでピンからの最大電流が必要な場合を除き、出力ピンを470Ωまたは1k抵抗を介して他のデバイスに接続することをお勧めします。

pinMode()関数

pinMode()関数は、特定のピンが入力または出力として動作するように構成するために使用されます。 モードINPUT_PULLUPを使用して、内部プルアップ抵抗を有効にすることができます。 さらに、INPUTモードは内部プルアップを明示的に無効にします。

pinMode()関数の構文

Void setup () {
   pinMode (pin , mode);
}
  • pin -モードを設定するピンの番号
  • mode -INPUT、OUTPUT、またはINPUT_PULLUP。

int button = 5 ;//button connected to pin 5
int LED = 6;//LED connected to pin 6

void setup () {
   pinMode(button , INPUT_PULLUP);
  //set the digital pin as input with pull-up resistor
   pinMode(button , OUTPUT);//set the digital pin as output
}

void setup () {
   If (digitalRead(button ) == LOW)//if button pressed {
      digitalWrite(LED,HIGH);//turn on led
      delay(500);//delay for 500 ms
      digitalWrite(LED,LOW);//turn off led
      delay(500);//delay for 500 ms
   }
}

digitalWrite()関数

  • digitalWrite()*関数は、デジタルピンにHIGHまたはLOW値を書き込むために使用されます。 ピンがhttps://www.arduino.cc/en/Reference/PinMode [pinMode()]で出力として設定されている場合、その電圧は対応する値に設定されます:5V(または3.3Vボードでは3.3V )HIGHの場合、0V(グランド)LOWの場合。 ピンがINPUTとして設定されている場合、digitalWrite()は入力ピンの内部プルアップを有効(HIGH)または無効(LOW)にします。 内部プルアップ抵抗を有効にするには、https://www.arduino.cc/en/Reference/PinMode [pinMode()]をINPUT_PULLUPに設定することをお勧めします。

pinMode()をOUTPUTに設定せずにLEDをピンに接続すると、digitalWrite(HIGH)を呼び出すときにLEDが暗く見える場合があります。 pinMode()を明示的に設定しないと、digitalWrite()は内部プルアップ抵抗を有効にします。これは、大きな電流制限抵抗のように機能します。

digitalWrite()関数の構文

Void loop() {
   digitalWrite (pin ,value);
}
  • pin -モードを設定するピンの番号
  • -高、または低。
  • 例 *
int LED = 6;//LED connected to pin 6

void setup () {
   pinMode(LED, OUTPUT);//set the digital pin as output
}

void setup () {
   digitalWrite(LED,HIGH);//turn on led
   delay(500);//delay for 500 ms
   digitalWrite(LED,LOW);//turn off led
   delay(500);//delay for 500 ms
}

analogRead()関数

Arduinoは、ピンの1つに電圧が印加されているかどうかを検出し、digitalRead()関数を通じて報告できます。 オン/オフセンサー(オブジェクトの存在を検出する)と値が連続的に変化するアナログセンサーには違いがあります。 このタイプのセンサーを読み取るには、異なるタイプのピンが必要です。

Arduinoボードの右下部分には、「アナログ入力」とマークされた6つのピンがあります。 これらの特別なピンは、電圧が印加されているかどうかだけでなく、その値も示します。* analogRead()*関数を使用すると、ピンの1つに印加された電圧を読み取ることができます。

この関数は、0〜5ボルトの電圧を表す0〜1023の数値を返します。 たとえば、ピン番号0に2.5 Vの電圧が印加されている場合、analogRead(0)は512を返します。

analogRead()関数の構文

analogRead(pin);
  • pin -読み込むアナログ入力ピンの番号(ほとんどのボードでは0〜5、ミニおよびナノでは0〜7、メガでは0〜15)

int analogPin = 3;//potentiometer wiper (middle terminal)
  //connected to analog pin 3
int val = 0;//variable to store the value read

void setup() {
   Serial.begin(9600);//setup serial
}

void loop() {
   val = analogRead(analogPin);//read the input pin
   Serial.println(val);//debug value
}