M5Stack 入出力
M5StickCのIOについて調べてみたこちらより。M5Stick用ですが、動くでしょう
M5StickC.h → M5Stack.h に書き換えています。
digitalRead() デジタル入力 0(1.65V未満) or 1(1.65V以上)どのピンでも使用可
analogRead() アナログ入力 0(0V)-4095(3.3V)
dacWrite() アナログ出力 0(0V)-255(3.3V) dacWrite()はIO26でしか使えません。(内部的にはIO25でも可能)
digitalWrite() デジタル出力 LOW(0V) or HIGH(3.3V) IO36はIOがInputのみなので、出力には不可、それ以外のPINは可
ledcWrite() PWM出力
M5StickC.h → M5Stack.h に書き換えています。
digitalRead() デジタル入力 0(1.65V未満) or 1(1.65V以上)どのピンでも使用可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <M5Stack.h> int PIN = 32; void setup() { M5.begin(); pinMode( PIN, INPUT); } void loop() { Serial. printf ( "%04d\n" , digitalRead(PIN) ); delay(500); } |
analogRead() アナログ入力 0(0V)-4095(3.3V)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <M5Stack.h> int PIN = 32; void setup() { M5.begin(); pinMode(PIN, ANALOG); } void loop() { Serial. printf ( "%04d\n" , analogRead(PIN) ); delay(500); } |
dacWrite() アナログ出力 0(0V)-255(3.3V) dacWrite()はIO26でしか使えません。(内部的にはIO25でも可能)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <M5Stack.h> int PIN = 26; void setup() { M5.begin(); pinMode(PIN, OUTPUT); } void loop() { dacWrite(PIN, 0); delay(500); dacWrite(PIN, 128); delay(500); dacWrite(PIN, 255); delay(500); } |
digitalWrite() デジタル出力 LOW(0V) or HIGH(3.3V) IO36はIOがInputのみなので、出力には不可、それ以外のPINは可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <M5Stack.h> int PIN = 32; void setup() { M5.begin(); pinMode(PIN, OUTPUT); } void loop() { digitalWrite(PIN, HIGH); delay(500); digitalWrite(PIN, LOW); delay(500); } |
ledcWrite() PWM出力
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <M5Stack.h> int PIN = 32; int PWMCH = 0; void setup() { M5.begin(); pinMode(PIN, OUTPUT); ledcSetup(PWMCH, 12000, 8); ledcAttachPin(PIN, PWMCH); } void loop() { ledcWrite(PWMCH, 0); // 0%(0.0V) delay(500); ledcWrite(PWMCH, 128); // 50%(1.7V) delay(500); ledcWrite(PWMCH, 256); // 100%(3.3V) delay(500); } |
PWMはdigitalWrite()で出力を定期的にON/OFFさせることで、擬似的なdacWrite()に似た動きになります。PWMは4PIN同時に利用することが可能で、細かい設定はledcSetup()で行っています。サンプルは周波数が 12KHz で分解能が8ビット(0-256)になっています。 8ビットの場合、256分割してそのうち何個を出力するかの指定なので、出力しないの0と全部出力するの256までの257段階で制御が可能です。
コメント
コメントを投稿