m5stamp c3で内蔵LEDを点灯させる

# はじめに

スイッチサイエンスで購入したm5stamp c3が手元に届いたが日本語記事が少なく自分同様内蔵LEDの点灯に若干手間取った初心者向けに書いています。
ドライバのダウンロードから点灯パターンの変化まで一通り自分のやった手順を紹介します。

## 環境
macOS Big Sur　11.6
Arduino IDE 1.8.16

## m5stamp c3の使い方

m5stamp c3以下c3はEspressif社の ESP32-C3 RISC-V MCUを搭載した小型のwifi内蔵マイコンでesp32 devkitをさらに小型にしたもので、以前esp32で使ったline notifyからライン通知を飛ばすコードが動いたので多分他のもいけると思います

arduino ideを使用して書き込む時はボードマネージャーを最新のものにしておけばボードの選択はできるけど書き込みにはドライバのインストールが必要です。


## ボードマネージャーにesp32を追加する

すでにesp32用のボードマネージャーが入ってる人は更新して最新のものにすれば良いので以下の手順は不要です。

そもそもesp32がArduino ideで使用できる必要があるのでArduinoの環境設定から追加のボードマネージャに以下のURLを貼り付けてボードマネージャーをインストールしてさい。（URLを開いた中身でなくURLそのものを貼る）
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json

次にツールからボードマネージャを開いて
![スクリーンショット 2021-11-20 9.51.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1055872/d8e74bc9-3878-6d1e-b58f-3ff99d78678f.png)


検索窓でesp32を入力すると以下のパッケージが出てくるのでインストールします
![スクリーンショット 2021-11-20 9.55.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1055872/5508cab2-1ba8-547c-ea4c-80af417616cc.png)

自分の場合はもうインストールしてありますが、していないと削除のあたりにインストールのボタンがあるのでインストールします

これでボードからESP32C Dev Moduleが選択できるようになります。書き込む際はこいつを選択します

![スクリーンショット 2021-11-20 9.38.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1055872/9203c09c-41a0-1db4-07a8-f963221223e6.png)


しかしこの状態ではまだ書き込めないのでドライバを使用しているpcにインストールしていきます

## ドライバのインストール

URLを踏むと自動でドライバがダウンロードされます
https://github.com/Xinyuan-LilyGO/LilyGo-T-Call-SIM800/files/7037260/CH9102_Mac_Driver.zip

ダウンロードしたものを開いてインストーラに指示される通りにインストールしていってください
手順通り進めるとCH34xVCPDdriverというものが追加されると思います
これでc3に書き込む準備は完了です

## ライブラリのインストール
ツール→ライブラリの管理からライブラリマネージャの検索窓で以下を検索します

Adafruit_NeoPixel

![スクリーンショット 2021-11-20 11.57.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1055872/60d907f1-eafb-e433-3ea3-e92c4bd868b6.png)

画像の一番上のライブラリをインストールします



## Lチカのコード
c3は電源に繋ぐと初めから青緑色に点灯するのでこれを点灯させてみます
Lチカするための最小限のコードは以下
シリアルポートはwchusbserialってのが入ってるのを選択します

```c++
#include <Adafruit_NeoPixel.h>
#define LED_PIN 2

Adafruit_NeoPixel pixels(1, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup() {
    pixels.begin();
}

void loop() {
    pixels.setPixelColor(0, pixels.Color(0, 255, 255));    //Colorメソッド内の引数の順番は赤、緑、青
    pixels.show();
    delay(1 * 1000);
    pixels.setPixelColor(0, pixels.Color(0, 0, 0));    //明るさを3原色全て0にして消灯
    pixels.show();
    delay(1 * 1000);
}
```

単純なLチカだけではつまらないのでじわりとledの色味を変化させる

```c++
#include <Adafruit_NeoPixel.h>
#define LED_PIN 2

Adafruit_NeoPixel pixels(1, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup() {
    pixels.begin();
    Serial.begin(115200);
}

int r = 0;
int g = 125;
int b = 0;

void loop() {
    while (true) {
        if (b <= 125) {
            b++;
            Serial.println(b);
            pixels.setPixelColor(0, pixels.Color(r, g, b));
            pixels.show();
            delay(100);
        } else {
            while (true) {
                b--;
                Serial.println(b);
                pixels.setPixelColor(0, pixels.Color(r, g, b));
                pixels.show();
                delay(100);
                if (b == 0) {
                    break;
                }
            }
        }
    }
}
```


# おわりに
今回は自分が光モノが好きなのでc3を電源に繋いだ瞬間に青緑に点灯して感動
↓
line notifyコードを書き込んでledが消灯して萎える
というくだりから自分が実行したコード類を紹介しました。とはいえesp32の本懐は無線機能なので今後はWiFiと連携した面白い使い方などを書いていければと思います

記事内でつまずいた、不明な点があったらコメントください