arduino ile lcd ekran kontrolü etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Merhabalar,
Adım adım arduino derslerimizde bu yazımızda arduino ile lcd ekran sürme işleminden bahsedeceğiz.
Arduino Ide içerisinde lcd ekranları sürmemizi sağlayan liquidcrystal lcd kütüphanesi bulunmakadır.
Peki bu kütüphane bize neleri sağlamakta ve hangi fonksiyonları barındırmaktadır? isterseniz buna bir gözatalım

begin(int kolon,int sıra) : begin fonksiyonu bizim ne kadarlık bir lcd kullanacağımızı programsal olarak tanımlamamıza olanak tanır.Kullandığımız lcd kaç satır ve sütunu destekliyorsa kolon ve sıra ile bunu belirtmemiz gerekmektedir.

clear() : ingilizcesinden de kolayca anlaşılabileceği üzere lcd ekran üzerinde herşeyi temizleyen fonksiyonumuz

home() : lcd ekran üzerinde işaretçinin lcd ekranın başlangıç noktası yani en yukarı ve sol köşesine gitmesi sağlar

setCursor(int kolon,int sıra): işaretçimizin fonksiyon içerisinde girilmiş olan kolon ve sıra numarasına ilerlemesini sağlar

write(byte değer): işaretçini lcd ekran üzerinde bulunduğu yere değeri yazdırmaktadır.Burada değer 1 adet karakteri yani char belirmektedir.

print(veri): ekrana string olarak veri değerini yazdırmaya yarayan fonksiyonumuz

cursor(): işaretçinin altında çizginin belirlemesini sağlamaktadır.

noCursor(): işaretçinin ekran üzerinde görünmemesini sağlar.

blink(): işaretçinin yanıp sönmesine olanak tanır.

noBlink(): işaretçinin yanıp sönmesini iptal eder

display(): ekranın kapanmasını sağlayan noDisplay fonksiyonun tersini sağlayarak ekrana verilen son verinin geri getirilmesini sağlar

noDisplay(): ekranı kapatma fonksiyonudur.

scrollDisplayLeft(): ekrandaki veriyi bir karakter boşluk ile sola kaydırır

scrollDisplayRight(): ekrandaki veriyi bir karakter boşluk ile sağa kaydırır

autoscroll():her karakter girildiğinde otomatik olarak önceki karakteri sola ya da sağa kaydırır

noAutoscroll(): otomatik scroll komutunu devre dışı bırakır.

leftToRight(): verinin ekrana soldan sağa doğru akacak şekilde yazılmasını sağlar

rightToLeft():verinin ekrana sağdan sola doğru akacak şekilde yazılmasını sağlar

Fonksiyonlarımızı inceledikten sonra gelelim lcd ekranımızı nasıl arduinomuza bağlayacağımıza

şemada 68 ohm değerindeki direnç lcd ekranımızın arduino üzerinden çekilen akımını sınırlamak için kullanılmıştır.

Yukarıda arduino ile lcd ekran arasındaki bağlatı noktaları listenmiştir.Burada dikkatinizi çekeceği üzere arduino üzerinden veriler 4 bit olarak ekrana gönderilmektedir ve db4-7 üzerinde arduinonun d2-5 arasında bağlantı sağlanmıştır.Potansiyometre lcd ekranımızın kontrast yani netleğini ayarlamak amacı ile devreye eklenmiştir.


Gelelim arduino kodlarımıza

#include <LiquidCrystal.h> // lcd kütüphanemizi ekledik

LiquidCrsytal lcd(12,11,5,4,3,2); // lcd ekranımızın bağlantı noktalarını tanımladık 12,11 register ve enable pinleri iken 5-2 pinleri ise data pinlerimiz

void setup()
{
   lcd.begin(16,2);// lcd ekranımızın 2 satırlık ve 16 sütunluk olduğu programa belirtiyoruz
   lcd.print("Arduino");// lcd ekranın en üst sol köşesinden başlayarak arduino yazdırdık.
   lcd.setCursor(0,1);// lcd ekran üzerinde işaretçimizi 2. satır ve 0. sütuna yani 2. satır başlangıcına çekiyoruz
   lcd.print("LCD display");// 2. satırımıza verimizi yazdırdık.
}
void loop()
{
}

Bu yazımızda sizlerle paralel bağlantılı lcd ekranların arduino ile kullanımından bahsettik.Bir sonraki yazımızda seri olarak haberleşen lcd ekran ile uygulama üzerine sizlerle birlikte olacağız.




