Arduino Eğitim Kiti – Tüm Yıl İçin Arduino Müfredatı: Ders 28 Falcı Uygulaması, Saat ve Mesafenin LCD Ekranda Gösterilmesi için isterseniz sunu şeklinde alt taraftaki kutucuğu büyüterek takip edebilir, isterseniz de tüm sunu sayfalarının makale haline dönüştürülmüş versiyonu takip edebilirsiniz. İçerikler büyük oranda aynıdır. Sınıf ortamında kolaylık olması açısından sunu şeklinde de sunulmuştur.

Ders İçeriği:

Falcı Uygulaması, Saat ve Mesafenin LCD Ekranda Gösterilmesi

 

Ders Kazanımları:

  1. Falcı uygulaması programını yardım almadan başarılı bir şekilde tasarlar.
  2. Saat ve Mesafe Ölçümü programını yardım almadan başarılı bir şekilde tasarlar.

Oluşabilecek Hatalar:

Aşağıdaki programları çalıştırırken birtakım hatalarla karşılaşabilirsiniz. Bu hataların kodların yazımında meydana gelen hatalar dışında başka sebeplerle ortaya çıkması muhtemeldir. Bu hatalardan sık karşılaşılanlara aşağıda değinilmiştir.

Kart Seçilmesinden Kaynaklı Hata:

Arduino kurulumu gerçekleştirildikten sonra araçlar menüsünden doğru kartın seçilmesi gerekmektedir. Kart seçilmediğinde “Karta yüklenirken bir sorun oluştu.” benzeri bir hata alabilirsiniz.

USB Portun Seçilmesiyle İlgili Hatalar:

Arduino kurulumu gerçekleştirildikten sonra araçlar menüsünden doğru portun seçilmesi gerekmektedir. Bu port Arduino Uno’nun bilgisayara bağlandığı usb porttur. Farklı şekilde bilgisayarınızda usb driver yüklenmemiş olabilir. Bu gibi hatalarda “Port bulunamadı.” gibi hatalar almanız muhtemeldir.


Eğim Sensörü:

  • Bazı otomasyon sistemlerinde ya da robot projelerinde eğimin algılanması gerekebilir.
  • Bu durumlarda eğimi algılayabilmek için içlerinde civa damlacığı ya da metal bilye bulunan eğim sensörleri kullanılır.
  • Bu sensörler bulundukları konuma göre içlerindeki civa damlacığının ya da metal bilyenin sensör içerisindeki anahtarları açması ya da kapamasıyla çalışır.
  • Çalışma şekli şemada basitçe gösterilmiştir.


Uyarı:

Aşağıdaki programı tasarlayıp çalıştırdığınızda LCD ekranda sadece parlaklık varsa ve bilgi alamıyorsanız bunun sebebi LCD ekranın kontrast ayarının düşük olması olabilir.

Bu ayar LCD ekranın arka kısmında (LCD ekranı yıldız tornavida ile sökmeniz gerekecek) I2C modülünün üzerindeki potansiyometre ile yapılabilir. Tornavida yardımı ile potansiyometreyi çevirerek kontrast düzeyini ayarlayabilirsiniz.

Ayrıca kodları yazarken I2C modülün adresini kendi modülünüzün adresine göre düzeltmeyi unutmayın!

(I2C modülünüzün adresini bilmiyorsanız 15. derste tarif edildiği şekilde bulabilirsiniz.)


Uygulama 1: Falcı

 

Kullanılacak Malzemeler:

Bağlantı Şeması:

Bağlantılar şekildeki gibi yapılır.

  1. Arduino üzerindeki 5V pini breadboard üzerinde “+” hatta, GND pini ise breadboard üzerinde “-” hatta bağlanır.
  2. Titreşim Sensörü breadboard üzerine şekildeki gibi takılır.
  3. Bir bacağına şekildeki gibi 220R direnç bağlanır.
  4. Direncin boşta kalan bacağı 6 numaralı dijital pine bağlanır.
  5. Titreşim Sensörü’nün diğer bacağı ise “-” hatta bağlanır.
  6. LCD ekranın bağlantıları aşağıdan yukarı doğru sırasıyla, “-” hatta, “+” hatta, A4 numaralı analog pine, A5 numaralı analog pine bağlanır.

Kodlar:

