Çözüldü Arduino Projemdeki LCD Ekran Sorunu

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

T-Bad

Hectopat
Katılım
4 Haziran 2019
Mesajlar
502
Çözümler
4
Yer
Eskişehir
Daha fazla  
Cinsiyet
Erkek
Meslek
Mühendis
Arkadaşlar Arduino ile sıvı seviye belirlemesi yapan bir devre yapmak istiyorum. Fakat ya kurduğum devrede ya da yazdığım kodda bir sıkıntı olduğu için LCD ekranda yazmasını istediğim yazılarda hep böyle bir sorun var. Anlaşılması için videoyu ve kodu aşağıya bırakıyorum. Video:
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
Kod;

Kod:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define trig 7
#define led 5
#define echo 6
#define buzzer 8

float uzaklik;
float sure;
float litre;
float referance =1.845;
int minx = -1;
int maxx = 3;
LiquidCrystal_I2C lcd(0x27,16,2);

void setup() {
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0,0);
  pinMode (trig, OUTPUT);
  pinMode (echo, INPUT);
  pinMode (buzzer, OUTPUT);
  pinMode (led, OUTPUT);

}

void loop() {
  digitalWrite(trig, LOW);
  delayMicroseconds(5);
  digitalWrite(trig, HIGH);
  delayMicroseconds (10);
  digitalWrite(trig, LOW);

  sure = pulseIn(echo, HIGH);
  uzaklik= sure/29.1/2;
  litre= uzaklik1111/1000;
  delay(500);
  litre= referance- litre;

  if(litre<= maxx && litre>= minx);
  {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("DEPO SU SEVIYESI");
    lcd.setCursor(5,1);
    lcd.print(litre);
    lcd.setCursor(10,1);
    lcd.print("Litre");
    delay(1000);

  }
if(litre>=1.40);
{
  lcd.clear();
  lcd.setCursor(3,0);
  lcd.print("DIKKAT");
  lcd. setCursor(2,1);
  lcd.print("DEPO DOLU");
  digitalWrite(led, HIGH);
  digitalWrite(buzzer, HIGH);
  delay(500);
  digitalWrite(led, LOW);
  digitalWrite(buzzer, HIGH);
  delay(500);
}
if(litre<=0);
{
lcd.clear();
lcd.setCursor(3,0);
lcd.print("DIKKAT");
lcd.setCursor(2,1);
lcd.print("DEPO BOS");
delay(700);

}
  return loop();
{
lcd. clear();
}
}
 
Son düzenleyen: Moderatör:
Çözüm
Kodu çok karmaşık paylaşmışsın, satıriçi kod seçeneğini değil direkt kod seçeneğini kullan.

Kodda bir sorun göremedim ama karmaşık paylaştığın için gözümden kaçmış olabilir. LCD'de bahsettiğin sorun, karenin siyah yanması mı?

Ayrıca ultrasonik sensör ile yapmak ne kadar mantıklı bilmiyorum, bu daha iyi olur:


~~~~~~

Kod yeni düzenlenmiş

Kod:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define trig 7
#define led 5
#define echo 6
#define buzzer 8

float uzaklik;
float sure;
float litre;
float referance =1.845;
int minx = -1;
int maxx = 3;
LiquidCrystal_I2C lcd(0x27,16,2);

void setup() {
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0,0);
  pinMode (trig, OUTPUT);
  pinMode (echo, INPUT);
  pinMode (buzzer, OUTPUT);
  pinMode (led, OUTPUT);

}

