İçindekiler:

LCD Ekranlı ve Arduino Uno'lu Dashboard Klavye: 9 Adım
LCD Ekranlı ve Arduino Uno'lu Dashboard Klavye: 9 Adım

Video: LCD Ekranlı ve Arduino Uno'lu Dashboard Klavye: 9 Adım

Video: LCD Ekranlı ve Arduino Uno'lu Dashboard Klavye: 9 Adım
Video: Arduino Leanardo Project || USB Keyboard || HID Device || #Shorts || #ShortVideo | #TrendingVideo 2024, Temmuz
Anonim
Image
Image
LCD Ekranlı ve Arduino Uno'lu Pano Klavyesi
LCD Ekranlı ve Arduino Uno'lu Pano Klavyesi
LCD Ekranlı ve Arduino Uno'lu Pano Klavyesi
LCD Ekranlı ve Arduino Uno'lu Pano Klavyesi

Bu, bir LCD ekran ve bugün var olan en temel Arduino Uno ile birlikte çalışan bir matris klavyedir. Bu kurulumun amacı, matris klavyede yazılan bir şifreyi alan, doğru şifre ile karşılaştıran ve ekranda bir onay mesajı görüntüleyen bir program oluşturmaktır.

Hem matris klavyesinin hem de bu ekranın ESP8266 ve ESP32 ile çalıştığını unutmamak önemlidir.

Gördüğünüz gibi, harici bir kaynak kullanmadığımız için Arduino ile devreye USB ile güç veriyoruz. Arduino'nun portlarına çok basit bir şekilde bağlanan sekiz kablo, klavyemizin bağlantısını sağlıyor. Bu klavyenin gücü yoktur ve pasiftir, bu da bağlantıları büyük ölçüde kolaylaştırır.

Ekran, aynı zamanda cihaza güç sağlayan seri port olan UART aracılığıyla bir Arduino'ya bağlanır.

Bir gösteride, videoda klavyede yazılan şifrenin doğru olup olmadığını kontrol eden devremizi gösteriyoruz.

Videoda kullanılan ve burada bulunan PDF'de, kullanılan çipin tam pin çıkışına sahibiz.

Adım 1: Seri Ekran

Seri Ekran
Seri Ekran
Seri Ekran
Seri Ekran

Bu, bir TXRX ile RS olan UART ile iletişim kuran seri ekrandır. Ayrıca I2C sürümlerinde de mevcuttur, ancak diğer modeller yaklaşan bir montaj için kalacaktır. Bu durumda, bu ekran UART by RS tarafından çalışır.

2. Adım: Matris Klavyesi

Matris Klavyesi
Matris Klavyesi

Kullandığımız matris klavye örneği fotoğraftaki gibidir ve sağ taraftadır. Nasıl çalıştığını gösteren bir diyagramımız var. Aslında sadece 4x4 hatları var. Böylece minimum miktarda tel kullanır; her satır ve sütun için bir tel, böylece toplamda sekiz tel olur.

Güç gerektirmez çünkü şu şekilde çalışır: 7'ye basıldığında klavye 7'yi alır ve satır ve sütuna bağlanır, bu da algoritmayı otomatik olarak tarayarak tanımlamayı mümkün kılar.

Nokta vuruşlu herhangi bir 4x4 klavyenin bu montajda çalışacağını unutmamak önemlidir.

Adım 3: Montaj

toplantı
toplantı

Genel şemada, klavyenin gücü olmadığı için sekiz kabloyu doğrudan Arduino'nun bağlantı noktalarına bağlarız. Ekranda RS 232 sinyali ve pozitif ve negatif güç var. Halihazırda bağlı olan (BKL tarafından tanımlanan) Arka Işık hala mevcuttur.

Adım 4: Kaynak Kodu

