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 件のコメント:
コメントを投稿