ዝርዝር ሁኔታ:

የዳሽቦርድ ቁልፍ ሰሌዳ ከ LCD ማሳያ እና አርዱዲኖ ኡኖ ጋር - 9 ደረጃዎች
የዳሽቦርድ ቁልፍ ሰሌዳ ከ LCD ማሳያ እና አርዱዲኖ ኡኖ ጋር - 9 ደረጃዎች

ቪዲዮ: የዳሽቦርድ ቁልፍ ሰሌዳ ከ LCD ማሳያ እና አርዱዲኖ ኡኖ ጋር - 9 ደረጃዎች

ቪዲዮ: የዳሽቦርድ ቁልፍ ሰሌዳ ከ LCD ማሳያ እና አርዱዲኖ ኡኖ ጋር - 9 ደረጃዎች
ቪዲዮ: SKR 1.4 - Connecting any BTT Touch Screen Display to SKR 1.3/1.4 2024, ሀምሌ
Anonim
Image
Image
የዳሽቦርድ ቁልፍ ሰሌዳ ከ LCD ማሳያ እና አርዱዲኖ ኡኖ ጋር
የዳሽቦርድ ቁልፍ ሰሌዳ ከ LCD ማሳያ እና አርዱዲኖ ኡኖ ጋር
የዳሽቦርድ ቁልፍ ሰሌዳ ከ LCD ማሳያ እና አርዱዲኖ ኡኖ ጋር
የዳሽቦርድ ቁልፍ ሰሌዳ ከ LCD ማሳያ እና አርዱዲኖ ኡኖ ጋር

ይህ ከኤልሲዲ ማሳያ እና አርዱዲኖ ኡኖ ጋር አብሮ የሚሄድ የማትሪክስ ቁልፍ ሰሌዳ ነው ፣ ይህም ዛሬ በጣም መሠረታዊ ነው። የዚህ ማዋቀር ዓላማ በማትሪክስ ቁልፍ ሰሌዳው ላይ የተተየበ የይለፍ ቃል የሚቀበል ፣ ከትክክለኛው የይለፍ ቃል ጋር የሚያወዳድረው እና በማሳያው ላይ የማረጋገጫ መልእክት የሚያሳይ ፕሮግራም መፍጠር ነው።

ሁለቱም የማትሪክስ ቁልፍ ሰሌዳ እና ይህ ማሳያ ከ ESP8266 እና ESP32 ጋር እንደሚሰሩ ማስታወሱ አስፈላጊ ነው።

እንደሚመለከቱት ፣ እኛ የውጭ ምንጭን ስለማንጠቀም ወረዳውን ከአርዱዲኖ ጋር በዩኤስቢ እናሰራለን። ከአርዱዲኖ ወደቦች ጋር በጣም ቀላል በሆነ መንገድ የተገናኙ ስምንት ሽቦዎች የቁልፍ ሰሌዳችንን ግንኙነት ያደርጉታል። ይህ የቁልፍ ሰሌዳ ኃይል የለውም እና ተገብሮ ነው ፣ ይህም ግንኙነቶችን በእጅጉ ያመቻቻል።

ማሳያው መሣሪያውን በኃይል በሚሠራው በ UART በኩል በተከታታይ ወደብ በኩል ከአርዱዲኖ ጋር ተገናኝቷል።

በሰልፍ ውስጥ በቁልፍ ሰሌዳው ላይ የተተየበው የይለፍ ቃል ትክክል ነው ወይስ አይደለም የሚለውን የወረዳችንን መፈተሻ በቪዲዮው ውስጥ እናሳያለን።

በቪዲዮው ውስጥ በተጠቀመበት እና እዚህ በሚገኘው ፒዲኤፍ ውስጥ ፣ እኛ ጥቅም ላይ የዋለውን ቺፕ ሙሉ ፒኖን አለን።

ደረጃ 1 - ተከታታይ ማሳያ

ተከታታይ ማሳያ
ተከታታይ ማሳያ
ተከታታይ ማሳያ
ተከታታይ ማሳያ

ይህ ከ UART ጋር የሚገናኝ ተከታታይ ማሳያ ነው ፣ እሱም RS ከ TXRX ጋር። በ I2C ስሪቶች ውስጥም አለ ፣ ግን ሌሎች ሞዴሎች ለመጪው ስብሰባ ይቀራሉ። በዚህ ሁኔታ ፣ ይህ ማሳያ በ UART በ RS ይሠራል።