Bu projenin kaynak koduna seri ve tuş takımını dahil etmeniz gerekiyor. Seri yazılım için gerekli olan bir set RX_PIN ve bir TX_PIN'e ve ayrıca INVERTED 1'e sahiptir. Bu, ters çevrilmiş mantıkla girişi kullanan sinyali yükseltmek için altına yerleştirildi.

// Ekran LCD'si ile ilgili iletişim bilgileri, ekran LCD#içerme //Arduino'da onaylanmaz ve onaylanmaz #include // herhangi bir yaratıcı yazılımSeri YazılımSeri #define RX_PIN 255 // Arduino'ya bağlanmaz. Ekran LCD #define TX_PIN 3 // bir mantık dos pinos Rx e Tx, tratando LOW como YÜKSEK e tersini ters çevir #define TERS 1

Adım 5: Komutları Görüntüle

Ekran Komutları
Ekran Komutları

Önemli: Bu ekranda sadece bir dize koymak yeterli değildir. Kontrol karakterlerini göndermeniz gerekiyor. PDF, bu ekranın bir kılavuzuna sahip olduğunuz sitenin bağlantısını içerir. Ancak başka bir markanın seri gösterimi varsa, bununla ilgili kontrol kodlarına bakmakta fayda var. Bu modelde, örneğin, belirli bir kontrol gönderdiğimizde (örneğin bu ekran için bilgi), iletişimi sağlamak için 254 numaralı bir önek göndermemiz gerekiyor.

Bu yüzden, sayısal bir indeksle erişilen değişkenlerin bir koleksiyonu olan şeyleri kolaylaştırmak için bir ARRAY kurduk. Bu, ilk yapılandırma olarak ekrana gönderilecektir.

//buna bir tela do displayconst char limparTela = { 254, 1}; //comandos de configuração inisial /* 254, 254 arka ışık 254, 1 bağlantı noktası 254, 253, 1 yapılandırma ve karşıtlık 254, 13 lig paraficar paraficar piscando */ const char configInicial = { 254, 254, 254, 1, 254, 253, 1, 254, 13};

Adım 6: Klavye İşlemi

Klavye nasıl çalışır? İlk olarak, bir diziyi bağlar. Bu dizi, aslında orada görüntülenecek olan karaktere ait. Yani X koyarsam üstteki ilk sol düğmeye bastığımda görüntüleniyor. Bu, klavyenin içeriğidir ve komuta edeceği şeydir.

Tanıma sahip olduğumuz diğer şeyler, bu klavyenin DİZİSİ durumunda, 4 numaralı satır ve 4 numaralı sütundur. Hala Arduino pinleri olan çizgilerin pinleri ve kolonun pinleri var. Hala sembol, pin, satır ve sütun parametrelerine sahip bir özel Tuş Takımı Tuş Takımı oluşturucumuz var.

const bayt LINHAS = 4; // número de linhas, tecladoconst byte COLUNAS = 4; // teclado'daki tek sütun sayısı // 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 '} }; bayt PINOS_LINHA[LINHAS] = {8, 9, 10, 11}; //pinos que indicam as linhas do teclado byte PINOS_COLUNA[COLUNAS] = {4, 5, 6, 7}; //Teclado olarak pinos que indicam // Tuş Takımı, yanıtlama ve yakalama özelliği Tuş Takımı özelKeypad = Tuş takımı(makeKeymap(SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

7. Adım: Şifre Ayarı

Bu kısımda şifreyi tanımlıyoruz ve ardından boş bir dize olan bir şifre girmemiz gerekiyor. Aşağıda, softwareSerial örneğini koyuyoruz.

//senhasconst String SENHA_ESPERADA = "1234ABCD"; Dize SENHA_DIGITADA = ""; //Instancia de SoftwareSerial para nos comunicar com o Seri üzerinden görüntüleme SoftwareSerial displaySerial = SoftwareSerial(RX_PIN, TX_PIN, INVERTED);

Adım 8: Kurulum

