zPookie
Centipat
- Katılım
- 13 Nisan 2024
- Mesajlar
- 94
Daha fazla
- Sistem Özellikleri
- RTX 4050 6 GB
Intel Core I7-13700H
32 GB RAM
1TB SSD
- Cinsiyet
- Erkek
- Meslek
- Öğrenci
CS2'deki C4'ün aynısını yapıyorum, şu anki amacım:
Sarı LED belli aralıklarla yanıp söncek.
Aynı zamanda;
LCD ekranda keypadden şifre girmesini isteyecek.
Sorun şu ki LED yanıp sönüyor şifre girme kısmı gelince LED'i beklemeye alıyor ve şifre girmemi bekliyor. Ben ikisini de aynı anda yapmasını bekliyorum. Bunu nasıl düzeltebilirim?
Şuan ki kodum şu şekilde :
Sarı LED belli aralıklarla yanıp söncek.
Aynı zamanda;
LCD ekranda keypadden şifre girmesini isteyecek.
Sorun şu ki LED yanıp sönüyor şifre girme kısmı gelince LED'i beklemeye alıyor ve şifre girmemi bekliyor. Ben ikisini de aynı anda yapmasını bekliyorum. Bunu nasıl düzeltebilirim?
Şuan ki kodum şu şekilde :
CSS:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#define Bomb_Buzzer 2
#define Defuse_Buzzer 10
#define Red_Led 11
#define Yellow_Led 12
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; // R1, R2, R3, R4
byte colPins[COLS] = {5, 4, 3}; // C1, C2, C3
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
pinMode(Bomb_Buzzer, OUTPUT);
pinMode(Defuse_Buzzer, OUTPUT);
pinMode(Red_Led, OUTPUT);
pinMode(Yellow_Led, OUTPUT);
digitalWrite(Bomb_Buzzer, LOW);
digitalWrite(Defuse_Buzzer, LOW);
digitalWrite(Red_Led, LOW);
digitalWrite(Yellow_Led, LOW);
}
void loop() {
digitalWrite(Yellow_Led, 1); delay(300); digitalWrite(Yellow_Led, 0); delay(650);
baslangic();
}
void baslangic() {
String girilenSifre = "";
String dogruSifre = "7355608";
int yildizSayisi = 7;
// İlk başta 7 tane * göster
lcd.clear();
for (int i = 0; i < yildizSayisi; i++) {
lcd.setCursor(i, 0);
lcd.print("*");
}
while (girilenSifre.length() < 7) {
char tus = keypad.getKey();
if (tus != NO_KEY && tus >= '0' && tus <= '9') {
girilenSifre += tus;
// Ekranda yazdırma işlemi: sağdan sola kayacak
for (int i = 0; i < yildizSayisi; i++) {
lcd.setCursor(i, 0);
if (i < yildizSayisi - girilenSifre.length()) {
lcd.print("*");
} else {
lcd.print(girilenSifre[i - (yildizSayisi - girilenSifre.length())]);
}
}
delay(200); // Giriş tuşu sonrası biraz bekleme
}
}
delay(500);
if (girilenSifre == dogruSifre) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Bomba Kuruluyor");
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Yanlis Sifre!");
delay(1500);
}
}