ደረጃ 2 ማትሪክስ ቁልፍ ሰሌዳ

የማትሪክስ ቁልፍ ሰሌዳ
የማትሪክስ ቁልፍ ሰሌዳ

እኛ የምንጠቀምበት የማትሪክስ ቁልፍ ሰሌዳ ምሳሌ የፎቶው ነው ፣ እና በቀኝ በኩል ነው። እንዴት እንደሚሰራ የሚያሳይ ዲያግራም አለን። በእውነቱ 4x4 መስመሮች ብቻ አሉት። ስለዚህ, አነስተኛውን የሽቦዎች መጠን ይጠቀማል; በጠቅላላው ስምንት ሽቦዎች እንዲኖሩ ለእያንዳንዱ ረድፍ እና አምድ አንድ ሽቦ።

እንደሚከተለው ይሠራል ምክንያቱም ኃይል አያስፈልገውም -7 ሲጫን የቁልፍ ሰሌዳው 7 ን ያነሳል እና ከመስመሩ እና ከአምድ ጋር ይገናኛል ፣ ይህም ስልተ ቀመሩን በራስ -ሰር በመቃኘት መታወቂያ እንዲኖር ያደርገዋል።

የነጥብ ማትሪክስ የሆነ ማንኛውም 4x4 ቁልፍ ሰሌዳ በዚህ ስብሰባ ውስጥ እንደሚሠራ ማስታወሱ አስፈላጊ ነው።

ደረጃ 3 - ስብሰባ

ስብሰባ
ስብሰባ

በአጠቃላይ መርሃግብሩ የቁልፍ ሰሌዳው ኃይል ስለሌለው ስምንት ሽቦዎችን በቀጥታ ከአርዱዲኖ ወደቦች ጋር እናገናኛለን። በማሳያው ውስጥ የ RS 232 ምልክት ፣ እና አዎንታዊ እና አሉታዊ ኃይል አለን። የጀርባ ብርሃን አሁንም አለ ፣ እሱም ቀድሞውኑ የተገናኘ (በ BKL ተለይቷል)።

ደረጃ 4: የምንጭ ኮድ

በዚህ ፕሮጀክት ምንጭ ኮድ ውስጥ ተከታታይ እና የቁልፍ ሰሌዳ ማካተት አለብዎት። ለተከታታይ ሶፍትዌሩ አስፈላጊ የሆነ RX_PIN እና TX_PIN አለው ፣ እና ደግሞ INVERTED 1. ይህ ከተገላቢጦሽ አመክንዮ ጋር ግብዓት የሚጠቀምበትን ምልክት ለማጉላት ከስር ተቀምጧል።

// biblioteca responsável pela comunicação com o display LCD #ያካትታሉ // biblioteca responsável por capturar a tecla que foi pressionada no teclado #Include // pino invalido apenas usado no contrutor do SoftwareSerial #define RX_PIN 255 // pino TX da nossa ligação Ardu LCD #define TX_PIN 3 // inverte a lógica dos pinos Rx e Tx ፣ tratando LOW como HIGH e በግልባጩ #ዲፊን INVERTED 1

ደረጃ 5 የማሳያ ትዕዛዞች

ትዕዛዞችን አሳይ
ትዕዛዞችን አሳይ

አስፈላጊ -በዚህ ማሳያ ውስጥ ሕብረቁምፊ በእሱ ላይ ማድረጉ ብቻ በቂ አይደለም። የቁጥጥር ቁምፊዎችን መላክ ያስፈልግዎታል። ፒዲኤፉ የዚህ ማሳያ መመሪያ ያለዎት የጣቢያውን አገናኝ ይ containsል። ግን የሌላ የምርት ስም ተከታታይ ማሳያ ካለዎት ፣ ይህንን የሚመለከቱ የቁጥጥር ኮዶቻቸውን ቢመለከቱ ጥሩ ነው። በዚህ ሞዴል ውስጥ ፣ ለምሳሌ አንድ የተወሰነ መቆጣጠሪያ ስንልክ (ለምሳሌ የዚህ ማሳያ መረጃ) ፣ ግንኙነትን ለማንቃት ቅድመ -ቅጥያ ፣ ቁጥር 254 መላክ አለብን።