Kuruluma gelince, hız ile ilgili olan displaySerial.begin (2, 400) burada. Bizim durumumuzda, bu bir bayt göndermek için yeterlidir. Bunu takiben 700 milisaniyelik bir bekleme vardır. İlk konfigürasyondan displaySerial.print (initialConfig) dosyasını 10 milisaniyelik yeni bir gecikme ile ekliyoruz ve başlatma fonksiyonuna geçiyoruz. Başlatma fonksiyonuna displaySerial.print ("şifre:") koyduk.

geçersiz kurulum(){ Serial.begin(2400); //İletişim için seri iletişim bilgilerinin görüntülenmesi //önemli veya baud hızı seri 2400 displaySerial.begin(2400); //tempo de espera pela inicialização do display gecikme(700); //bir yapılandırmanın ilk gösterimini ayarla displaySerial.print(configInicial); gecikme(10); inicio(); } //işlenceli yanıtlar, sayısal değerlere ilişkin yanıtlar // bu günlerin sayısı ve karşılaştırma, também quando //baskı için bir gösterge ekranı. void inicio(){ displaySerial.print("Senha:"); }

Adım 9: Döngü

Döngüde bir customKey = customKeypad.getKey() oluşturuyoruz ve sırayla bir Switch komutu giriyoruz.

// bir tecla pressionada yap teclado char customKey = customKeypad.getKey(); //caso alguma tecla foi pressionada if (customKey){ Serial.println(customKey); geçiş(özelKey) { /…/ } }

Döngü Anahtarı Bölüm 1

Switch komutunun içinde: basıldığında yazdırılabilir tuşların olasılıklarının listesini gösterir ve parolayı artırır: customKey'i alır ve girilen parolayı birleştirir. Ardından, displaySerial.print (customKey) ana içeriği gösterir.

switch(customKey) { //caso alguma das teclas imprimíveis foi pressionada vaka 'A': vaka 'B': vaka 'C': vaka 'D': vaka '0': vaka '1': vaka '2': vaka '3': durum '4': durum '5': durum '6': durum '7': durum '8': durum '9': // bir senha que estamos digitando SENHA_DIGITADA+=özelKey; Serial.println(SENHA_DIGITADA); // imrpime símbolo pressionado displaySerial.print(customKey); kırmak;

Döngü Anahtarı Bölüm 2

Bu kodda CLEAR tuşuna basılırsa bir senaryo gösteriyoruz. C harfini yazıp, yazdığınız şifreyi tutan değişkeni temizlerseniz, ekranı temizleme komutunu çağırır ve yeniden başlar.

//caso a tecla CLEAR tenha sido pressionada case 'c': // bir değişkeni kontrol et ve senha que está sendo digitada SENHA_DIGITADA = ""; //chama veya comando para limpar bir tela displaySerial.print(limparTela); // bir mensagem para digitar a senha inicio(); kırmak;

Döngü Anahtarı Bölüm 3

Diğer bir ihtimal ise E harfini yazmanızdır. Bu durumda ekran temizlenecek ve girilen şifrenin doğru veya yanlış olup olmadığı incelenecektir. Ardından 2 saniyelik yeni bir gecikme vereceğiz, ekranı temizleyeceğiz, şifre değişkenini sıfırlayacağız ve başa döneceğiz.

//caso a tecla ENTER seja pressionada, senhas case 'e' olarak devemos karşılaştırması: //limpa a tela displaySerial.print(limparTela); // bir senha digitada foi igual bir ESPERADA if(SENHA_ESPERADA==SENHA_DIGITADA) { Serial.println("Senha Correta!"); //göstergeler arası mensagem de senha correta displaySerial.print("Senha Correta!!!"); } //caso senha esteja hatalı başka{ Serial.println("Senha Incorreta!"); // en iyi mensagem de senha incorreta displaySerial.print("Senha Incorreta!"); } //aguarda 2 segundos para limpar ve tele novamente ve esperar uma nova senha ser digitada delay(2000); displaySerial.print(limparTela);

Önerilen: