Neden LCD yazısı yanıp sönüyor?
LCD’ye sürekli yazı yazmak (örneğin loop() içinde her seferinde lcd.print() demek) ekranın tekrar tekrar temizlenmesine ve yeniden yazılmasına neden olur. Bu da sanki yanıp sönüyormuş gibi görünür.
Hatalı Örnek (Yanıp sönme yapar)
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.begin(16, 2);
lcd.backlight();
}
void loop() {
lcd.clear(); // Bu satır ekranı sürekli temizler
lcd.setCursor(0, 0);
lcd.print("Merhaba");
delay(500); // Yarım saniye bekleyip tekrar başa döner
}
Bu kodda lcd.clear(); her loop döngüsünde ekranı temizlediği için yazı yanıp sönüyormuş gibi olur.
Doğru Örnek (Yanıp sönme yok)
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
bool yazildi = false; // sadece bir kez yazmak için
void setup() {
lcd.begin(16, 2);
lcd.backlight();
}
void loop() {
if (!yazildi) {
lcd.setCursor(0, 0);
lcd.print("Merhaba");
yazildi = true; // bir daha yazma
}
}
Bu şekilde yazı sadece bir kez yazılır, ekran sabit kalır.
Hareketli ya da Değişken Veri Yazacaksan
Eğer sürekli değişen bir bilgi yazıyorsan (sıcaklık, mesafe vs), lcd.clear() kullanmadan önce değişkeni güncellemen gerekir:
cppCopyEditint mesafe = 10;
void loop() {
lcd.setCursor(0, 0);
lcd.print("Mesafe: ");
lcd.print(mesafe);
delay(1000); // Gerekirse güncellemeden önce biraz beklet
}
Eğer değer sabitse tekrar tekrar yazmaya gerek yok. Sadece değiştiğinde yazmak daha iyidir.
Özet
| Problem | Sebep | Çözüm |
|---|---|---|
| Yazı yanıp sönüyor | lcd.clear() her döngüde çağrılıyor | lcd.clear() kullanma, sadece bir kez yaz |
| Ekran sürekli değişiyor | Yazı her loop’ta tekrar yazılıyor | if kullanarak bir kere yaz |
| Değişken bilgi yanıp sönüyor | Ekran temizleniyor, sonra tekrar yazılıyor | clear() yerine setCursor() kullan |