Tafuta Msimbo

Jinsi ya kutumia 4x4 Soft Keypad na Arduino

Jinsi ya kutumia 4x4 Soft Keypad na Arduino

Katika mafunzo haya, tutachunguza jinsi ya kuunganisha na kutumia kibodi laini ya 4x4 na Arduino. Kibodi hii ina funguo kumi na sita lakini inahitaji pini nane tu kwa muunganisho, na kuifanya kuwa kifaa cha kuingiza data cha kompakt na chenye ufanisi kwa miradi mbalimbali. Kufikia mwisho wa mwongozo huu, utaweza kusoma maingizo kutoka kwenye kibodi na kuanzisha vitendo kulingana na maingizo hayo.

4x4 soft keypdad

Tutatumia maktaba ya Keypad kuunganisha na kibodi, ikituruhusu kugundua kwa urahisi ni kitufe kipi kimebonyezwa. Programu tutakayotekeleza itaonyesha kitufe kilichobonyezwa kwenye mfuatiliaji wa serial na kuchukua hatua wakati kitufe maalum kinapobonyezwa, kama kitufe '4'. Kwa mwongozo zaidi wa kuona, hakikisha umeangalia video (katika video saa 00:00).

Vifaa Vimeelezwa

Sehemu kuu ya mradi huu ni kibodi laini ya 4x4, ambayo ina vitufe 16 vilivyopangwa katika gridi. Kila kitufe kinaunganishwa na pini maalum kwenye Arduino, ikiruhusu kugundua wakati kitufe kinapobonyezwa. Kibodi hufanya kazi kwa kutumia mbinu ya skanning ya matrix, ambapo safu na nguzo zinawashwa kwa mfuatano ili kubaini ni kitufe kipi kimebonyezwa.

Ili kuunganisha kibodi, utahitaji kutumia pini nane za dijiti kwenye Arduino. Safu kwa kawaida huunganishwa kwenye pini 2 hadi 5, wakati nguzo zinaunganishwa kwenye pini 6 hadi 9. Mpangilio huu unaruhusu Arduino kusoma hali ya kila kitufe kwa ufanisi.

Maelezo ya Datasheet

Upana69mm
Urefu76mm
Urefu wa kebo84mm
Upana wa kiunganishi20mm
Nafasi ya mashimo ya kiunganishi2.56mm

  • Hakikisha wiring sahihi wa pini za safu na nguzo ili kuepuka usomaji usio sahihi.
  • Tumia resistors za pull-up ikiwa ni lazima ili kuimarisha usomaji wa maingizo.
  • Debounce funguo katika programu ili kuepuka usomaji mwingi kwa bonyeza moja.
  • Jaribu kila kitufe kibinafsi ili kuhakikisha utendaji.
  • Weka kibodi ikiwa kavu na safi ili kudumisha utendaji.

Maagizo ya Wiring

Arduino wiring for 4x4 soft keypad
Arduino wiring for 4x4 soft keypad

Ili kuunganisha kibodi ya 4x4 kwenye Arduino, unganisha pini za safu za kibodi kwenye pini za dijiti za Arduino kama ifuatavyo: unganisha safu ya kwanza kwenye pini 2, safu ya pili kwenye pini 3, safu ya tatu kwenye pini 4, na safu ya nne kwenye pini 5. Kwa pini za nguzo, unganisha nguzo ya kwanza kwenye pini 6, nguzo ya pili kwenye pini 7, nguzo ya tatu kwenye pini 8, na nguzo ya nne kwenye pini 9.

Mpangilio huu unaruhusu Arduino kuskan safu na nguzo kwa ufanisi. Hakikisha umeangalia mara mbili muunganisho ili kuhakikisha kila pini inalingana kwa usahihi na safu au nguzo yake iliyoteuliwa. Katika video, mipangilio mbadala ya wiring inajadiliwa kwa ufupi (katika video saa 01:15). Ukichagua kuunganisha kwa njia tofauti, sasisha tu nambari za pini kwenye msimbo ipasavyo.

Mifano ya Msimbo na Maelezo

