
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のマルチコア(デュアルコア)を使った速度比較はこちら▼


コメント