2025年3月31日月曜日

M5Stamp Picoを買っちゃった

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

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

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

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


  1. // LED 制御(PWM)
  2. #include <M5unified .h>
  3. #define LED_NUM 6
  4. #define LED_DLY 50
  5. #define MAX_LED 256
  6. #define LOW_LED 64
  7. byte leds [LED_NUM] = {26, 18, 19, 21, 22, 25};
  8. byte pwmchs [LED_NUM] = {1, 2, 3, 4, 5, 6};
  9. void setup() {
  10. auto cfg = M5.config();
  11. M5.begin(cfg);
  12. // set pin to OUTPUT & LED off
  13. for (byte i = 0 ; i < LED_NUM ; i++) {
  14. pinMode(leds[i], OUTPUT);
  15. ledcSetup(pwmchs[i], 12000, 8); //周波数:12KHz、分解能:8ビット
  16. ledcAttachPin(leds[i], pwmchs[i]);
  17. }
  18. }
  19. void loop() {
  20. int y = 0;
  21. // 左から右
  22. for (int i = 0; i < LED_NUM*2-1; i++ ){
  23. if ((i % 2) == 0) {
  24. ledcWrite(pwmchs[y], MAX_LED); // 100%(3.3V)
  25. delay(LED_DLY);
  26. ledcWrite(pwmchs[y], 0); // 0%(0V)
  27. } else {
  28. ledcWrite(pwmchs[y], LOW_LED); // 25%(0.9V)
  29. ledcWrite(pwmchs[y+1], LOW_LED); // 25%(0.9V)
  30. delay(LED_DLY);
  31. ledcWrite(pwmchs[y], 0); // 0%(0V)
  32. ledcWrite(pwmchs[y+1], 0); // 0%(0V)
  33. y++;
  34. }
  35. }
  36. for (int i = LED_NUM*2-3; i >= 0; i-- ){
  37. if ((i % 2) == 0) {
  38. ledcWrite(pwmchs[y], MAX_LED); // 100%(3.3V)
  39. delay(LED_DLY);
  40. ledcWrite(pwmchs[y], 0); // 0%(0V)
  41. } else {
  42. ledcWrite(pwmchs[y], LOW_LED); // 25%(0.9V)
  43. ledcWrite(pwmchs[y-1], LOW_LED); // 25%(0.9V)
  44. delay(LED_DLY);
  45. ledcWrite(pwmchs[y], 0); // 0%(0V)
  46. ledcWrite(pwmchs[y-1], 0); // 0%(0V)
  47. y--;
  48. }
  49. }
  50. }

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

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



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

0 件のコメント:

コメントを投稿