步驟1:串行顯示
這是與UART,它是帶有TXRX的RS。它也存在于I2C版本中,但其他型號將保留用于即將到來的組裝。在這種情況下,該顯示由UART通過RS工作。
步驟2:矩陣鍵盤
矩陣示例我們使用的鍵盤是照片的鍵盤,它在右側。我們有一個顯示其工作原理的圖表。它實際上只有4x4線。因此,它使用的導線數量最少。每行和每列一根導線,因此總共有八根導線。
它不需要電源,因為它的工作方式如下:按下7時,鍵盤拿起7并連接
請記住,點矩陣的任何4x4鍵盤都可以在該程序集中使用。
步驟3:組裝
在一般方案中,由于鍵盤沒有電源,我們將八根電線直接連接到Arduino的端口。在顯示屏上,我們有一個RS 232信號以及正負電源。背光仍然存在,并且已經連接(由BKL標識)。
步驟4:源代碼
在該項目的源代碼中,則必須包括串行和鍵盤。它具有串行軟件必需的設置RX_PIN和TX_PIN,以及INVERTED1。它位于下面,用于放大使用反相邏輯輸入的信號。
//biblioteca responsável pela comunica??o com o display LCD
#include
//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 Arduino x Display LCD
#define TX_PIN 3
// inverte a lógica dos pinos Rx e Tx, tratando LOW como HIGH e vice-versa
#define INVERTED 1
第5步:顯示命令
重要信息:在此顯示中,僅在其上放置一個字符串是不夠的。您需要發送控制字符。 PDF包含您具有該顯示手冊的站點的鏈接。但是,如果您有其他品牌的串行顯示器,則最好查看它們與此有關的控制代碼。例如,在此模型中,當我們發送某個控件(例如有關此顯示的信息)時,我們需要發送一個前綴254,以啟用通信。
因此我們設置了一個方便事物的數組,它是使用數字索引訪問的變量的集合。
//comando para limpar toda a tela do display
const 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:鍵盤操作
鍵盤如何工作?首先,它安裝一個數組。該數組具有將實際顯示在其中的字符。因此,如果我放了一個X,當我按下頂部的第一個左按鈕時,它就會顯示出來。這就是鍵盤的內容,它就是命令的內容。
在此鍵盤的陣列中,我們要定義的其他內容是行號4和列號4。我們仍然有線路的引腳,即Arduino引腳和列的引腳。我們仍然有一個帶有符號,引腳,行和列參數的customKeypad鍵盤構建器。
const byte LINHAS = 4; //número de linhas do teclado
const byte COLUNAS = 4; //número de colunas do teclado
//define 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’}
};
byte 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 as 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 as senhas
const String SENHA_ESPERADA = “1234ABCD”;
String SENHA_DIGITADA = “”;
//instancia de SoftwareSerial para nos comunicar com o Display via serial
SoftwareSerial displaySerial = SoftwareSerial(RX_PIN, TX_PIN, INVERTED);
步驟8:設置
至于設置,這里是displaySerial。開始(2,400),這與速度有關。在我們的情況下,這足以發送一個字節。之后,需要等待700毫秒。我們將初始配置中的displaySerial.print(initialConfig)包含進來,新延遲為10毫秒,然后轉到啟動函數。在啟動函數中,我們將displaySerial.print(“ password:”)放入。
void setup(){
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);
delay(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.
void inicio(){
displaySerial.print(“Senha:”);
}
步驟9:循環
,我們創建一個customKey = customKeypad.getKey(),然后按順序輸入一個Switch命令。
//captura a tecla pressionada do teclado
char customKey = customKeypad.getKey();
//caso alguma tecla foi pressionada
if (customKey){
Serial.println(customKey);
switch(customKey)
{
/。../
}
}
循環開關第1部分
在Switch命令內部:如果按下該鍵,它將顯示可打印鍵的可能性列表,并增加密碼:使用customKey并連接輸入的密碼。接下來,displaySerial.print(customKey)顯示鍵的內容。
switch(customKey)
{
//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 na tela o símbolo pressionado
displaySerial.print(customKey);
break;
循環開關第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);
//configura a mensagem para digitar a senha
inicio();
break;
回路開關第3部分
另一種可能性是如果鍵入字母E。在這種情況下,如果輸入的密碼正確或不正確,屏幕將被清理并分析。接下來,我們將給出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(“Senha Correta!!!”);
}
//caso senha esteja errada
else{
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);
責任編輯:wv
-
lcd
+關注
關注
34文章
4440瀏覽量
168562 -
鍵盤
+關注
關注
4文章
860瀏覽量
39902 -
Arduino
+關注
關注
188文章
6477瀏覽量
188065
發布評論請先 登錄
相關推薦
自己設計的Arduino UNO R3主控板原理圖+PCB源文件(可直接打樣)
![](https://file1.elecfans.com/web2/M00/0C/D4/wKgaomc8T-KAbltRAAO7x-Ho6fQ434.png)
oled是什么顯示屏 OLED與LCD的區別
oled顯示屏的優缺點有哪些
液晶顯示屏是什么材料做的
液晶顯示屏與led顯示屏的區別
lcd和led顯示屏有什么區別
使用 TPS1HC100-Q1 高效驅動汽車儀表板負載應用說明
![使用 TPS1HC100-Q1 高效驅動汽車<b class='flag-5'>儀表板</b>負載應用說明](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
vr顯示屏用電視還是led屏
Omdia:預計到2025年,Mini LED背光LCD顯示屏的出貨量將超過OLED顯示屏
![Omdia:預計到2025年,Mini LED背光<b class='flag-5'>LCD</b><b class='flag-5'>顯示屏</b>的出貨量將超過OLED<b class='flag-5'>顯示屏</b>](https://file1.elecfans.com//web2/M00/F3/CE/wKgaomZ6uMqAMpQsAADcCAhpSQ0868.jpg)
![](https://file1.elecfans.com/web2/M00/ED/2F/wKgZomZqLkGAWCC7AAKwiFj2gH4817.jpg)
LED顯示屏設計方案
細分市場突破:國內首顆車規級LCD顯示屏PMIC芯片
![細分市場突破:國內首顆車規級<b class='flag-5'>LCD</b><b class='flag-5'>顯示屏</b>PMIC芯片](https://file1.elecfans.com/web2/M00/C3/A7/wKgaomXm8RiAGJ6PAASIT4QkeD8399.png)
評論