0件のコメントとりあえず1PIN単位で動くものだけ調べてみました。※(2019/08/30)ごめんなさい、嘘書いてありました。アナログのpinMode()設定が違っていたので入力値がおかしかったみたいです。最新情報はM5StickC非公式日本語リファレンスを確認おねがいします。PWM出力まとめPIN配置GROVEのVOUTは5Vでした。しなしながらIO32とIO33のアナログ入力は3.3Vまでなので、アナログのGROVEセンサーとかをつなげると物によってはちゃんと動かない気がします。RTC_GPIO8外部からアクセスができる上記5PINが調査対象です。○IO26はADC2_CH9に繋がっているのに、Wi-fi使っていない場合でもアナログ入力できませんでした。上側にあるポートからはアナログ入力できなそうですね。タッチセンサーがまた微妙で、ESP32のデータシートがおそらく間違っていて、内部的に逆に接続されている気がします。delay(500);}上記コードのPIN変数を変えていって実験しました。digitalRead()はどのポートでも利用できます。delay(500);}アナログ入力はIO0が正しく取得できません。内部的にプルアップされている関係で、0と4095のどちらかの数値になります。delay(500);}touchRead()は触ると数値が小さくなるので、触らないときの数字と、触って下がったときの数字の中間か、やや低い値をthresholdに設定してください。タッチは初めて実験してみましたが、混乱しました。IO32とIO33の結果が逆でした。Devボードで実験してみたら、やっぱり逆です。データシートが間違っていますね。esp32_gpioMux_t;こんな構造体があって、ArduinoではGPIOを管理していました。-1こんな感じのマトリクスで、内部レジスタのアドレスとか番号が並んでいます。8該当部分だけ抜きですと、RTCとTouchとかはPIN番号大きい方から割り当てていますが、ADCは逆です。Touchもデータシート上は上記の記述ですが、実際の実装はIO32がT8でIO33がT9になっていると思われます。ここ以外のいろんな場所でも逆に定義されているので、ライブラリは修正されない気もします。タッチセンサ一応商品としてはありますので、使うときにはIO32を取得してください。delay(500);}dacWrite()はIO26でしか使えません。(内部的にはIO25でも可能)IO26からの出力にLEDと抵抗に接続してものをオシロスコープで測定した結果です。若干電圧低下していますが、概ね255で3.3V程度、128でその半分の電圧が出力されています。delay(500);}IO36はIOがInputのみなので、出力には使えませんが、それ以外のPINでは使えました。delay(500);}PWMはdigitalWrite()で出力を定期的にON/OFFさせることで、擬似的なdacWrite()に似た動きになります。PWMは4PIN同時に利用することが可能で、細かい設定はledcSetup()で行っています。分解能が8ビット(0-256)になっています。8ビットの場合、256分割してそのうち何個を出力するかの指定なので、出力しないの0と全部出力するの256までの257段階で制御が可能です。上記はキャプチャ用に周波数50Hzに落として実験しましたが、上記のように128(50%)を指定するとONとOFFが交互にきて、平均すると半分の電圧相当になります。LEDの明るさ調整とかであればdacWrite()でなくて、PWM制御で十分明るさが変わります。まとめGROVEの電源が5Vなんで、ちょっと注意が必要そうですね。あと本家だといろいろな拡張HATが開発されているようですので、楽しみです。今後はI2Cとか2PIN以上必要な通信を調べていきたいと思います。コメントをキャンセルメールアドレスが公開されることはありません。date*管理者承認後にページに追加されます。公開されたくない相談はその旨本文に記載するかTwitterなどでDM投げてください。スパム対策として、日本語が含まれない投稿は無視されますのでご注意ください。その2関連記事はこちらです。関連記事はこちらです。Themegraphy。