void loop() {
  digitalWrite(trig, LOW);
  delayMicroseconds(5);
  digitalWrite(trig, HIGH);
  delayMicroseconds (10);
  digitalWrite(trig, LOW);

  sure = pulseIn(echo, HIGH);
  uzaklik= sure/29.1/2;
  litre= uzaklik1111/1000;
  delay(500);
  litre= referance- litre;

  if(litre<= maxx && litre>= minx);
  {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("DEPO SU SEVIYESI");
    lcd.setCursor(5,1);
    lcd.print(litre);
    lcd.setCursor(10,1);
    lcd.print("Litre");
    delay(1000);

  }
if(litre>=1.40);
{
  lcd.clear();
  lcd.setCursor(3,0);
  lcd.print("DIKKAT");
  lcd. setCursor(2,1);
  lcd.print("DEPO DOLU");
  digitalWrite(led, HIGH);
  digitalWrite(buzzer, HIGH);
  delay(500);
  digitalWrite(led, LOW);
  digitalWrite(buzzer, HIGH);
  delay(500);
}
if(litre<=0);
{
lcd.clear();
lcd.setCursor(3,0);
lcd.print("DIKKAT");
lcd.setCursor(2,1);
lcd.print("DEPO BOS");
delay(700);

}
  return loop();
{
lcd. clear();
}
}

Bunu dener misin?

C++:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define trig 7
#define led 5
#define echo 6
#define buzzer 8

float uzaklik;
float sure;
float litre;
float referance =1.845;
int minx = -1;
int maxx = 3;
LiquidCrystal_I2C lcd(0x27,16,2);

void setup() {
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0,0);
  pinMode (trig, OUTPUT);
  pinMode (echo, INPUT);
  pinMode (buzzer, OUTPUT);
  pinMode (led, OUTPUT);

}

void loop() {
  digitalWrite(trig, LOW);
  delayMicroseconds(5);
  digitalWrite(trig, HIGH);
  delayMicroseconds (10);
  digitalWrite(trig, LOW);

  sure = pulseIn(echo, HIGH);
  uzaklik= sure/29.1/2;
  litre= uzaklik1111/1000;
  delay(500);
  litre= referance- litre;

  if(litre<= maxx && litre>= minx){
    lcd.clear();
    lcd.print("DEPO SU SEVIYESI");
    lcd.setCursor(5,1);
    lcd.print(litre);
    lcd.setCursor(10,1);
    lcd.print("Litre");
    delay(1000);

    }
   
    else if(litre>=1.40)    {
      lcd.clear();
      lcd.setCursor(3,0);
      lcd.print("DIKKAT");
      lcd. setCursor(2,1);
      lcd.print("DEPO DOLU");
      digitalWrite(led, HIGH);
      digitalWrite(buzzer, HIGH);
      delay(500);
      digitalWrite(led, LOW);
      digitalWrite(buzzer, HIGH);
      delay(500);
    }
   
    else if(litre<=0){
    lcd.clear();
    lcd.setCursor(3,0);
    lcd.print("DIKKAT");
    lcd.setCursor(2,1);
    lcd.print("DEPO BOS");
    delay(700);
    }

}

if tanımların yanlıştı, dikkat et.
Kodu çok karmaşık paylaşmışsın, satıriçi kod seçeneğini değil direkt kod seçeneğini kullan.

Kodda bir sorun göremedim ama karmaşık paylaştığın için gözümden kaçmış olabilir. LCD'de bahsettiğin sorun, karenin siyah yanması mı?

Ayrıca ultrasonik sensör ile yapmak ne kadar mantıklı bilmiyorum, bu daha iyi olur:


~~~~~~

Kod yeni düzenlenmiş

Kod:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define trig 7
#define led 5
#define echo 6
#define buzzer 8

float uzaklik;
float sure;
float litre;
float referance =1.845;
int minx = -1;
int maxx = 3;
LiquidCrystal_I2C lcd(0x27,16,2);

void setup() {
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0,0);
  pinMode (trig, OUTPUT);
  pinMode (echo, INPUT);
  pinMode (buzzer, OUTPUT);
  pinMode (led, OUTPUT);

}

