拡張 I/O(トーン出力やシフト入出力)

矩形波やシリアルデータの入出力(ソフトウェア)、パルス幅を測るためのライブラリです。

tone

概要

指定周波数の矩形波を生成します。ブザーで音を鳴らすのに便利です。

文法

tone(int pin, int frequency, int duration)

パラメータ

pin: ピン番号
frequency: 周波数[Hz]
duration: 出力を維持する時間[ms]。省略時、0指定時は出力し続ける。

戻り値

なし

noTone

概要

tone関数で出力した矩形波出力を停止する。

文法

noTone(int pin)

パラメータ

pin: ピン番号

戻り値

なし

shiftOut

概要

1バイト分のデータを1ビットずつ出力します。各ビットはまずdataPinに出力され、その後clockPinが反転して、そのビットが有効になったことが示されます。

文法

shiftOut(int dataPin, int clockPin, bitOrder, unsigned char value)

パラメータ

dataPin: データ出力ピン
clockPin: クロック入力ピン
bitOrder: MSBFIRST(最上位ビットから出力)、LSBFIRST(最下位ビットから出力)
value: 送信したいデータ(unsigned charで8ビットデータ)

戻り値

なし

shiftIn

概要

1バイトのデータを1ビットずつ取り込みます。まずclockPinがHIGHになり、dataPinから次のビットが読み込まれ、clockPinがLOWに戻ります。

文法

unsigned char shiftIn(unsigned char dataPin, unsigned char clockPin, bitOrder)

パラメータ

dataPin: データ入力ピン
clockPin: クロック出力ピン
bitOrder: MSBFIRST(最上位ビットから入力)、LSBFIRST(最下位ビットから入力)

戻り値

読み取った値(8ビットデータ)

shiftOutEx

概要

複数バイト分(32ビットまで)のデータを1ビットずつ出力します。各ビットはまずdataPinに出力され、その後clockPinが反転して、そのビットが有効になったことが示されます。

文法

shiftOutEx(int dataPin, int clockPin, bitOrder, int len, unsigned long value)

パラメータ

dataPin: データ出力ピン
clockPin: クロック入力ピン
bitOrder: MSBFIRST(最上位ビットから出力)、LSBFIRST(最下位ビットから出力)
len: 出力するデータのビット数
value: 送信したいデータ(32ビット以下のデータ)。MSBFIRSTの場合は最上位ビットを詰めておく必要があります。

戻り値

なし

pulseIn

概要

ピンに入力されるパルスの幅を測ります。

文法

unsigned long pulseIn(int pin, int val, unsigned long timeout)

パラメータ

pin: ピン番号
val: 測定するパルスの種類。HIGHまたはLOW
timeout: タイムアウトまでの時間(単位・マイクロ秒)。

戻り値

パルスの長さ[us] (unsigned long)。パルスがスタートする前にタイムアウトとなった場合は0。


サンプルプログラム

toneを使ったドレミ.


        #include <Arduino.h>
        void setup(){
            
        }
            
        void loop(){
            tone(3, 523); // C4
            delay(200);
            noTone(3);  
            tone(3, 587); // D4
            delay(200);
            noTone(3);  
            tone(3, 659); // E4
            delay(400);
            noTone(3);  
        }