皆さん こんにちは
ラズピコ研究員の 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チカすることができたでしょうか。
お疲れさまでした。