ስለዚህ ነገሮችን ለማመቻቸት ARRAY ን አዘጋጅተናል ፣ ይህም በቁጥር መረጃ ጠቋሚ የሚደረስባቸው ተለዋዋጮች ስብስብ ነው። ይህ እንደ መጀመሪያ ውቅረት ወደ ማሳያው ይላካል።

// comando para limpar toda a tela do displayconst char limparTela = {254, 1}; // comandos de configuração inicial/ * 254 ፣ 254 acende o backlight 254 ፣ 1 limpa a tela 254, 253, 1 configura o contraste em nível alto 254 ፣ 13 liga o cursor paraficar piscando */const char configInicial = {254, 254 ፣ 254 ፣ 1 ፣ 254 ፣ 253 ፣ 1 ፣ 254 ፣ 13};

ደረጃ 6 የቁልፍ ሰሌዳ ሥራ

የቁልፍ ሰሌዳው እንዴት ይሠራል? በመጀመሪያ ፣ ድርድርን ይጫናል። ይህ ድርድር በእውነቱ እዚያ ከሚታየው ገጸ -ባህሪ ነው። ስለዚህ ኤክስ ካስቀመጥኩ ፣ የመጀመሪያውን የግራ አዝራር ከላይ ሲጫን ይታያል። ይህ የሚያዝዘው የቁልፍ ሰሌዳው ይዘት ነው።

እኛ እኛ ፍቺው ያለን ሌሎች ነገሮች የረድፍ ቁጥር 4 እና የአምድ ቁጥር 4 ናቸው ፣ በዚህ የቁልፍ ሰሌዳ ARRAY ሁኔታ። እኛ አሁንም የመስመሮቹ ፒኖች አሉን ፣ እነሱ የአርዱዲኖ ፒኖች እና የአምድ ዓምዶች። አሁንም ምልክቱ ፣ ፒን ፣ ረድፍ እና የአምድ መለኪያዎች ያሉት ብጁ የቁልፍ ሰሌዳ ገንቢ አለን።

const byte LINHAS = 4; // número de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // ይግለጹ uma matriz com os símbolos que deseja ser lido do teclado char SIMBOLOS [LINHAS] [COLUNAS] = {{'A', '1', '2', '3'}, { 'B' ፣ '4' ፣ '5' ፣ '6'} ፣ {'C' ፣ '7' ፣ '8' ፣ '9'} ፣ {'D', 'c', '0', 'e '}}; ባይት PINOS_LINHA [LINHAS] = {8, 9, 10, 11}; // pinos que indicam as linhas do teclado byte PINOS_COLUNA [COLUNAS] = {4, 5, 6, 7}; // pinos que indicam እንደ colunas do teclado // instancia de Keypad ፣ responsável por capturar a tecla pressionada Keypad customKeypad = Keypad (makeKeymap (SIMBOLOS) ፣ PINOS_LINHA ፣ PINOS_COLUNA ፣ LINHAS ፣ COLUNAS) ፤

ደረጃ 7 - የይለፍ ቃል ቅንብር

በዚህ ክፍል ውስጥ የይለፍ ቃሉን እንገልፃለን ፣ ከዚያ ባዶ ሕብረቁምፊ የሆነውን የይለፍ ቃል ማስገባት አለብን። ከዚህ በታች የሶፍትዌሩ አርአያ ምሳሌን እናስቀምጣለን።

// variáveis resposnsáveis por armazenar እንደ senhasconst String SENHA_ESPERADA = "1234ABCD"; ሕብረቁምፊ SENHA_DIGITADA = ""; // instancia de SoftwareSerial para nos comunicar com o በተከታታይ SoftwareSerial displaySerial = SoftwareSerial (RX_PIN ፣ TX_PIN ፣ INVERTED) በኩል ማሳየት ፤

ደረጃ 8: ማዋቀር

ስለ ማዋቀሩ ፣ ስለ ፍጥነት ያለው ማሳያSerial.begin (2 ፣ 400) እዚህ አለ። በእኛ ሁኔታ ፣ ይህ ባይት ለመላክ በቂ ነው። ይህንን ተከትሎ 700 ሚሊሰከንዶች መጠበቅ አለ። እኛ ከአዲስ ሚሊሰከንዶች አዲስ መዘግየት ጋር ማሳያSerial.print (initialConfig) ን እንጨምራለን ፣ እና ወደ መጀመሪያው ተግባር እንሄዳለን። በመነሻ ተግባር ውስጥ ማሳያSerial.print (“የይለፍ ቃል”) ን እናስቀምጣለን።

