Daftar Isi:

Arduino UNO (membuat Menu dan Fungsi): 4 Langkah
Arduino UNO (membuat Menu dan Fungsi): 4 Langkah

Video: Arduino UNO (membuat Menu dan Fungsi): 4 Langkah

Video: Arduino UNO (membuat Menu dan Fungsi): 4 Langkah
Video: Belajar Arduino #4 - Pengenalan Bahasa Pemrograman Arduino 2024, November
Anonim
Arduino UNO (membuat Menu dan Fungsi)
Arduino UNO (membuat Menu dan Fungsi)
Arduino UNO (membuat Menu dan Fungsi)
Arduino UNO (membuat Menu dan Fungsi)

Dalam instruksi ini kita akan mengeksplorasi cara membuat menu, membaca suhu dari sensor TC74A0 dan menampilkan "nilai" (dalam hal ini nomor ponsel) dengan cara yang tidak terbatas, tetapi terbatas pada memori papan arduino.

Kami akan menggunakan

-Array

-Layar kristal cair

-Keypad

Panduan pengguna termasuk dalam langkah terakhir.

Langkah 1: Komponen

Arduino Uno

· Papan tombol 4x4

· Sensor suhu digital TC74A0

· Modul LCD I2c 16x2

· Layar kristal cair 16x2

· Kabel jumper

· Papan tempat memotong roti

· Komputer pribadi

· Arduino IDE

· Memindahkan kabel

Langkah 2: Pengkabelan Komponen

SENSOR TEMP DAN LCD TERHUBUNG PADA LINE YANG SAMA KE SDA DAN SCL (A4, A5)

LCD (Modul I2c)

o SDA ke A5 di Arduino

o SCL ke A4 di Arduino

o VCC ke 5V di Arduino

o GND ke GND di Arduino

· Papan tombol 4 x 4

o Pin 1 – 8 pada Keypad masing-masing terhubung ke pin 9 – 2 pada Arduino

Sensor suhu TC74A0

o TC74A0 pin 2 ke SDA di Arduino

o TC74A0 pin 3 ke GND di Arduino

o TC74A0 pin 4 ke SCL di Arduino

o TC74A0 pin 5 hingga 5V di Arduino

Langkah 3: Kode

#include //Termasuk library saat kompilasi

#termasuk

#termasuk

#define Password_Panjang 5

#define Command_Lenght 3

#define CellNumber 10

int pengguna = 0;

int Tampilan = 0;

int alamat= 72; //tc74a0 ALAMAT

int saya = 0;

int PENGGUNA;

int X = 0;

int XY = 0;

int suhu;

int suhuPre = 0;

char userNum[10][10] = {{}, {}, {}};

char Data[Panjang_Kata Sandi];

char Master[Password_Lenght] = "5466"; //KATA SANDI

char ExitData[Panjang_Perintah]; //

char Master1[Command_Lenght] = "**";//

char MenuItem;

char CELLArrayA[10];

char CELLArrayB[10];

char CELLArrayC[10];

const byte BARIS = 4; //empat baris

const byte COLS = 4; //empat kolom

byte rowPins[ROWS] = {5, 4, 3, 2};

byte colPins[COLS] = {9, 8, 7, 6};

byte data_count = 0, master_count = 0;

bool Pass_is_good;

LiquidCrystal_I2C lcd (0x26, 16, 2);

char hexaKeys[ROWS][COLS] = //MEMULAI KEYPAD

{

{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}

};

Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

batalkan pengaturan()

{

Serial.begin(9600); //ini membuat Serial Monitor

Kawat.mulai(); //ini membuat objek Kawat

lcd.begin(16, 2);

lcd.lampu latar();

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("Silahkan Tunggu 3"); //memuat LAYAR

penundaan (1000);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("Silahkan Tunggu 2");

penundaan (1000);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("Silahkan Tunggu 1");

penundaan (300);

lcd.clear();

String myString = "ARDUINO INSTRUCTABLE";

lcd.setCursor(2, 2);

lcd.print(myString);

penundaan (2500);

untuk(int scrollCounter=0;scrollCounter<24;scrollCounter++)

{

lcd.scrollDisplayLeft();

penundaan (300);

}

lcd.clear();

lcd.print("Masukkan Kata Sandi");

}

lingkaran kosong()

{

switch(Tampilan) //MANA DI MENU UTAMA KITA

{ //APAKAH PENGGUNA TEKAN A, B, C, D

kasus 0:

{

Kata sandi();

}

merusak;

kasus 1:

{

lcd.clear();

lcd.setCursor(0, 1);

lcd.print("A B C D");

lcd.setCursor(0, 0);

lcd.print("Menu Utama");

Tampilan = 2;

penundaan(100);

merusak;

}

kasus 2:

{

char customKey = customKeypad.getKey();

beralih (kunci kustom)

{

kasus 'A':

{

Serial.println("A ditekan");

Pengguna Toko();

merusak;

}

kasus 'B':

{

Serial.println("B ditekan");

if (pengguna == 0) {

lcd.clear();

lcd.print("TIDAK ADA PENGGUNA YANG DISIMPAN");

penundaan(3000);

lcd.clear();

Tampilan = 1;

merusak;

}

TampilanUsers(); merusak;

}

kasus 'C':

{

Serial.println("C ditekan"); // DIGUNAKAN SELAMA PENGUJIAN

int ext = 0;

sementara (!ext) {

karakter ch;

suhu = TempMenu();

if (temp != tempPre) {

lcd.clear();

lcd.print("Suhu");

lcd.setCursor(0, 1);

lcd.print(temp);

lcd.print("C");

suhuPre = suhu;

penundaan (500);

}

ch = customKeypad.getKey();

if (ch == '*') //EXIT TEMPERATURE MENU (jika * DITEKAN)

{

ext = 1;

lcd.clear();

Tampilan = 1;

}

}

merusak;

TempMenu();

merusak;

}

kasus 'D':

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("NUA PRAC");

lcd.setCursor(0, 1);

lcd.print("JB SCHOEMAN");

penundaan(3000);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("MEI 2019");

lcd.setCursor(0, 1);

lcd.print("CC OOSTHUIZEN");

penundaan(3000);

lcd.clear();

Tampilan = 1;

}

}

}

}

}

