Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Économisez les broches Arduino : clavier 4×3 sur 3 entrées analogiques

Composants et fournitures

Composant Quantité
Clavier matriciel 4×3 (12 touches) 1
Arduino UNO (ou Nano) 1
Résistance 330 Ω 1
Résistance 1 kΩ 3
Résistance 3 kΩ 1
Fer à souder 1

Logiciel

À propos du projet

Problème : clavier matriciel standard = 7 broches

Un clavier 4×3 nécessite normalement 4 lignes + 3 colonnes = 7 broches numériques. Sur Uno/Nano, c'est coûteux en I/O.

Solution : diviseur de tension sur 3 entrées analogiques

Économisez les broches Arduino : clavier 4×3 sur 3 entrées analogiques

Chaque colonne devient un diviseur de tension. 4 résistances lignes (R1-R4) + 3 résistances colonnes (R5-R7 identiques). Résultat : 4 niveaux de tension distincts par colonne + 0V (aucune touche).

Calcul des résistances pour intervalles maximaux

Choix : R1 = 0Ω (fil), R2 = 330Ω, R3 = 1kΩ, R4 = 3kΩ ; R5=R6=R7 = 1kΩ.

Économisez les broches Arduino : clavier 4×3 sur 3 entrées analogiques

Les 3 sorties analogiques donnent des intervalles larges et bien séparés (tolérance ±5% OK). Extensible : +1 entrée analogique + 1 résistance = clavier 4×4.

Câblage sur Arduino

Économisez les broches Arduino : clavier 4×3 sur 3 entrées analogiques

Sorties colonnes → A0, A1, A2. R1 (ligne 1) = fil direct (0Ω). Broches modifiables tant qu'analogiques. Fonctionne aussi en 3.3V (ADC référencé sur VCC).

Prototype de test

Économisez les broches Arduino : clavier 4×3 sur 3 entrées analogiques

Clavier construit avec touches de récupération, connecteur 5 broches vers Arduino.

Code Arduino

/* Analog4x3Keybf - Clavier 4x3 sur 3 entrées analogiques
   G. Carrera - 19/11/2018 */

// Seuils ADC (±100) pour 4 touches par colonne
const int NADCmin[4] = {923, 669, 412, 156};
const int NADCmax[4] = {1123, 869, 612, 356};
const char key[12] = {'1','4','7','*', '2','5','8','0', '3','6','9','#'};
// Disposition : col 0 = 1,4,7,* | col 1 = 2,5,8,0 | col 2 = 3,6,9,#

int keyval[3];
int i, colp, val;

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

void loop() {
  char k = KeyPad();
  if (k != 'N') {
    Serial.print("Touche = ");
    Serial.println(k);
    delay(500); // anti-rebond simple
  }
}

char KeyPad() {
  KeyScan();
  if (keyval[0] + keyval[1] + keyval[2] < 40) return 'N'; // rien pressé
  
  delay(10); // anti-rebond
  KeyScan(); // relecture confirmée
  
  for (i = 0; i < 3; i++) {
    if (keyval[i] > 40) { // colonne active
      colp = i;
      val = keyval[i];
      for (int j = 0; j < 4; j++) {
        if (val >= NADCmin[j] && val <= NADCmax[j]) {
          return key[colp * 4 + j];
        }
      }
    }
  }
  return 'N';
}

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

Schéma

Économisez les broches Arduino : clavier 4×3 sur 3 entrées analogiques

Processus de fabrication

  1. Créer et programmer des animations sur matrices LED WS2812 8x8 et 16x16 avec Arduino et Excel
  2. Alerte Soif Plante Intelligente – Capteur DIY pour une Hydratation Optimale
  3. Horloge à Mots Italienne avec Arduino Nano, NeoPixel, LCD et RTC
  4. Compteur kWh Sigfox fiable avec Arduino MKR Fox 1200
  5. Moniteur de température Bluetooth avec Arduino Nano
  6. Serrure à gestes sans contact : Accès sécurisé avec APDS-9960 et Arduino
  7. Kit Compagnon Arduino Nano – Composants et Outils Essentiels pour l'Électronique DIY
  8. Circuit d'entrée analogique isolée pour Arduino : Protection contre les parasites industriels
  9. Test Précis de Temps de Réaction avec Arduino UNO