AtomS3 LiteでGPIO38を使おうとして苦しんだこと
公開 2025/04/30 10:39
最終更新
2025/04/30 11:38
まず前提として、
AtomS3 Lite-[Grove]-I2Cデバイス
として使用するため、他にKeyUnit(M5Stack-U144)をつなぎたかったので、5V/GNDと並んでいるG38/G39と併せて接続すればいいという発想。2nd Groveとしてみれば、ごく自然な考えだと思う。
開発環境はVSCode+PlatformIO。
このKeyUnit、ボタン(入力)をG39に接続、LED(SK6812なのでFastLEDで。)をG38に接続という形。
AtomS3.begin();
を使用すると、LEDが白色で点灯のままとなり、FastLEDをどう設定しようとも変化しないので途方に暮れていた。
AtomS3.begin();
を利用しないと、digitalRead(): ボタン入力、FastLED: LED制御、共に問題なく利用できるのでこれでよいかと思えば、GroveにつないだI2Cデバイスが利用できていないようだ。
begin()の中で、Groveと共にG39/G38に対してもI2Cポートとして初期化しているんだろうなぁとは思っていたんだけど、それを無視してpinMode()でDIOポートとして設定できないか?とは思っていた。
実際、ボタン入力は取れていたので、それでいいと思っていたのですが、まったく改善せず。
やむを得ず、M5Unified.cppに手を入れて、I2C初期化の際、G39/G38を初期化させないように書き換えてしまいました。(実際、M5Unitfiedでは、M5Stackシリーズの多くに対して内部、外部2セットのI2C設定を行っているようです。とはいえ、M5StickC PlusではG36/G26で同様に使っても問題なかったんですが。)
GPIO5とGPIO7からはLEDの制御ができました。I2C設定の対象ではないのだから、当然と言えば当然なのですけどね。なので、接続Pinが妙な感じになるのを除けば、妥協して使用することはできます。今回はそこまで時間に迫られているわけでもないので妥協しなくてもよさそうですが。
あとで時間をとって、I2Cとして初期化済みのpinをDIOとして再初期化できるようにしたいと思います。
こういうのは、ChatGPTでも教えてくれないから、自分で考えることを放棄しちゃダメだと思う。人脈があればいいんだけれど、知り合いに「何でも知っているスーパーエンジニア」はいないしなぁ。
コミュ障なので、知っているはずの人(M5Unified作成者とか)にコンタクトをとるよりは自分で調べるんすよね...。
AtomS3 Lite-[Grove]-I2Cデバイス
として使用するため、他にKeyUnit(M5Stack-U144)をつなぎたかったので、5V/GNDと並んでいるG38/G39と併せて接続すればいいという発想。2nd Groveとしてみれば、ごく自然な考えだと思う。
開発環境はVSCode+PlatformIO。
このKeyUnit、ボタン(入力)をG39に接続、LED(SK6812なのでFastLEDで。)をG38に接続という形。
AtomS3.begin();
を使用すると、LEDが白色で点灯のままとなり、FastLEDをどう設定しようとも変化しないので途方に暮れていた。
AtomS3.begin();
を利用しないと、digitalRead(): ボタン入力、FastLED: LED制御、共に問題なく利用できるのでこれでよいかと思えば、GroveにつないだI2Cデバイスが利用できていないようだ。
begin()の中で、Groveと共にG39/G38に対してもI2Cポートとして初期化しているんだろうなぁとは思っていたんだけど、それを無視してpinMode()でDIOポートとして設定できないか?とは思っていた。
実際、ボタン入力は取れていたので、それでいいと思っていたのですが、まったく改善せず。
やむを得ず、M5Unified.cppに手を入れて、I2C初期化の際、G39/G38を初期化させないように書き換えてしまいました。(実際、M5Unitfiedでは、M5Stackシリーズの多くに対して内部、外部2セットのI2C設定を行っているようです。とはいえ、M5StickC PlusではG36/G26で同様に使っても問題なかったんですが。)
GPIO5とGPIO7からはLEDの制御ができました。I2C設定の対象ではないのだから、当然と言えば当然なのですけどね。なので、接続Pinが妙な感じになるのを除けば、妥協して使用することはできます。今回はそこまで時間に迫られているわけでもないので妥協しなくてもよさそうですが。
あとで時間をとって、I2Cとして初期化済みのpinをDIOとして再初期化できるようにしたいと思います。
こういうのは、ChatGPTでも教えてくれないから、自分で考えることを放棄しちゃダメだと思う。人脈があればいいんだけれど、知り合いに「何でも知っているスーパーエンジニア」はいないしなぁ。
コミュ障なので、知っているはずの人(M5Unified作成者とか)にコンタクトをとるよりは自分で調べるんすよね...。
