2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Inilah hasil akhirnya Anda setelah menyatukannya dan mengunggah kode.
Langkah 1: Hal-hal yang Anda Butuhkan
Kabel Jumper, resistor 220 OHM, Layar LCD 16x2, Tombol Tekan, Motor Servo, Breadboard, Arduino Uno.
Langkah 2: Kode
James chinchay
#termasuk
#sertakan #sertakan
int alamat = 0; SaveTimer panjang yang tidak ditandatangani statis; static unsigned long SaveDelay = (30 * 1000);
char KODE[10] = "1234E"; karakter Str[10]; panjang Kode karakter = 4; int Pos = 0; bool Tidak Terkunci; DisplayTimer panjang yang tidak ditandatangani statis; DisplayDelay panjang yang tidak ditandatangani statis = 200;
LiquidCrystal lcd (12, 11, 9, 8, 7, 6);
int tombolPin1 = 2; int tombolPin2 = 3; int tombolPin3 = 4; int tombolPin4 = 5;
int tombol enter = 10; int clearlockbutton = 13;
Servo myServo; //menyiapkan program konstruk void setup() {
myServo.attach(A1);
int EEPROMCodeOK = benar; for (Pos = 0; Pos <= (Panjang Kode); Pos++) { Str[Pos] = EEPROM.read(Pos); if (!(strrchr("1123456789", Str[Pos]))) { // bukan kode yang valid EEPROMCodeOK = false; } } Pos++; Str[Pos] = EEPROM.read(Pos); if (Str[CodeLength + 1] != 'E') EEPROMCodeOK = false; if (EEPROMCodeOK) { Str[Panjang Kode + 2] = '\0'; strncpy(KODE, Str, Panjang Kode + 1); } ClearCode(); // mengatur input pinMode(buttonPin1, INPUT_PULLUP); pinMode(buttonPin2, INPUT_PULLUP); pinMode(buttonPin3, INPUT_PULLUP); pinMode(buttonPin4, INPUT_PULLUP);
pinMode(tombol enter, INPUT_PULLUP); pinMode(tombol clearlock, INPUT_PULLUP);
lcd.begin(16, 2); lcd.setCursor(0, 0); //set up lcd.print("Halo Mr Birch"); penundaan(2000); lcd.clear(); lcd.setCursor(0, 0); //set up prompt password lcd.print("Password:");
DisplayTimer = milis() + 200; }
lingkaran kosong() {
Kunci();
Pos = kendala(Pos, 0, CodeLength); // tombol baca int buttonState1 = digitalRead(buttonPin1); int buttonState2 = digitalRead(buttonPin2); int buttonState3 = digitalRead(buttonPin3); int buttonState4 = digitalRead(buttonPin4);
int clButtonState = digitalRead(tombol hapus); int enterButtonState = digitalRead(enterbutton);
lcd.setCursor(9, 0); //persyaratan untuk mengaktifkan if (buttonState1 == LOW) { Str[Pos] = '1'; Pos++; Str[Pos] = '\0'; penundaan (250); while (digitalRead(buttonPin1) == RENDAH);
}
else if (buttonState2 == LOW) { Str[Pos] = '2'; Pos++; Str[Pos] = '\0'; penundaan (250); while (digitalRead(buttonPin2) == RENDAH);
}
else if (buttonState3 == LOW) { Str[Pos] = '3'; Pos++; Str[Pos] = '\0'; penundaan (250); while (digitalRead(buttonPin3) == RENDAH); }
else if (buttonState4 == LOW) { Str[Pos] = '4'; Pos++; Str[Pos] = '\0'; penundaan (250); while (digitalRead(buttonPin4) == RENDAH);
} else if (enterButtonState == LOW) { Str[Pos] = 'E'; Pos++; Str[Pos] = '\0'; penundaan (250); while (digitalRead(buttonPin1) == RENDAH); if (strcmp (Str, KODE) == 0) { Tidak terkunci = benar; lcd.setCursor(0, 0); lcd.print("Akses Diberikan"); penundaan(2000); lcd.clear(); lcd.print("Tidak Terkunci"); } else if (SaveTimer > milis() && (Pos + 1) == CodeLength) {
strcpy(KODE, Str); for (Pos = 0; Pos <= (Panjang Kode + 1); Pos++) { EEPROM.write(Pos, Str[Pos]); } lcd.setCursor(0, 0); lcd.print("Menyimpan Kode:"); lcd.setCursor(0, 1); lcd.print(Str);
Tidak terkunci = benar; }
lain {
lcd.clear(); lcd.print("Akses Ditolak."); penundaan(2000); lcd.clear(); lcd.print("Password:");
} //membuka kode saat (Tidak terkunci) { Unlock(); if (digitalRead(tombol clear) == RENDAH) { delay(200); lcd.clear(); lcd.print("Terkunci"); penundaan(2000); lcd.clear(); Tidak terkunci = salah; SaveTimer = milis() + 30000; } }
HapusKode();
}
else if (clButtonState == LOW) { delay(500);
while (tombol clearlock == RENDAH); if ((milis() - SaveTimer) > 4500) {
}
HapusKode();
}
if ((panjang)(milis() - DisplayTimer) >= 0) { DisplayTimer += DisplayDelay; lcd.setCursor(9, 0); lcd.print(Str); lcd.print("");
} }
batal ClearCode() {
Pos = 0; Str[Pos] = '\0'; lcd.setCursor(0, 0); lcd.print("Password:"); lcd.setCursor(0, 1); lcd.print("");
}
batal Buka () {
myServo.write(150);
} //tombol pengunci program void Lock() {
myServo.write(50);
}
Langkah 3:
ketika dilakukan semuanya akan terlihat seperti ini.