Yine yaratıcı bir fikir arduino ile birleşince karşımıza vücut bulmuş bir şekilde çıkıyor.Nedir bu?

Su seviye kontrollü pompa sürücü.

Şema
Su seviye kontrolünden başlayalım isterseniz.Dikkatinizi çektiyse su haznesinin üzerinden arduinonun 5 volt çıkışı suya daldırılmış vaziyette ve haznenin sağ tarafından ise 3 noktadan düşük seviye,orta seviye ve yüksek seviye olmak üzere 3 adet prop yerleştirilimiş.

Herbir su seviye switchi nasıl çalışır?

Yerleştirilmiş ilgili proba su teması olması halinde o prob ile 5 volt kaynağımız kısa devre olacağından transistörün base ine düşük bir miktar akım akar ve trasistörün emitter ve collector kısımları kısa devre olur ve arduinomuza o bolgeden dijital input olarak bilgi gider.

Peki sistemde su seviyesine nasıl karar verilir?

High,medium ve low olmak üzere 3 adet proba su teması halinde yüksek seviyede su var demek anlamını taşır ve su pompasını kapatırız.Medium ve low a teması halinde ise orta seviye bir su var anlamını taşıyacağından ya pompamıza düşük devirde çalışma bilgisi göndeririz ya da zamanlayıcı yardımı ile belirli süre çalıştırırız.Sadece düşük seviyesi görülmesi durumunda ise tam güç çalıştırır ve haznemizi doldururuz.

Motor nasıl sürülüyor?

Su seviye devrelerinde transistörün anahtarlama elamanı olarak kullanıldığı gibi arduinonun bir digital pini output olarak ayarlanmış ve pompayı aktif hale getirecek transistörün base ine bağlanmış.Çıkışımızın 1 olması durumunda base e bir miktar akım gidecek ve motorun çıkışı ile toprak kısa devre olacağından motorumuz çalışmaya başlayacak.

Sistemin görünüşü
Gelelim sistemin kodlarına :)


#include <LiquidCrystal.h> // lcd kütüphanesi eklenmiş
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // lcd bacakları kütüphaneye göre ayarlanmış
byte sensorPin[] = {8, 9, 10}; // su seviye sensör dijital adresleri 8-9-10 olarak ayarlandı
byte ledPin[] = {11, 12, 13}; // led pinleri ayarlandı
const byte sensors = 3;
int level = 0;
int motor = A4; // motor pini ayarlandı

void setup() {
for(int i = 0; i < sensors; i++) {
pinMode(sensorPin[i], INPUT); //sensör pinleri input haline geldi
pinMode(ledPin[i], OUTPUT); // led pinleri output haline geldi
}
pinMode(motor, OUTPUT); //motor pini output haline geldi
lcd.begin(16, 2);  //lcd başlatıldı
}

void loop() {
level = 0; // su seviyesi sıfırlandı
for(int i = 0; i < sensors; i++) {
if(digitalRead(sensorPin[i]) == LOW) { // düşük su seviyesi kontrolü
digitalWrite(ledPin[i], HIGH); // düşük ledi yakıldı
level = sensors - i; // su seviyesi dusuruldu
} else {
digitalWrite(ledPin[i], LOW); // normale döndüğünde söndürüldü
}
}
lcd.clear(); // lcd temizlendi
lcd.print("Water level");
lcd.setCursor(0,1);
switch(level) { // su seviyesi ekrana yazdırılıyor switch her seviye için kontrol ediyor.
case 1:
lcd.print("HIGH");
digitalWrite(motor, HIGH);
break;
case 2:
lcd.print("AVERAGE");
digitalWrite(motor, LOW);
break;
case 3:
lcd.print("LOW");
digitalWrite(motor, LOW);
break;
default:
lcd.print("NO WATER");
digitalWrite(motor, LOW);
break;
}
delay(50);
}


Gelilim sonuç cümlemize :)
Bu devre tabiiki profesyonel amaçlarla kullanılamaz.Gidip büyük bir su kuyusu otomasyonu yapmanız devrenin bu hali ile imkansız ancak aklıma ilk gelen :) otomatik bir kahve makinesinde su haznesi otomasyonu bu şekilde gayet rahatlıkla yapılabilir.

Bir sonraki yazımda görüşmek dileği ile :)

Caner ÇAKAR

ELEKTRO BLOGGER A HOŞGELDINIZ

ARAMA YAP

EN COK OKUNANLAR

- Copyright © ELEKTRO-BLOGGER Blogger