ባዶነት ማዋቀር () {Serial.begin (2400); // inicializando a serial de comunicação com o display // importante o baud rate ser de 2400 displaySerial.begin (2400); // tempo de espera pela inicialização do display delay (700); // seta a configuração inicial do display displaySerial.print (configInicial) ፤ መዘግየት (10); inicio (); } // função responsável por imprimir na tela a mensagem para digitar a senha // é chamada toda vez q a senha foi digitada e comparada, também quando // a tecla limpar display foi pressionada. ባዶነት inicio () {displaySerial.print ("Senha:"); }

ደረጃ 9 - ሉፕ

በሉፕው ውስጥ ብጁ ኪይ = customKeypad.getKey () እንፈጥራለን ፣ እና በቅደም ተከተል ውስጥ ፣ የመቀየሪያ ትእዛዝን እናስገባለን።

// ካፒዩራ አንድ tecla pressionada do teclado char customKey = customKeypad.getKey (); // caso alguma tecla foi pressionada if (customKey) {Serial.println (customKey); መቀየሪያ (ብጁ ቁልፍ) { /… /}}

የሉፕ መቀየሪያ ክፍል 1

በመቀየሪያ ትዕዛዙ ውስጥ - የታተሙ ቁልፎችን የአጋጣሚዎች ዝርዝር ያሳያል ፣ ከተጫነ እና የይለፍ ቃሉን ይጨምራል - ብጁ ቁልፍን ወስዶ የገባውን የይለፍ ቃል ያጣምራል። በመቀጠል ማሳያSerial.print (ብጁ ኪይ) የቁልፍ ይዘቶችን ያሳያል።

መቀየሪያ (ብጁ ቁልፍ) {// caso alguma das teclas imprimíveis foi pressionada case 'A': case 'B': case 'C': case 'D': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': // concatena o novo símbolo a senha que estamos digitando SENHA_DIGITADA+= customKey; Serial.println (SENHA_DIGITADA); // imrpime እና tela o símbolo pressionado displaySerial.print (customKey); ሰበር;

የሉፕ መቀየሪያ ክፍል 2

በዚህ ኮድ ውስጥ የ CLEAR ቁልፍ ከተጫነ አንድ ሁኔታ እናሳያለን። እርስዎ ፊደል C ን ከተየቡ እና እርስዎ እየተየቡት ያለውን የይለፍ ቃል የያዘውን ተለዋዋጭ ካጸዱ ፣ ከዚያ ማያ ገጹን ለማፅዳት ትዕዛዙን ይጠራል እና እንደገና ይጀምራል።

// caso a tecla CLEAR tenha sido pressionada case 'c': // limpa a variável que guarda a senha que está sendo digitada SENHA_DIGITADA = ""; // chama o comando para limpar a tela displaySerial.print (limparTela); // ያዋቅሩ አንድ mensagem para digitar a senha inicio (); ሰበር;

የሉፕ መቀየሪያ ክፍል 3

ሌላው ዕድል ኢ. በመቀጠል ፣ ለ 2 ሰከንዶች አዲስ መዘግየት እንሰጣለን ፣ ማያ ገጹን ያጥፉ ፣ የይለፍ ቃሉን ተለዋዋጭ ዳግም ያስጀምሩ እና ወደ መጀመሪያው ይመለሱ።

// caso a tecla ENTER seja pressionada, devemos comparar as senhas case 'e': // limpa a tela displaySerial.print (limparTela); // se a senha digitada foi igual a ESPERADA if (SENHA_ESPERADA == SENHA_DIGITADA) {Serial.println ("Senha Correta!"); // imprime mensagem de senha correta displaySerial.print ("ሰንሃ ኮርሬታ !!!"); } // caso senha esteja errada ሌላ {Serial.println ("Senha Incorreta!"); // imprime mensagem de senha incorreta displaySerial.print ("Senha Incorreta!"); } // aguarda 2 segundos para limpar a tela novamente e esperar uma nova senha ser digitada delay (2000); displaySerial.print (limparTela);

የሚመከር: