2025年3月31日月曜日

M5Stamp Picoを買っちゃった

M5StickC Plus2を弄ってみて、玩具などの改造など色々と使い道ありそうです。そこで、組み込みし易そうな、M5Stamp Pico Mateを購入してみました。このサイズであれば、ゴチゾウからはみ出さずに出来そうな気がしますが、バッテリーや液晶などを考えると難しいかな...

内容物は本体、端子引き出し用のジャンパ端子、シール、六角レンジとなっています。サクッとジャンパ端子を半田付けして使用しみます。

なお、ArduinoIDEはM5StickC Plus2で設定していますので、ライブラリインストールのみで使用できました

とりあえず、初めに行うのはLチカと勝手に決めてGPIOにLEDを接続して試します(普通はオンボードのLEDだとは主マスが、きっと使う機会は少ないのでGPIO経由で試します)。あと、LED 1個じゃつまらないのでナイトライダー風にします


// LED 制御(PWM)

#include <M5unified .h>
#define LED_NUM 6
#define LED_DLY 50
#define MAX_LED 256
#define LOW_LED 64
byte  leds   [LED_NUM] = {26, 18, 19, 21, 22, 25};
byte  pwmchs [LED_NUM] = {1, 2, 3, 4, 5, 6};

void setup() {
  auto cfg = M5.config();
  M5.begin(cfg);
  
  // set pin to OUTPUT & LED off
  for (byte i = 0 ; i < LED_NUM ; i++) {
    pinMode(leds[i], OUTPUT);
    ledcSetup(pwmchs[i], 12000, 8);       //周波数:12KHz、分解能:8ビット
    ledcAttachPin(leds[i], pwmchs[i]);
  }
}

void loop() {
  int y = 0;
  // 左から右
  for (int i = 0; i < LED_NUM*2-1; i++ ){
    if ((i % 2) == 0) {
      ledcWrite(pwmchs[y], MAX_LED);        //  100%(3.3V)
      delay(LED_DLY);
      ledcWrite(pwmchs[y], 0);              //  0%(0V)
    } else {
      ledcWrite(pwmchs[y], LOW_LED);        //  25%(0.9V)
      ledcWrite(pwmchs[y+1], LOW_LED);      //  25%(0.9V)
      delay(LED_DLY);
      ledcWrite(pwmchs[y], 0);              //  0%(0V)
      ledcWrite(pwmchs[y+1], 0);            //  0%(0V)
      y++;
    }
  }
  
  for (int i = LED_NUM*2-3; i >= 0; i-- ){
    if ((i % 2) == 0) {
      ledcWrite(pwmchs[y], MAX_LED);        //  100%(3.3V)
      delay(LED_DLY);
      ledcWrite(pwmchs[y], 0);              //  0%(0V)
    } else {
      ledcWrite(pwmchs[y], LOW_LED);        //  25%(0.9V)
      ledcWrite(pwmchs[y-1], LOW_LED);      //  25%(0.9V)
      delay(LED_DLY);
      ledcWrite(pwmchs[y], 0);              //  0%(0V)
      ledcWrite(pwmchs[y-1], 0);            //  0%(0V)
      y--;
    }
  }
}

なお、残像を残すようにするため、ループ変数 iから変数 yを作成しています(変数 iが偶数の時はLED 1個を最大輝度、基数の時はLED 2個を25%輝度)

書き込みにはStamp ISPを使用しています(ドライバはCH9102_VCP_SER_Windowsを使用)。なお、LED点灯だけであれば5Vが無くても動作するようです。とりあえず、無事に動作しました



PWM制御で作成していますが、本来はGPIOをアンログ出力(dacWrite)を使用すると思いますが、将来的にモーターを制御したいと思いますのでPWM制御にしています

0 件のコメント:

コメントを投稿