Uygulamanın  “.ino” dosyasını (kod dosyasını) ve kütüphanelerini buradan indirebilirsiniz.

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2);
const int switchPin=6;//eğim anahtarına takılı pinler
int switchState=0;
int prevSwitchState=0;
int reply;
void setup() {
lcd.begin();
pinMode(switchPin,INPUT);
lcd.print("Bir Soru Sor");
}
void loop() {
switchState=digitalRead(switchPin);//eğim anahtarı pinini oku
if(switchState!=prevSwitchState)
{
if(switchState==LOW)//devre bozulursa cevap ver
{reply=random(8);//cevap aşağıdaki 8 rastgele durrumun bir tanesidir
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Cevap: ");//bunu ekrana yazdır
lcd.setCursor(0,1);
switch(reply){//yanıt aşağıdakilerden biri olacaktır.
case 0:
lcd.print("Evet");
delay(3000);
lcd.clear();
lcd.print("Bir Soru Sor");
break;
case 1:
lcd.print("Muhtemelen");
delay(3000);
lcd.clear();
lcd.print("Bir Soru Sor");
break;
case 2:
lcd.print("Kesinlikle");
delay(3000);
lcd.clear();
lcd.print("Bir Soru Sor");
break;
case 3:
lcd.print("Aptal Olma");
delay(3000);
lcd.clear();
lcd.print("Bir Soru Sor");
break;
case 4:
lcd.print("Tabiki");
delay(3000);
lcd.clear();
lcd.print("Bir Soru Sor");
break;
case 5:
lcd.print("Tekrar Sor");
delay(3000);
lcd.clear();
lcd.print("Bir Soru Sor");
break;
case 6:
lcd.print("Kararsiz");
delay(3000);
lcd.clear();
lcd.print("Bir Soru Sor");
break;
case 7:
lcd.print("Hayir");
delay(3000);
lcd.clear();
lcd.print("Bir Soru Sor");
break;
}
}
}
prevSwitchState=switchState;//anahtarı 0la
}

  • Yukarıdaki bağlantı yapıldığında ve kodlar Arduino Uno’ya yüklendiğinde çalışma tamamlanmış olacaktır.
  • Bu uygulamada bir soru belirleyeceksiniz.
  • LCD Ekranda “Bir soru sor.” yazısını görünce tilt sensörü sallayabilirsiniz.
  • Ve LCD ekranda cevabınızı görebilirsiniz.

Uygulama 2: Saat ve Mesafe Ölçümü

 

Kullanılacak Malzemeler:

Bağlantı Şeması:

Bağlantılar şekildeki gibi yapılır.

  1. Arduino üzerindeki 5V pini breadboard üzerinde “+” hatta, GND pini ise yine breadboard üzerinde “-” hatta bağlanır.
  2. Arduino Uno’nun A4 ve A5 pinlerine birden fazla kez ihtiyaç duyacağımız için çoğaltmamız gerekiyor. Bu sebeple A4 pininden breadboard üzerinde boş herhangi bir yere bir hat bağlıyoruz. Aynı şekilde yanındaki boş sütuna da A5’den bir hat bağlanıyoruz. Şekilde bu bağlantı gösterilmiştir.
  3. LCD ekranın bağlantıları aşağıdan yukarı doğru sırasıyla, “-” hatta, “+” hatta, A4 pininin bağlı olduğu breadboard hattına, A5 pininin bağlı olduğu breadboard hattına bağlanır.
  4. Rtc modülün VCC hatta “+” hatta, GND hattı “-” hattı, SDA A4 pininin bağlı olduğu breadboard hattına, SCL A5 pininin bağlı olduğu breadboard hattına bağlanır.
  5. Mesafe sensörü ise VCC pini “+” hatta, GND pini “-” hatta, Trig pini 8 nolu dijital pine, Echo pini 9 nolu dijital pine bağlanır.

Kodlar:

Uygulamanın  “.ino” dosyasını (kod dosyasını) ve kütüphanelerini buradan indirebilirsiniz.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "RTClib.h"
LiquidCrystal_I2C lcd(0x3f, 16, 2);
RTC_Millis rtc;
int Trig_Pin = 8;
int Echo_Pin = 9;
long sure, mesafe;
unsigned long ilksayac=0;
unsigned long sonsayac=0;
int fark=25;
int s1=0,s2=0,s3=0,s4=0;
void setup () {
Serial.begin(57600);
lcd.begin();
lcd.backlight();
rtc.begin(DateTime(__DATE__, __TIME__));
pinMode(Trig_Pin, OUTPUT);
pinMode(Echo_Pin, INPUT);
}
void saat()
{ DateTime now = rtc.now();
lcd.clear();
lcd.setCursor(0,0);
lcd.print(now.day(), DEC);
lcd.print('/');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.year(), DEC);
lcd.setCursor(0,1);
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second(), DEC);
delay(1000);}
void ultrasonik()
{
digitalWrite(Trig_Pin, LOW);
delayMicroseconds(2);
digitalWrite(Trig_Pin, HIGH);
delayMicroseconds(10);
digitalWrite(Trig_Pin, LOW);
sure = pulseIn(Echo_Pin, HIGH);
mesafe = (sure/2) / 29.2;
lcd.clear();
lcd.print("Olculen Mesafe : ");
lcd.setCursor(0,1);
lcd.print(mesafe);
lcd.print(" cm");
delay(1000);
}
void loop () {
ilksayac=millis();
if(ilksayac-sonsayac>=fark)
{
sonsayac=ilksayac;
s1++; }
if(s1<=4 && s1>=0)
{ultrasonik();}
if(s1<=10 && s1>=5)
{ saat();}
if(s1>10)
{s1=0;}
}

  • Yukarıdaki bağlantı yapıldığında ve kodlar Arduino Uno’ya yüklendiğinde çalışma tamamlanmış olacaktır.
  • Bu uygulamada LCD ekrandan güncel saat bilgisini ve mesafe sensörünün ölçtüğü uzaklığı görebilirsiniz.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz