Skip to content

ji6czd/M5CardPuterKeySample

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

M5Cardputer キーボードマトリックススキャンプロジェクト

M5CardputerおよびM5stack Cardputer ADVのキーボードマトリックスをスキャンして、キーの押下を検出するArduinoプロジェクトです。

概要

このプロジェクトは、M5Cardputerシリーズのキーボードの物理的な構造を理解し、キーマトリックスのスキャン方法を学習することを目的としています。従来モデル(V1.1)とM5stack Cardputer ADVの両方に対応しており、それぞれ異なるハードウェア構成に適したキーボード制御を実装しています。

対応ハードウェア

M5Cardputer(V1.1)

  • 74HC138デコーダーを使用した8行×7列のキーマトリックス
  • 直接GPIO接続による制御

M5stack Cardputer ADV ⭐ NEW

  • TCA8418RTWRキーボードコントローラーを使用
  • I2C通信による制御
  • より安定したキーボード動作とFIFOバッファ機能

ハードウェア構成

従来モデル(V1.1)

  • 行制御: 74HC138デコーダーによる8行の制御
    • A0 (GPIO 8)
    • A1 (GPIO 9)
    • A2 (GPIO 11)
  • 列検出: 7つの列の直接GPIO接続
    • GPIO 3, 4, 5, 6, 7, 13, 15

ADVモデル

  • キーボードコントローラー: TCA8418RTWR
  • 通信方式: I2C
    • SDA (GPIO 8)
    • SCL (GPIO 9)
    • INT (GPIO 11)
  • I2Cアドレス: 0x34
  • キーマトリックス: 8行×10列(最大80キー対応)

使用デバイス

  • M5Stack STAMP S3

機能

共通機能

  • キー押下の検出とシリアル出力
  • リアルタイムキー状態監視
  • 自動デバイス検出

従来モデル(V1.1)固有

  • 8×7キーマトリックスの全スキャン
  • チャタリング防止機能

ADVモデル固有

  • I2C通信によるキーボード制御
  • FIFOバッファによる確実なキーイベント処理
  • ハードウェアレベルでのデバウンス機能

技術的詳細

従来モデル(V1.1)のキーマトリックススキャン

  1. 74HC138デコーダーを使用して8行を順次選択
  2. 選択された行をLOWレベルにアクティブ化
  3. 7つの列をプルアップ抵抗でHIGHに保持
  4. キーが押されると、アクティブな行と列が接続されて列がLOWになる
  5. この変化を検出してキー押下を判定

74HC138には3ビットのGPIOが接続されています。これにより、8パターンの選択が可能です。0x00~0x07と考えるとよいでしょう。これが8行に相当します。

ADVモデルのTCA8418制御

  1. I2C通信でTCA8418RTWRを初期化
  2. キーパッドマトリックス用のGPIOピンを設定
  3. キーイベント割り込みを有効化
  4. FIFOバッファからキーイベントを読み取り
  5. キーIDと押下/リリース状態を解析

TCA8418RTWRは専用のキーボードコントローラーで、以下の利点があります:

  • ハードウェアレベルでのデバウンス処理
  • FIFOバッファによるキーイベントの確実な保存
  • 最大80キーまでの対応
  • 低消費電力設計

M5CardPuterの実際のキーマトリックス(従来モデル)

M5CardPuterは、14列4行のキーボードを持っています。これを、7列8行にマッピングしています。物理配置とGPIO接続上の配置が直感的ではないのですが、下の表のように接続されています。

行/列 0 1 2 3 4 5 6 7 8 9 10 11 12 13
0 R7C5 R3C5 R7C6 R3C6 R7C0 R3C0 R7C1 R3C1 R7C2 R3C2 R7C3 R3C3 R7C4 R3C4
1 R6C5 R2C5 R6C6 R2C6 R6C0 R2C0 R6C1 R2C1 R6C2 R2C2 R6C3 R2C3 R6C4 R2C4
2 R5C5 R1C5 R5C6 R1C6 R5C0 R1C0 R5C1 R1C1 R5C2 R1C2 R5C3 R1C3 R5C4 R1C4
3 R4C5 R0C5 R4C6 R0C6 R4C0 R0C0 R4C1 R0C1 R4C2 R0C2 R4C3 R0C3 R4C4 R0C4

M5Cardputer ADVキーデータ

M5CardPuter ADVは、14列4行のキーボードを持っています。これを、7列8行にマッピングしています。REG_KEY_EVENT_Aから読み取った値は10進数で、一桁目がCOLで二桁めがROWとなります。15はR1C5となります。

参考資料

追記

このドキュメントは、初期調査とサンプルコードの生成をGemini2.5 Proで行い、READMEの作成をClaude Sonnet 4に手伝ってもらいました。

連絡先など

間違い・改善提案などありましたら、プルリクエストをくださるかご連絡くださると嬉しいです。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages