Arduino入門:その他の入出力関数

前回までの記事で、Arduinoのデジタルおよびアナログ入出力関数を取り上げてきましたが、今回は、その他の入出力関数について解説したいと思います。

siftOut

siftOutは、1バイト分のデータを1ビットずつシフトアウトします。MSB(最上位ビット)とLSB(最下位ビット)のどちらからもデータを送る事ができます。各ビットは、まずdataPinに出力され、その後clockPinが反転して、そのビットが有効になったことが示されます。 この機能はソフトウエアで実現されていますますので、高速な動作が必要な場合はハードウエアで実現されているSPIライブラリの使用した方が良いかも知れません。設定パラメータは以下の通りです。

dataPin: ビット出力ピン
clockPin: クロック出力ピン。dataPinに正しい値がセットされる毎に、このピンが1回反転します
bitOrder: MSBFIRSTまたはLSBFIRSTを指定します。(*)
value: 送信したいデータ (byte)

(*)備考
Most Significant Bit First: MSB(最上位ビット)から送信
Least Significant Bit First: LSB(最下位ビット)から送信

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:shiftOut()” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

上の例では、int型データを送っています。データサイズが2バイトなので、シフト演算子と組み合せて2回、shiftOutを使用しています。なお、dataPinとclockPinは、pinMode関数によってOUTPUT(出力)に設定されている必要があります。

siftIn

shifInは、1バイトのデータを1ビットずつシフトインします。MSB(最上位ビット)とLSB(最下位ビット)のどちらからでも開始できます。最初に、clockPinがHIGHになり、dataPinからデータが読み込まれ、clockPinがLOWに戻ります。設定パラメータは、次の通りです。

dataPin: 入力ピン
clockPin: クロック出力ピン
bitOrder: MSBFIRSTまたはLSBFIRSTを指定

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:shiftIn()” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

pulseIn

pulseInは、ピンに入力されるパルスを検出します。設定パラメータは次の通りです。

pin: パルス入力のピンの番号
value: 測定するパルスの種類。HIGHまたはLOW
timeout(省略可): タイムアウトまでの時間(単位・マイクロ秒)。デフォルトは1秒 (unsigned long)

戻り値は、パルスの長さ(マイクロ秒)で、パルスがスタートする前にタイムアウトとなった場合は0 (unsigned long)を返します。この関数で計測可能な時間は、およそ10マイクロ秒から3分で、あまりに長いパルスは、エラーとなる可能性があります。

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:pulseIn()” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

上の例では、パルスの種類(value)をHIGHに指定しているので、入力がHIGHに変わると時間計測を始め、またLOWに戻ったら、そこまでの時間(マイクロ秒単位)がdurationに格納されます。

tone

toneは、指定周波数の矩形波(50%デューティ)を発生させます。durationを指定しなかった場合、noTone()を実行するまで動作を続けます。設定パラメータは次の通りです。

pin: トーンの出力ピン
frequency: 周波数(Hz)
duration: 出力時間(ミリ秒)、オプションで省略可能。

なお、この関数を使用すると、3と11番ピンのPWM出力が使用できなくなるので注意して下さい。

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:tone()” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

toneを利用すると、出力ピンに圧電ブザーやスピーカに接続すれば、一定ピッチの音を再生できます。 ただし、同時に生成できるのは1音だけで、既に他で、tone()が実行されている場合、次のtone()は効果がありません。また、同じピンに対してtone()を実行すると周波数が変化します。

noTone

noToneは、toneで開始された矩形波を停止します。toneが実行されていない場合は何も起こりません。設定パラメータは次の通りです。

pin: トーンを停止するピン番号

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:noTone()” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

→その他のArduino関連情報

Sponsored Link