İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Bu talimatta, menülerin nasıl oluşturulacağını, bir TC74A0 sensöründen sıcaklığın nasıl okunacağını ve "değerleri" (bu durumda cep telefonu numaralarını) sonsuz, ancak arduino'nun yerleşik belleğiyle sınırlı bir şekilde nasıl göstereceğimizi keşfedeceğiz.
kullanacağız
-diziler
-Sıvı kristal ekran
-Klavye
Son adımda yer alan kullanım kılavuzu.
Adım 1: Bileşenler
Arduino Uno'su
· 4x4 tuş takımı
· TC74A0 dijital sıcaklık sensörü
· I2c 16x2 LCD Modülü
· 16x2 likit kristal ekran
· Jumper kabloları
· ekmek tahtası
· Kişisel bilgisayar
· Arduino IDE'si
· Aktarma kablosu
Adım 2: Bileşen Kablolaması
SDA VE SCL'YE AYNI HATTA BAĞLI SICAKLIK SENSÖRÜ VE LCD (A4, A5)
LCD (I2c Modülü)
o Arduino'da SDA'dan A5'e
o Arduino'da SCL'den A4'e
o Arduino'da VCC'den 5V'a
o Arduino'da GND'den GND'ye
· 4 x 4 Tuş Takımı
o Sırasıyla Arduino'daki pin 9 – 2'ye bağlı Tuş Takımındaki Pin 1 – 8
TC74A0 sıcaklık sensörü
o TC74A0 pin 2'den Arduino'ya SDA
o Arduino'da TC74A0 pin 3'ten GND'ye
o Arduino'da TC74A0 pin 4'ten SCL'ye
o Arduino'da TC74A0 pin 5 - 5V
3. Adım: Kodlayın
#include //Derleme sırasında kitaplıkları dahil eder
#Dahil etmek
#Dahil etmek
#define Password_Light 5
#define Command_Light 3
#define CellNumber 10
int kullanıcılar = 0;
int Görüntü = 0;
int adres= 72; //tc74a0 ADRES
int ben = 0;
int KULLANICI;
int X = 0;
int XY = 0;
int sıcaklık;
int tempPre = 0;
char userNum[10][10] = {{}, {}, {}};
char Veri[Parola_Uzunluğu];
char Master[Password_Lenght] = "5466"; //PAROLA
char ExitData[Command_Lenght]; //
char Master1[Command_Lenght] = "**";//
char MenuItem;
char CELLArrayA[10];
char CELLArrayB[10];
char CELLArrayC[10];
const bayt SATIRLAR = 4; //dört satır
const bayt COLS = 4; //dört sütun
bayt rowPins[SATIR] = {5, 4, 3, 2};
bayt colPins[COLS] = {9, 8, 7, 6};
bayt data_count = 0, master_count = 0;
bool Pass_is_good;
LiquidCrystal_I2C lcd (0x26, 16, 2);
char hexaKeys[ROWS][COLS] = //KEYPAD BAŞLATILIYOR
{
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}
};
Tuş takımı özelKeypad = Tuş takımı(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
geçersiz kurulum()
{
Seri.başla(9600); // bu Seri Monitörü oluşturur
Wire.begin(); //bu bir Wire nesnesi yaratır
lcd.başla(16, 2);
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Lütfen 3 Bekleyin"); //YÜKLEME EKRANI
gecikme(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Lütfen 2 Bekleyin");
gecikme(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Lütfen 1 Bekleyin");
gecikme(300);
lcd.clear();
String myString = "ARDUINO EĞİTİMİ";
lcd.setCursor(2, 2);
lcd.print(myString);
gecikme (2500);
for(int scrollCounter=0;scrollCounter<24;scrollCounter++)
{
lcd.scrollDisplayLeft();
gecikme(300);
}
lcd.clear();
lcd.print("Şifreyi Giriniz");
}
boşluk döngüsü()
{
switch(Ekran) //ANA MENÜDE NERDEYİZ
{ //KULLANICI A, B, C, D'YE BASIN
durum 0:
{
Parola();
}
kırmak;
dava 1:
{
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("A B C D");
lcd.setCursor(0, 0);
lcd.print("Ana Menü");
Ekran = 2;
gecikme(100);
kırmak;
}
durum 2:
{
char customKey = customKeypad.getKey();
geçiş (özel anahtar)
{
'A' durumu:
{
Serial.println("A'ya basıldı");
MağazaKullanıcı();
kırmak;
}
'B' durumu:
{
Serial.println("B'ye basıldı");
if (kullanıcılar == 0) {
lcd.clear();
lcd.print("KAYITLI KULLANICI YOK");
gecikme(3000);
lcd.clear();
Ekran = 1;
kırmak;
}
DisplayUsers(); kırmak;
}
'C' durumu:
{
Serial.println("C'ye basıldı"); //TEST SIRASINDA KULLANILIR
int uzantı = 0;
while (!ext) {
karakter ch;
sıcaklık = TempMenu();
if (temp != tempPre) {
lcd.clear();
lcd.print("Sıcaklık");
lcd.setCursor(0, 1);
lcd.print(temp);
lcd.print("C");
tempPre = sıcaklık;
gecikme(500);
}
ch = customKeypad.getKey();
if (ch == '*') //SICAKLIK MENÜSÜNDEN ÇIKIŞ (* BASILIRSA)
{
dahili = 1;
lcd.clear();
Ekran = 1;
}
}
kırmak;
TempMenu();
kırmak;
}
'D' durumu:
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("NUA PRAC");
lcd.setCursor(0, 1);
lcd.print("JB SCHOEMAN");
gecikme(3000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Mayıs 2019");
lcd.setCursor(0, 1);
lcd.print("CC OOSTHUIZEN");
gecikme(3000);
lcd.clear();
Ekran = 1;
}
}
}
}
}
// DEĞERLERİ VEYA PROSEDÜRLERİ ÇAĞRIMAK İÇİN ÖZEL FONKSİYONLAR
geçersiz Parola()
{
char customKey = customKeypad.getKey();
if (customKey) // bir tuşa gerçekten basıldığından emin olur, (customKey != NO_KEY) değerine eşittir
{
Veri[veri_sayısı] = özelAnahtar; // char'ı veri dizisine kaydet
lcd.setCursor(veri_sayısı, 1); // her yeni karakteri göstermek için imleci hareket ettir
lcd.print("*"); // söz konusu imleçte karakter yazdır
data_count++; // yeni karakter depolamak için veri dizisini 1 artırın, ayrıca girilen karakter sayısını da takip edin
}
if(data_count == Password_Lenght-1) // dizi indeksi beklenen karakter sayısına eşitse, verileri master ile karşılaştırın
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Şifremiz");
if(!strcmp(Data, Master)) // eşittir (strcmp(Data, Master) == 0)
{
lcd.print("İyi");
lcd.clear();
Ekran = 1;
}
Başka
lcd.print("Kötü");
gecikme(1000);// şifrenin silinmeden önce ekranda tamamen gösterilmesini sağlamak için 1 saniye gecikme eklendi.
lcd.clear();
net veriler();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Şifreyi Giriniz");
}
}
int TempMenu()
{
Wire.beginTransmission(adres);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(adres, 1);
while (Wire.available() == 0);
int c = Wire.read();
dönüş c;
}
geçersiz clearData()
{
while(veri_sayısı !=0)
{ // Bu herhangi bir dizi boyutu için kullanılabilir, Veri[veri_sayısı--] = 0; // yeni veriler için diziyi temizle
}
}
geçersiz StoreUser()
{
int uzantı = 0;
int kullanıcısı;
karakter ch;
while (!ext) {
lcd.clear();
lcd.print("Kullanıcı Girin");
kullanıcı = kullanıcılar + 1;
lcd.print(kullanıcı);
int x = 0;
süre (!x) {
for (int i = 0; i < 10; i++) {
ch = customKeypad.waitForKey();
lcd.setCursor(i, 1);
lcd.print(ch);
userNum[kullanıcı - 1] = ch;
}
gecikme(500);
lcd.clear();
lcd.print("Devam");
lcd.setCursor(0, 1);
lcd.print("* evet #hayır");
ch = customKeypad.waitForKey();
if (ch == '*') {
x = 1;
}
if (ch == '#') {
x = 1;
dahili = 1;
lcd.clear();
Ekran = 1;
}
}
kullanıcılar++;
}
}
geçersiz DisplayUsers()
{
lcd.clear();
for (int i = 0; i < kullanıcılar; i++) {
lcd.print("Kayıtlı Kullanıcı");
lcd.print(i+1);
for (int u = 0; u < 10; u++) {
lcd.setCursor(u, 1);
lcd.print(userNum[u]);
}
gecikme(2000);
lcd.clear();
Ekran = 1;
}
}
Adım 4: KULLANICI KILAVUZU
1. Projeyi açtıktan sonra bir yükleme veya karşılama ekranı görünecektir.
2. Bir “Şifre Girin” ekranı görünecektir, bu ekran 4 karakter, harf veya rakam girmenize izin verir, doğru şifre: 5466, bu size ana menüye erişim sağlayacaktır.
3. Doğru parolayı girdikten sonra, mevcut farklı işlevlerde gezinmek için 4 olası seçenekle ana menü görünecektir.
· A – Kullanıcının cep telefonu numaralarını girin.
o Bir kullanıcıyı sisteme kaydetmek için 10 hane girin
o 10 hane girildikten sonra daha fazla kullanıcı eklemek için “* “tuşuna basın veya ana menüye geri dönmek için “#” tuşuna basın
· B – Kayıtlı kullanıcıları göster
o Kullanıcılar ekranı kaydıracak, her biri 3'er saniye görüntülenecek, tüm kullanıcılar görüntülendiğinde sayfa kapanacak ve ana menüye dönecektir.
o A menü seçeneğinde hiçbir kullanıcı eklenmemişse, “KAYDEDİLMİŞ KULLANICI YOK” görüntülenecektir.
· C – Canlı sıcaklığı gösterir
o Ana menüye geri dönmek için “* “tuşuna basın
· D – Kısa metni göster
o Oluşturanın adını ve derlendiği konuyu bir tarihle görüntüler.