Katika msimbo, tunaanza kwa kujumuisha maktaba ya Keypad na kufafanua mpangilio wa kibodi. Safu na nguzo zinawekwa kwa kutumia arrays, ambapo rowPins inalingana na pini za dijiti zilizounganishwa kwenye safu na colPins inalingana na nguzo.

const byte ROWS = 4; //safu nne
const byte COLS = 4; //nguzo nne
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

Katika sehemu hii, tunafafanua idadi ya safu na nguzo, pamoja na mpangilio wa herufi za funguo. Mpangilio huu ni muhimu kwa kutambua ni kitufe kipi kimebonyezwa kulingana na safu na nguzo iliyowashwa.

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

Kazi ya setup huanzisha mawasiliano ya serial kwa kiwango cha baud 9600. Hii ni muhimu kwa kutuma data ya kubonyeza kitufe kwenye mfuatiliaji wa serial kwa ajili ya debugging na uthibitisho.

void loop(){
  char key = keypad.getKey();
  if (key){
    Serial.println(key);
  } 
  if (key =='4'){
    Serial.println("Kitufe 4 kimebonyezwa");
  }
}

Katika kazi ya loop, tunaendelea kuangalia kitufe kilichobonyezwa kwa kutumia keypad.getKey(). Ikiwa kitufe kimebonyezwa, kinachapisha thamani ya kitufe kwenye mfuatiliaji wa serial. Zaidi ya hayo, ikiwa kitufe '4' kimebonyezwa, kinachapisha ujumbe maalum unaoonyesha kwamba kitufe '4' kimewashwa. Sehemu hii ya msimbo inaruhusu mwingiliano wa wakati halisi kulingana na maingizo ya mtumiaji.

Maonyesho / Nini cha Kutarajia

Mara tu kila kitu kitakapowekwa na msimbo kupakiwa kwenye Arduino yako, unapaswa kuona funguo zilizobonyezwa zikionyeshwa kwenye Mfuatiliaji wa Serial. Ukibonyeza kitufe '4', ujumbe "Kitufe 4 kimebonyezwa" utaonekana, ukithibitisha kwamba maingizo yamegunduliwa kwa mafanikio. Kuwa makini na mitego ya kawaida, kama maingizo yanayoelea au wiring usio sahihi, ambayo yanaweza kusababisha usomaji usio sahihi (katika video saa 02:30).

Vidokezo vya Muda wa Video

  • 00:00 - Utangulizi wa kibodi
  • 01:15 - Maagizo ya wiring
  • 02:30 - Maelezo ya msimbo na maonyesho

Bilder

4x4 soft keypdad back view
4x4 soft keypdad back view
4x4 soft keypdad
4x4 soft keypdad
4x4 soft keypdad connector
4x4 soft keypdad connector
4x4 soft keypdad
4x4 soft keypdad
Arduino wiring for 4x4 soft keypad
Arduino wiring for 4x4 soft keypad
41-Resources for this code
Språk: C++
/*
 * Original source: https://playground.arduino.cc/Code/Keypad
 * This is the Arduino code for a 4x4 keypad.
 * Watch the video for details and demo: http://youtu.be/qIDzzG2LUtg
 * 
 * Written by Ahmad Nejrabi for Robojax Video channel: www.Robojax.com
 * Date: December 18, 2017, in Ajax, Ontario, Canada
 * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: This code is "AS IS" and for educational purposes only.
 * This code has been downloaded from https://robojax.com
 * 
 */
/* @file HelloKeypad.pde
|| @version 1.0
|| @author Alexander Brevig
|| @contact alexanderbrevig@gmail.com
||
|| @description
|| | Demonstrates the simplest use of the matrix Keypad library.
|| #
*/
#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

byte rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {6,7,8,9}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  Serial.begin(9600);
}
  
void loop(){
  char key = keypad.getKey();
    // Just print the pressed key
   if (key){
    Serial.println(key);
  } 
  
  // This checks if 4 is pressed, then do something. Here we print the text, but you can control something.
  if (key =='4'){
    Serial.println("Key 4 is pressed");
  }
}

Tänker att du kanske behöver

Resurser och referenser

Inga resurser än.

Filer📁

Arduino-bibliotek (zip)