一覧へ   前へ<<  >>次へ


Aruduino でのパルス確認 (2020年08月14日更新)


Aruduino を使って、どれくらいの周波数でデジタル出力のON/OFFできるのかを調べてみました。
プログラム

プログラムは13番のピンを指定してLEDを点滅させるプログラムを引用して、13→7に変更、7番目のピンをオシロスコープで観察します。

(注:led_pinとありますが、7番に変えるとボード上のLEDは光りません)

で、delay( 50 );

の50という数字は50mSECを示しますが、この値を小さくしてきながら確認し、
最後はコメントアウトして最短の間隔でON/OFF動作させます。


const int led_pin = 7; // LED connected to digital pin 7

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

void loop() {
digitalWrite( led_pin, HIGH ); // sets the LED off
delay( 50 ); // waits for a second
digitalWrite( led_pin, LOW ); // sets the LED on
delay( 50 ); // waits for a second
}
50mSECの場合
画像準備中
10mSECの場合
画像準備中・・・
5mSECの場合

1mSECの場合

コメントアウトして0mSECにすると

オシロスコープのTIME/DIVを20μSECに設置すると、1目盛に線が3個見られました。

1目盛が20μSECなので、1秒間では1÷(20×10^(-6))=0.05×10^6 = 50000倍となるので、

3個×50000 = 150000回/sec つまり、150kHzになります。

(ON/OFFの周期は、20μSEC÷3≒7μSEC)


補足: 書くまでもないかも知れませんが、今回のプログラムはシンプルで短いですが、
色々と書き足していくと、もっと処理が遅くなります。

追記
ネットでAruduinoのクロック数を調べると、16MHzとのことでした。