ユーザ用ツール

サイト用ツール


ハイハイスクールアドベンチャー_m5stack_m5cardputer版

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
ハイハイスクールアドベンチャー_m5stack_m5cardputer版 [2024/02/07 09:20] – [ビルド] arakiハイハイスクールアドベンチャー_m5stack_m5cardputer版 [2024/02/07 09:27] (現在) – [M5Cardputerについて] araki
行 77: 行 77:
 幸い、このあたりも M5Cardputerのライブラリがまとめて面倒を見てくれているので、アプリを書くにあたっては困らないが、コードに差異が生じるので理解しておかないといけない。 幸い、このあたりも M5Cardputerのライブラリがまとめて面倒を見てくれているので、アプリを書くにあたっては困らないが、コードに差異が生じるので理解しておかないといけない。
  
-お、M5シリーズは、ぽいぽいピンアサインが変わるので、このあたりも留意していなければならない。+==== ピンアサインど ==== 
 + 
 +M5シリーズは、ぽいぽいピンアサインが変わるので、このあたりも留意していなければならない。
 SDカードやキーボードの割り当てはちゃんと機種を見て動作を変えないといけない部分だ。 SDカードやキーボードの割り当てはちゃんと機種を見て動作を変えないといけない部分だ。
  
 +例えば、SDカードのマウントは以下のようにしている。
 +Core/Core2なら 用意されているSPIを使えば動くが、Cardputerはそこもまとめて面倒をみないといけない。
 +
 +<code>
 +    cfg.clear_display = true;
 +    M5.begin(cfg);
 +    uint8_t ssPin = M5.getPin(m5::pin_name_t::sd_spi_ss);
 +    if (M5.getBoard() == m5::board_t::board_M5Cardputer)
 +    {
 +      M5Cardputer.begin(cfg);
 +      spi.begin(
 +        M5.getPin(m5::pin_name_t::sd_spi_sclk),
 +        M5.getPin(m5::pin_name_t::sd_spi_miso),
 +        M5.getPin(m5::pin_name_t::sd_spi_mosi),
 +        M5.getPin(m5::pin_name_t::sd_spi_ss)
 +      );
 +    }
 +    else
 +    {
 +      spi = SPI;
 +    }
 +    M5.Display.setRotation(1);
 +    Serial.printf("Free heap size: %6d\r\n", esp_get_free_heap_size());
 +    // mount SD (need for M5Unified library)
 +    while (false == SD.begin(ssPin /*GPIO_NUM_4*/, spi, 25000000))
 +    {
 +      M5.Display.println("SD Wait ...");
 +      delay(500);
 +    }
 +</code>
 +
 +キーボードも Cardputerはさておき、CoreとCore2とではピンアサインが違うため、コードを変えないといけない。
 +こっちは、KeyBoardという仮想クラスを作っておいてボードによってインスタンスを変えることで対応している。
 +
 +CoreはWireでINTR=5だが、Core2はWire1でINTR=33だ。
 +
 +<code>
 +class M5StackKeyBoard : public KeyBoard
 +{
 +protected:
 +public:
 +    M5StackKeyBoard() : KeyBoard(m5::board_t::board_M5Stack)
 +    {
 +        Wire.begin();
 +        pinMode(INTR, INPUT);
 +        digitalWrite(INTR, HIGH);
 +    }
 +    virtual ~M5StackKeyBoard() { Wire.end(); }
 +    virtual bool wait_any_key() override;
 +    virtual bool fetch_key(uint8_t &c) override;
 +
 +    static const int INTR = 5;
 +};
 +
 +class M5Core2KeyBoard : public KeyBoard
 +{
 +protected:
 +public:
 +    M5Core2KeyBoard() : KeyBoard(m5::board_t::board_M5StackCore2)
 +    { 
 +        Wire1.begin();
 +        pinMode(INTR, INPUT);
 +        digitalWrite(INTR, HIGH);
 +    }
 +    virtual ~M5Core2KeyBoard() { Wire1.end(); }
 +    virtual bool wait_any_key() override;
 +    virtual bool fetch_key(uint8_t &c) override;
 +
 +    static const int INTR = 33;
 +};
 +</code>
ハイハイスクールアドベンチャー_m5stack_m5cardputer版.1707265244.txt.gz · 最終更新: 2024/02/07 09:20 by araki