void loop() {
  digitalWrite(trig, LOW);
  delayMicroseconds(5);
  digitalWrite(trig, HIGH);
  delayMicroseconds (10);
  digitalWrite(trig, LOW);

  sure = pulseIn(echo, HIGH);
  uzaklik= sure/29.1/2;
  litre= uzaklik1111/1000;
  delay(500);
  litre= referance- litre;

  if(litre<= maxx && litre>= minx);
  {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("DEPO SU SEVIYESI");
    lcd.setCursor(5,1);
    lcd.print(litre);
    lcd.setCursor(10,1);
    lcd.print("Litre");
    delay(1000);

  }
if(litre>=1.40);
{
  lcd.clear();
  lcd.setCursor(3,0);
  lcd.print("DIKKAT");
  lcd. setCursor(2,1);
  lcd.print("DEPO DOLU");
  digitalWrite(led, HIGH);
  digitalWrite(buzzer, HIGH);
  delay(500);
  digitalWrite(led, LOW);
  digitalWrite(buzzer, HIGH);
  delay(500);
}
if(litre<=0);
{
lcd.clear();
lcd.setCursor(3,0);
lcd.print("DIKKAT");
lcd.setCursor(2,1);
lcd.print("DEPO BOS");
delay(700);

}
  return loop();
{
lcd. clear();
}
}

Bunu dener misin?

C++:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define trig 7
#define led 5
#define echo 6
#define buzzer 8

float uzaklik;
float sure;
float litre;
float referance =1.845;
int minx = -1;
int maxx = 3;
LiquidCrystal_I2C lcd(0x27,16,2);

void setup() {
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0,0);
  pinMode (trig, OUTPUT);
  pinMode (echo, INPUT);
  pinMode (buzzer, OUTPUT);
  pinMode (led, OUTPUT);

}

void loop() {
  digitalWrite(trig, LOW);
  delayMicroseconds(5);
  digitalWrite(trig, HIGH);
  delayMicroseconds (10);
  digitalWrite(trig, LOW);

  sure = pulseIn(echo, HIGH);
  uzaklik= sure/29.1/2;
  litre= uzaklik1111/1000;
  delay(500);
  litre= referance- litre;

  if(litre<= maxx && litre>= minx){
    lcd.clear();
    lcd.print("DEPO SU SEVIYESI");
    lcd.setCursor(5,1);
    lcd.print(litre);
    lcd.setCursor(10,1);
    lcd.print("Litre");
    delay(1000);

    }
   
    else if(litre>=1.40)    {
      lcd.clear();
      lcd.setCursor(3,0);
      lcd.print("DIKKAT");
      lcd. setCursor(2,1);
      lcd.print("DEPO DOLU");
      digitalWrite(led, HIGH);
      digitalWrite(buzzer, HIGH);
      delay(500);
      digitalWrite(led, LOW);
      digitalWrite(buzzer, HIGH);
      delay(500);
    }
   
    else if(litre<=0){
    lcd.clear();
    lcd.setCursor(3,0);
    lcd.print("DIKKAT");
    lcd.setCursor(2,1);
    lcd.print("DEPO BOS");
    delay(700);
    }

}

if tanımların yanlıştı, dikkat et.
 
Çözüm
Kodu çok karmaşık paylaşmışsın, satıriçi kod seçeneğini değil direkt kod seçeneğini kullan.

Kodda bir sorun göremedim ama karmaşık paylaştığın için gözümden kaçmış olabilir. LCD'de bahsettiğin sorun, karenin siyah yanması mı?

Ayrıca ultrasonik sensör ile yapmak ne kadar mantıklı bilmiyorum, bu daha iyi olur:

Deponun ne durumda olması gerektiğini göstermesi gerekiyor. Mesela "DEPO SU SEVIYESI 6 LITRE" yazması gerekirken videoda gözüktüğü gibi sırasıyla "DEPO BOS" veya "DEPO DOLU" gibi alakasız şeyler gösteriyor. Depo dolu değilse su seviyesini göstermesini istiyorum hem su seviyesini gösterip hem depo dolu demesini istemiyorum. Videoda sorun anlaşılıyor aslında.
 

Geri
Yukarı