工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

アナログ3ピンで4×3キーパッドを接続 - Arduinoピン節約テクニック

必要なパーツと材料

パーツ数量
Arduino UNO1
4×3マトリックスキーパッド(12キー)1
抵抗 330Ω1
抵抗 1kΩ3
抵抗 3kΩ1

必要なツール

使用ソフトウェア

プロジェクト概要

課題:通常のマトリックスキーパッドは7ピン必要

4×3キーパッドは通常、行4本+列3本の計7本のデジタルピンを消費します。ピン数の少ないUnoやNanoでは大きな負担です。

解決策:抵抗ラダーでアナログ3ピンに集約

各列に異なる抵抗値を配置し、行ごとの電圧分割でキーを識別する方式。3本のアナログ入力(A0-A2)のみで12キーを判別できます。

回路原理

各列にプルアップ抵抗(R5=R6=R7=1kΩ)を、各行に異なる抵抗(R1=0Ω, R2=330Ω, R3=1kΩ, R4=3kΩ)を直列接続。キー押下時、該当する行・列の組み合わせで固有の電圧が各列出力に現れます。ADC値の閾値判定でどのキーか特定します。

ADC値の区間設計(5V駆動時)

キー行ADC値の目安許容範囲(±100)
行1 (R1=0Ω)1023923-1123
行2 (R2=330Ω)769669-869
行3 (R3=1kΩ)512412-612
行4 (R4=3kΩ)256156-356

±5%抵抗でも区間が重ならないよう設計されています。3.3V駆動でもADC基準電圧が電源電圧なら値は変わりません。

Arduino接続

キーパッドの列出力3本をA0, A1, A2に接続。行側の共通線は5Vへ。R1(0Ω)は配線で直結。

自作キーパッドプロトタイプ

リサイクルキースイッチで自作し、5ピンコネクターでArduino接続。動作確認済み。

Arduinoコード

/* Analog 4x3 Keypad - 3アナログピンで12キー読取
 * G. Carrera - 2018/11/19
 */

// ADC閾値(±100マージン)
const int NADCmin[4] = {923, 669, 412, 156};
const int NADCmax[4] = {1123, 869, 612, 356};
const char keys[12] = {'1','4','7','C', '2','5','8','0', '3','6','9','E'};

int keyVal[3];  // A0, A1, A2の読み値

void setup() {
  Serial.begin(9600);
}

void loop() {
  char k = KeyPad();
  if (k != 'N') {
    Serial.print("Key = ");
    Serial.println(k);
    delay(500); // チャタリング防止
  }
}

char KeyPad() {
  KeyScan();
  // 全列の値が小さい = キー未押下
  if (keyVal[0] + keyVal[1] + keyVal[2] < 40) return 'N';
  
  delay(10); // アンチバウンス
  KeyScan(); // 再読取
  
  for (int col = 0; col < 3; col++) {
    if (keyVal[col] > 40) { // この列でキー押下検出
      int val = keyVal[col];
      for (int row = 0; row < 4; row++) {
        if (val >= NADCmin[row] && val <= NADCmax[row]) {
          return keys[col * 4 + row];
        }
      }
    }
  }
  return 'N';
}

void KeyScan() {
  keyVal[0] = analogRead(A0); delay(1);
  keyVal[1] = analogRead(A1); delay(1);
  keyVal[2] = analogRead(A2); delay(1);
}

回路図

アナログ3ピンで4×3キーパッドを接続 - Arduinoピン節約テクニック

拡張性

アナログ入力を1本追加し、行用抵抗を1つ追加すれば4×4キーパッド(16キー)にも対応可能。さらに拡張も同様の原理で可能です。

製造プロセス

  1. ArduinoとExcelで制御する8×8・16×16 WS2812 RGB LEDマトリックスアニメーション
  2. スマート渇きアラート植物アラーム – 最適な水やりタイミングを知らせるDIYセンサー
  3. イタリア語ワードクロック自作:Arduino Nano、NeoPixel、LCD、RTCで時刻を文字で表示
  4. Arduino MKR Fox 1200で作る信頼性の高いSigfox kWhメーター
  5. Bluetooth対応温度モニター:Arduino NanoとHC-06でスマホ監視
  6. 非接触ジェスチャー錠: APDS-9960とArduinoでセキュアアクセス
  7. Arduino Nanoコンパニオンキット – 電子工作に必須の部品とツールを搭載した多機能IC型デバイス
  8. Arduino Micro/Leonardo用 USB-MIDIアダプタキット – 完全パーツリストと実装ガイド
  9. Arduino用絶縁アナログ入力回路の設計:LM331 V-F変換+フォトカプラでノイズ耐性を確保
  10. RGB 32バンド オーディオスペクトラムビジュアライザー - Arduino LEDマトリックスプロジェクト
  11. Arduino UNOで作る精密反応速度テスター