// FUNGSI KUSTOM UNTUK MEMANGGIL NILAI ATAU PROSEDUR

batalkan Kata Sandi()

{

char customKey = customKeypad.getKey();

if (customKey) // memastikan tombol benar-benar ditekan, sama dengan (customKey != NO_KEY)

{

Data[jumlah_data] = customKey; // simpan char ke dalam array data

lcd.setCursor(jumlah_data, 1); // pindahkan kursor untuk menampilkan setiap karakter baru

lcd.print("*"); // cetak karakter pada kursor tersebut

data_jumlah++; // menambah array data sebesar 1 untuk menyimpan karakter baru, juga melacak jumlah karakter yang dimasukkan

}

if(data_count == Password_Lenght-1) // jika indeks array sama dengan jumlah karakter yang diharapkan, bandingkan data dengan master

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("Password adalah ");

if(!strcmp(Data, Master)) // sama dengan (strcmp(Data, Master) == 0)

{

lcd.print("Bagus");

lcd.clear();

Tampilan = 1;

}

lain

lcd.print("Buruk");

delay(1000);// menambahkan penundaan 1 detik untuk memastikan kata sandi benar-benar ditampilkan di layar sebelum dihapus.

lcd.clear();

Hapus data();

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("Masukkan Kata Sandi");

}

}

int TempMenu()

{

Wire.beginTransmission(alamat);

Kawat.tulis(0);

Kawat.endTransmisi();

Wire.requestFrom(alamat, 1);

while (Wire.available() == 0);

int c = Kawat.baca();

kembali c;

}

batal hapusdata()

{

sementara(jumlah_data !=0)

{ // Ini dapat digunakan untuk ukuran array apa pun, Data[jumlah_data--] = 0; //hapus array untuk data baru

}

}

batal Pengguna Toko()

{

int ext = 0;

pengguna int;

karakter ch;

sementara (!ext) {

lcd.clear();

lcd.print("Masukkan Pengguna");

pengguna = pengguna + 1;

lcd.print(pengguna);

intx = 0;

sementara (!x) {

untuk (int i = 0; i < 10; i++) {

ch = customKeypad.waitForKey();

lcd.setCursor(i, 1);

lcd.print(ch);

userNum[pengguna - 1] = ch;

}

penundaan (500);

lcd.clear();

lcd.print("Lanjutkan");

lcd.setCursor(0, 1);

lcd.print("*ya#tidak");

ch = customKeypad.waitForKey();

jika (ch == '*') {

x = 1;

}

jika (ch == '#') {

x = 1;

ext = 1;

lcd.clear();

Tampilan = 1;

}

}

pengguna++;

}

}

batal DisplayUsers()

{

lcd.clear();

for (int i = 0; i < pengguna; i++) {

lcd.print("Pengguna Tersimpan");

lcd.print(i + 1);

for (int u = 0; u < 10; u++) {

lcd.setCursor(u, 1);

lcd.print(Numpengguna[u]);

}

penundaan(2000);

lcd.clear();

Tampilan = 1;

}

}

Langkah 4: PANDUAN PENGGUNA

1. Saat menghidupkan proyek, layar pemuatan atau sambutan akan muncul.

2. Layar "Masukkan Kata Sandi" akan muncul, layar ini memungkinkan Anda memasukkan 4 karakter, huruf atau angka, kata sandi yang benar adalah: 5466, ini akan memberi Anda akses ke menu utama.

3. Setelah memasukkan kata sandi yang benar, menu utama akan muncul dengan 4 opsi yang memungkinkan untuk menavigasi berbagai fungsi yang tersedia.

· A – Masukkan nomor ponsel pengguna.

o Masukkan 10 digit untuk menyimpan pengguna ke sistem

o Setelah 10 digit telah dimasukkan tekan " * " untuk menambahkan lebih banyak pengguna, atau tekan "#" untuk keluar kembali ke menu utama

· B – Menampilkan pengguna yang disimpan

o Pengguna akan menggulir melewati layar, mereka ditampilkan masing-masing selama 3 detik, segera setelah semua pengguna ditampilkan, halaman akan ditutup dan kembali ke menu utama.

o Jika tidak ada pengguna yang ditambahkan pada pilihan menu A, maka akan muncul “NO SAVED USERS”.

· C – Menampilkan suhu langsung

o Tekan “* “untuk keluar kembali ke menu utama

· D – Menampilkan teks pendek

o Menampilkan nama pencipta dan subjek yang dikompilasi dengan tanggal.

Direkomendasikan: