3.サンプルプログラム実行確認-Raspberry Pi Pico Windows C言語プログラミング入門
自動インストールの場合、Pico開発環境保存先のフォルダ内”Visual Studio Code for Pico”をクリックし、Visual Studio Codeを起動します。このコマンドではCMakeの構成構築、その他各種のコマンドを実行後、Visual Studio Code を起動します。Windowsメニュー等で単独には起動しないで、常にこのコマンドラインから起動します。
手動でのインストールの場合、Windowsメニューから Windows > Visual Studio 2022 > Developer Command Prompt for VS2022を選択して、Windows メニューから開発者コマンド プロンプトウィンドウを開きます。ここで3.3.章で述べているように
>code
と打ち込み、Visual studio Codeを起動します。
5.1.はじめてのプログラム、オンボードLED点滅
以下Visual Studio Codeが起動します。
はじめてVisual Studio Code を起動した場合、上記の初期画面が表示されますが、既存または新規プロジェクトを過去開き作業をした場合、終了時の編集状態が表示されます。
画面左メニューの一番上のエクスプローラークリックで、pico-examplesプロジェクトを開きます。PICOインストール先のホルダに”pico-examples"のフォルダが作成されているはずです。これを選択し、"フォルダー選択"のボタンを押します。
以下、"pico-examples"プロジェクトがオープンされます。
5.1.1.プログラムの確認
プロジェクトは階層構造をとります。プロジェクトフォルダは複数のプロジェクトで構成されており、また、その下位の各階層プロジェクトは、さらに複数のプロジェクトに分かれています。
もし、画面下のブルーのバーに”No Kit Selected"が表示されている場合、ここをクリックし、コンパイラを選択します。Kitの一覧が表示されるので
"GCC 10.3.1 arm-none-eabi"を選択します。
次にblinkプロジェクトをクリックします。クリックすると、blinkプロジェクトに必要なファイル以下が表示されます。
blink.c
CMakeLists.txt
blink.cはこのプロジェクトのメインのC言語ソースリストです。この中のmain()関数が、実行時最初に、呼び出されます。CMakeLists.txtはCMakeがビルドに使用する設定ファイルです。プロジェクトには最低、この2つのファイルが必要です。blink.Cをクリックし、ソースリストを開きます。プログラムを確認してみます。
#include "pico/stdlib.h"
int main() {
#ifndef PICO_DEFAULT_LED_PIN
#warning blink example requires a board with a regular LED
#else
const uint LED_PIN = PICO_DEFAULT_LED_PIN;
gpio_init(LED_PIN);
gpio_set_dir(LED_PIN, GPIO_OUT);
while (true) {
gpio_put(LED_PIN, 1);
sleep_ms(250);
gpio_put(LED_PIN, 0);
sleep_ms(250);
}
#endif
}
他サンプルプログラムでも、#ifndef PICO_DEFAULT_LED_PINの記述がありますが、これは、全サンプルプログラムでLEDピンのGPIO番号を共通して定義するため、使用されています。このGPIO番号は25です。もしプログラムが動作しない場合、PICO_DEFAULT_LED_PINの定義が確実か、または、正しいヘッダーが読み込まれているかどうかを確認する必要があります。不明な場合、以下を追加し、LEDピンの定義を確実にするといいでしょう。
#define PICO_DEFAULT_LED_PIN 25
プログラムはまず、gpio_init(LED_PIN)でLEDのGPIOピン25を初期化します。次に、gpio_set_dir(LED_PIN, GPIO_OUT)でGPIOピンを出力モードにします。このあとWhile{true}で永久ループに入ります。この{}部分には、ループをつづけるための条件式を入力します。この場合trueのため、条件式は常にオンとなり、永久ループとなります。ループ内では、
gpio_put(LED_PIN, 1)
sleep_ms(250)
と
gpio_put(LED_PIN, 0);
sleep_ms(250);
の各処理があります。前半は、LEDを250msオンし、後半は250msオフします。GPIOの出力関数gpio_putに出力GPIOピン番号、および値をセットします、値は1でオン、0でオフとなります。sleep_ms関数は指定msec秒待機します。
5.1.2.ビルド
画面下、ブルーのステイタスバーで、ギアマーク横"Build"をクリックします。このとき、この"Build"ボタン横に[all]と表示されていれば、pico-examplesプロジェクト以下の下層のすべてのプロジェクトがビルドされるので、かなり時間がかかります。これを避けるために、[all]をクリックすると一覧が表示されるので、この一覧から"blink EXECUTABLE"を選択します。完了するとステイタスバーに[blink]と表示されます。
これらの操作は、画面左横のツールバーの"CMake"をクリックし、プロジェクト一覧を表示後、ビルドするプロジェクトを選択し、[elf]をクリック後、横に表示されるビルドアイコンをクリックすることでも可能です。
ビルドを開始します。
ビルド処理中は、画面下、処理出力表示部に結果が出力されます。
…
[driver] Build completed: 00:01:11.311
[build] Build finished with exit code 0
Exit code 0 で正常にビルドが完了したことが確認できます。
これで、実行ファイルが作成されました。過去に一度ビルドを行い、その後、インクルードファイル、本体ソースファイル等関連するソースファイルが変更されていない場合、ビルドを行っても、実行ファイルは更新されません。ファイル日付は古いままです。
インストール先の”pico-examples>build>blink”のフォルダを開きます。
ビルドされた各種ファイルが確認できます。Picoの実行ファイルは拡張子がuf2のファイルです。blink.uf2が実行ファイルです。他サンプルプロジェクトも同じですが、ビルド結果は”pico-examples"下の各プロジェクトフォルダには作成されません。”pico-examples>build>”の各プロジェクト下に作成されます。
5.1.3.プログラムの書き込みと実行
BOOTSELボタンを先に押したまま、PicoとPCをUSBケーブルTypeA-microBで接続します。ピコッという音と共に外部ドライブとして認識されます。
Blink.uf2をコピーします。Uf2ファイル日付が、ビルド実行日付になっていることを確認してください。これはビルドが正常に終了し最新の実行ファイルに更新されたことを意味します。
PicoがRPI-RP2、マスストレージとして、PCに認識されますが、このストレージドライブに先ほどコピーしたBlink.uf2ファイルを貼り付けます。貼り付けと同時にストレージドライブが解除され、プログラムが実行され、LEDが点滅を開始します。
While以下のソースを以下のように変更してみます。
while (true)
{
int interval = 2000;
for(int i = 0; i < 5; i++)
{
int timespan = 0;
while(timespan < 10000)
{
gpio_put(LED_PIN, 1);
sleep_ms(interval);
timespan += interval;
gpio_put(LED_PIN, 0);
sleep_ms(interval);
timespan += interval;
}
interval /= 2;
}
}
同様にビルドします。この改造されたプログラムではLED点滅が次第に早くなります。5ステップの点滅速度で繰り返されます。各ステップが10秒、計50秒で永久にくりかえします。
この内容、”Raspberry Pi Pico Windows C言語プログラミング入門”は 以下のサイトでPDFでご購入できます。
www.elabnet.jp ショップ
https://www.elabnet.jp/shopdata/#cc-m-product-14710382635