Herkese Merhabalar. Arduino ile 2x16 ekran da 3 tane sensorun verilerini yazdiriyorum. Ekranin ust satirindaki yazi sabit, alt satir proximitiy sensorlere gore 3 farkli yazi yazicak. Soruna gelince, alt satir delay versemde vermesemde goz kirpiyor. Nasil cozebilirim bunu
çok fazla delay ve lcd.clear(); komutu kullanıyorsanız bu normaldir.
Çözmek için sadeleştirebildiğiniz kadar sadeleştriin programı lcd clear yazmaktan kaçının ve veri güncelleme hızını devamlı değil aralıklı yapın sorununuz çözülecektir
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int anahtar =8; // manuel anahtarı
#define sensor A1 //yuk sensoru
int sola_donus = 5; //sola donus sensor
int sola_kesici = 3; //sola donus kesici
int saga_donus = 6; //saga donus sensor
int saga_kesici = 2; //saga donus kesici
int buzer = 9; //buzer
int bom_kesici =4;
int sol_sensor;
int sag_sensor;
int yuzde_deger = 0;
int bomyuzde=0;
int anahtardurum;
int gerilim=0;
void setup() {
pinMode(anahtar,INPUT);
pinMode(sola_donus,INPUT);
pinMode(saga_donus,INPUT);
pinMode(sola_kesici,OUTPUT);
pinMode(saga_kesici,OUTPUT);
pinMode(bom_kesici,OUTPUT);
pinMode(buzer,OUTPUT);
Serial.begin(9600);
Serial.print("sensor");
lcd.init();
lcd.backlight();
}
void loop()
{
sag_sensor=digitalRead(saga_donus);
sol_sensor=digitalRead(sola_donus);
anahtardurum=digitalRead(anahtar);
if(sol_sensor==HIGH) //sola donus kesme
{
digitalWrite(sola_kesici,HIGH);
lcd.setCursor(0, 1);
lcd.print("Sola Donus Son");// sola donus yazısı
digitalWrite(buzer , HIGH);
Serial.println("sola donus son");
}
else if(sag_sensor==HIGH) //saga donus kesme
{
digitalWrite(saga_kesici,HIGH);
lcd.setCursor(0, 1);
lcd.print("Saga Donus Son");//saga donus yazısı
digitalWrite(buzer , HIGH);
Serial.println("saga donus son");
}
else
{ digitalWrite(saga_kesici,LOW);
digitalWrite(sola_kesici,LOW);
lcd.setCursor(0, 1);
lcd.print(" ");
}
int yuzde_deger = analogRead(sensor); //yuk sensoru hesaplama
int gerilim = (100.00 / 1023.00) * yuzde_deger; //5V gerilim, 1024 bite bölünür ve potansiyometreden gelen değer ile çarpılır; değerin eşiti olan gerilim hesaplanır
gerilim=map(gerilim,31,100,0,100);
Serial.print("sensor ");
Serial.println(gerilim); //Hesaplanan gerilim seri monitörde mesaj olarak gönderilir
lcd.setCursor(5, 0);
lcd.print("% ");
lcd.setCursor(7, 0);
lcd.print(gerilim);
if(gerilim >= 80) // yuk sensoru kestirme
{
digitalWrite(bom_kesici , HIGH);
lcd.setCursor(0, 1);
lcd.print("Max Yatay Mesafe");
Serial.println("max yatay mesafe");
delay(1000);
lcd.clear();
}
if(gerilim <80) //yuk sensoru actırma
{
digitalWrite(bom_kesici , LOW);
Serial.println("sistem ok");
}
}
olay bu inceleyebilirseniz sevinirim.
1-sistem ok yazısını ekrana yazdırdıgımda goz kırpmaktan nerdeyse okunmuyor.
2-manuel anahtarı high yaptıgımda bom kesici high ise low’a cevirip ekranda manuel kullanım yazısını gosteremedim.(burda yazılı degil)