Raspberry Pi Pico(ラズパイPico)をArduino開発環境からプログラムしてみます。まずは基本のLチカやってみるのと、ArduinoUNO、C/C++記述での処理速度を比較してみました。
▼PicoをArduino環境で使う方法はこちら▼
GPIOピンの入出力記述は、Arduino記述のままです。
void setup() { pinMode(25, OUTPUT); } void loop() { digitalWrite(25, HIGH); delay(50); digitalWrite(25, LOW); delay(500); }
▲PicoのオンボードLEDはGP25ピンに接続されてます。関数の使い方も書き込み方法のArduinoのままです。
▲Picoに書き込んで点灯確認。これだけでは少しさみしいので、ArduinoUNOや、C/C++記述との速度比較もしてみました。
まずは、ArduinoUNOのサンプルソース(スケッチ)です。
for (int i = 0; i < 9999; i++) { digitalRead(13); } for (int i = 0; i < 9999; i++) { raw = PINB & B00100000; }
▲13ピンの入力状態を確認する2パターンの方法です。後者は、レジスタ直接読み込んでます。よく見かける高速処理の記述となります。ともに10,000回読み込んだときの速度計測してみました。
▼Uno結果▼
▲レジスタ読み込むほうが圧倒的に早いですね。(micros()
で挟んでるだけなので速度計測はざっくりです。)
次にラズパイPicoです。比較ソースは以下
for (int i = 0; i < 9999; i++) { digitalRead(15); } for (int i = 0; i < 9999; i++) { raw = gpio_get(15); }
▲15ピンの状態を確認してます。前者はUNOと同様。後者はC/C++での記述です。ArduinoIDEでC/C++記述もそのまま書けます。
▼Pico計測結果▼
C/C++のほうがマイコンよりの記述なので早いですね。また当然ですがArduinoよりもPicoのほうが高速で、UNO(digitalRead)、Pico(C/C++)と比べると50倍近く違います・・。ざっくりした計測なので参考て程度で・・。
PicoをArduinoでそのまま使えるのはかなり便利です。
▼Picoのマルチコア(デュアルコア)を使った速度比較はこちら▼
コメント