Arduino
OKUDUĞUNUZ KONU
Sesleri LCD Ekrana Yazdırma
8

Sesleri LCD Ekrana Yazdırma

Yazar : Murat Duran26 Kasım 2017

Arduino ile sesleri lcd ekrana yazdırma projesini gerçekleştireceğiz , proje işitme engelliler için kullanılabilecek özelliğe sahiptir.Proje henüz demo özelliğindedir.Ama projeyi saat boyutlarına getirirsek birçok işitme engelli için kullanışlı olabilir.Projenin çalışma prensibi şu şekildedir.Arduino üzerine bağlı bir lcd ekran , titreşim motoru ve bluetooth modülü bulunmaktadır.

Telefon ile bluetooth modülüne android program ile bağlanıp konuşmaları bluetooth modülüne iletir bu konuşmalarda arduino tarafından yazıya çevrilerek ekrana basılır.

Projede Kullanılan Malzemeler

Cep Telefonu uygulamasını indir

5110 LCD kütüphanesi indir

Projenin Kodları


// Proje Hocam - Sesleri LCD 'ye Yazdırma

#include <SoftwareSerial.h>

SoftwareSerial mySerial(6, 7); // RX, TX
#include <LCD5110_Basic.h>
// LCD pinleri
// SCK - Pin 8
// MOSI - Pin 9
// DC - Pin 10
// RST - Pin 11
// CS - Pin 12
LCD5110 myGLCD(8,9,10,11,12); // Lcd yi tanımlama ve SPI pinlerini atama
extern uint8_t SmallFont[]; // Yazı fontu
String ses; // gelen karakterlerin satır değişkenine atama
int titresim_motor = 5; // titresim motor pini

int gelendegertoplam = 0;
void setup() {
Serial.begin(9600);
mySerial.begin(9600); // serial iletişm hızı
myGLCD.InitLCD(); // lcd ekrana bağlatma fonksiyonu

pinMode(titresim_motor,OUTPUT); // titreşim motorunu
digitalWrite(titresim_motor,LOW); // motoru durma pozisyonuna al
myGLCD.setFont(SmallFont);
myGLCD.print(ses,LEFT,10);
}

void loop() {

while (mySerial.available()){ //Okumak için kullanılabilir bayt olup olmadığını kontrol et
delay(10); //10 milisaniye bekle
char c = mySerial.read(); //Seri okuma

// türkçe karakterler lcd kütüphanesinde olmadığı için aşağıdaki gibi utf8 deki integer değerleri alınmıştır.
int a = (int) c; // char tipi karakteri integer karaktere dönüştürme

if(a<0) // a değeri negatif ise
{

if ( a == -60) { // a değeri -60 ise
c = mySerial.read(); // sonraki gelen veriyi oku
a = (int) c; // char tipi karakteri integer karaktere dönüştürme
if( a == -97 ) { // a değeri -97 ise
ses += 'g'; // ses karakterine g harfini ekle.
}
else { ses += 'i'; // a değeri -97 değil ise ses karakterine i harfini ekle
}
a = 0; // a değerini sıfırla
}

gelendegertoplam +=a; // gelendegertoplam değerine a değerini ekle

if (gelendegertoplam < 0 ) // gelendegertoplam değeri negatif ise { if ( gelendegertoplam == -157) { ses += "S";gelendegertoplam =0; } // Ş harfini S harfine dönüştürme işlemi if ( gelendegertoplam == -156) { ses += "s";gelendegertoplam =0; } // ş harfini s harfine dönüştürme işlemi if ( gelendegertoplam == -150) { ses += "c";gelendegertoplam =0; } // ç harfini c harfine dönüştürme işlemi if ( gelendegertoplam == -182) { ses += "C";gelendegertoplam =0; } // Ç harfini C harfine dönüştürme işlemi if ( gelendegertoplam == -135) { ses += "o"; gelendegertoplam =0;} // ö harfini o harfine dönüştürme işlemi if ( gelendegertoplam == -167) { ses += "O"; gelendegertoplam =0;} // Ö harfini O harfine dönüştürme işlemi if ( gelendegertoplam == -129) { ses += "u"; gelendegertoplam =0;} // u harfini u harfine dönüştürme işlemi if ( gelendegertoplam == -161) { ses += "U";gelendegertoplam =0;} // U harfini U harfine dönüştürme işlemi } } else { if (c == '#') {break;} // # tespit edildiğinde döngüden çık ses += c; // gelen karakterleri ses tanımında topla } } if (ses.length()>0) // gelen veri var ise
{

Serial.println(ses);
myGLCD.clrScr(); // Ekranı temizle
delay(1000); // 1 saniye bekle
myGLCD.print(ses.substring(1,12),LEFT,0); // ses karakterinin ilk 12 harfini Sola hizalı ve en üst pikselden yazıyı konumlandır.
myGLCD.print(ses.substring(12,24),LEFT,10); // ses karakteri 12 harften de büyükse 12. harften sonrasını Sola hizalı ve 10 piksel üstten aşağı doğru yazıyı konumlandır.
myGLCD.print(ses.substring(24,36),LEFT,20); // ses karakteri 24 harften de büyükse 24. harften sonrasını Sola hizalı ve 10 piksel üstten aşağı doğru yazıyı konumlandır.
myGLCD.print(ses.substring(36,48),LEFT,30); // ses karakteri 36 harften de büyükse 36. harften sonrasını Sola hizalı ve 10 piksel üstten aşağı doğru yazıyı konumlandır.
delay(10); // 10 milisaniye bekle
titresim(); // titreşim motoru görev tanımı
ses =""; // ses karakterine yapılan atamayı temizle
}

}
void titresim() // titreşim motor görev tanımı
{
digitalWrite(titresim_motor,HIGH); // titreşim motorunu aktif et
delay(1000); // 1 saniye bekle.
digitalWrite(titresim_motor,LOW); // titreşim motorunu durdur.
}

&nbsp;

&nbsp;

SİZCE NASIL OLMUŞ?
Beğendim
50%
İlginç
6%
Eh İşte
11%
Anlamadım
28%
Kötü
0%
Berbat
6%
YAZAR HAKKINDA
Murat Duran
Murat Duran
Açık kaynak donanım ve yazılım geliştiricisiyim , mekanik ve robotik sistemler üzerinde çalışmalar yapmaktayım.Ayrıca bir start-up firması olan Proje Hocam 'ın kurucuyum.
8 YORUMLAR

YORUM YAP