こんにちは。岩本です。今週もマウスやっていきます。
今回は、プログラムの練習として、Lチカやってみようかと思います。
今回、参考にさせてもらったのは、shotaさんのブログ。プログラムに日本語解説入ってるので分かりやすかったです。(shotaのマイクロマウス研修29 ESP32マウスでLチカ)
とりあえず、新規プロジェクトを作成します。
下図のように、Create New Projectをクリックして、Name・Board・Frameworkを下図のように設定してプロジェクトを作成します。

次に、Lチカ用のプログラムをそのまま貰ってきて、貼付けました。

プログラム内容は、ほとんど丸パクリ参考にさせてもらいました。
変更点といえば、LED一個でいいやと思い、22ピンのみに変更しました。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#define GPIO_OUTPUT_IO_0 22 //出力ピンの設定
void app_main(void)
{
gpio_config_t io_conf;
// 割り込みをしない
io_conf.intr_type = GPIO_PIN_INTR_DISABLE;
// 出力モード
io_conf.mode = GPIO_MODE_OUTPUT;
// 設定したいピンのビットマスク
// 1ULLはunsigned long long(64bit)で1を表現する
// 22ピンを設定するので、ビットマスクは下記のようになる
// 上位32ビット:MSB|0000 0000|0000 0000|0000 0000|0000 0000|
// 下位32ビット: 0000 0000|0100 0000|0000 0000|0000 0000|LSB
io_conf.pin_bit_mask = (1ULL<<GPIO_OUTPUT_IO_0) ;
// 内部プルダウンしない
io_conf.pull_down_en = 0;
// 内部プルアップしない
io_conf.pull_up_en = 0;
// 設定をセットする
gpio_config(&io_conf);
int cnt = 0;
while(1) {
// カウンタcntをインクリメント
printf("cnt: %d\n", cnt++);
// 1秒停止
vTaskDelay(1000 / portTICK_RATE_MS);
// gpioの出力をセットする
// 0: Lo, 1: Hi
// cntが奇数のとき、cnt % 2が1になるので、出力はHi
// cntが偶数のとき、cnt % 2が0になるので、出力はLow
gpio_set_level(GPIO_OUTPUT_IO_0, cnt % 2);
}
}
とりあえず、22ピンとGNDをLEDでつないで、以下の動画のように光らせることが出来ました。
22ピンからは、約3.3Vの電圧が来ています。今回使用したLEDは、たまたま手持ちにあった抵抗入りの物を使用しています。(抵抗内蔵5mm赤色LED(5V用))

さて、LEDがきちんと光ったので、次回からはプログラムの方の勉強をしていきましょう。
ついでに、PlatformIO IDEのいいところ、ESP-IDFのときはただのテキストエディタで開いていたので、簡単に追うことが出来ませんでしたが、PlatformIO IDEでは、PI:COのときの統合開発環境CS+と同じように、調べたい部分を選択して定義を調べれば、飛ぶことが出来ます。

飛ぶと下図のように構造体になっていることがわかります。
なんとなく、リンク先がわかると納得しやすいですね。

本日はここまで!
