ラズピコ C++で書いてみる

  • 2025.08.03
  • c++
ラズピコ C++で書いてみる

皆さん こんにちは

ラズピコ研究員の moon です。

この記事は「初心者必見! Raspberry Pi Picoの C/C++デバッグ環境を容易に構築する」によって環境構築していることを前提にしています。

前々回、 プロジェクト名を変更する でつくられたプロジェクトを C++ で書くにはどうやるのか試してみます。

(他にもっと良い方法があるかも知れませんが、とにかく実装してみます)

VSCode でプロジェクト led を開きます。

led.c を led.cpp に変更します。
(Ctrl + Shift + E でサイドバーにエクスプローラーを表示し、led.cを右クリックして名前の変更を選択します)

CMakeLists.txtの add_executable() にある led.c を led.cpp に変更し Ctrl + S で保存します。

CMakeLists.txtには以下の記述があります。

project(led C CXX ASM)

引数の CXX が C++ にも対応しているという意味になります。
あらかじめC++で記述する準備が整っているというわけです。

では次にソースコード本体を書いていきます。
C++の class を取り入れてみます。
LEDをON/OFFさせるコードを class化してみました。

led.cpp 中身を以下のコードで置き換えて、Ctrl + S で保存します。

#include "pico/stdlib.h"

#ifdef CYW43_WL_GPIO_LED_PIN
#include "pico/cyw43_arch.h"
#endif

#ifndef LED_DELAY_MS
#define LED_DELAY_MS 250
#endif

int pico_led_init(void) {
#if defined(PICO_DEFAULT_LED_PIN)
    gpio_init(PICO_DEFAULT_LED_PIN);
    gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT);
    return PICO_OK;
#elif defined(CYW43_WL_GPIO_LED_PIN)
    return cyw43_arch_init();
#endif
}

void pico_set_led(bool led_on) {
#if defined(PICO_DEFAULT_LED_PIN)
    gpio_put(PICO_DEFAULT_LED_PIN, led_on);
#elif defined(CYW43_WL_GPIO_LED_PIN)
    cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, led_on);
#endif
}

class Led {
public:
    Led();
    void on();
    void off();
};

Led::Led() {
    pico_led_init();
}

void Led::on() {
    pico_set_led(true);
}

void Led::off() {
    pico_set_led(false);
}

int main() {

    Led led;
    while (true) {
        led.on();
        sleep_ms(LED_DELAY_MS);
        led.off();
        sleep_ms(LED_DELAY_MS);
    }
}

Ctrl + Shift D で「実行とデバッグ」を起動し、F5でデバッグを開始し、main()関数に停止したらもう一度F5キーを押してプログラムを動かします。

このプログラムはLEDを点滅させるだけのシンプルなものです。
いかがでしたか?

皆さんは C++ のコードでLチカすることができたでしょうか。
お疲れさまでした。

c++カテゴリの最新記事