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
- Arduino UNO
- 5110 LCD Ekran
- Titreşim Motoru
- Breadborad
- HC-06 Bluetooth Modülü
#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.
}
hande –
Bu proje kurulu olarak mı geliyor yoksa sadece malzemeler mi geliyor
Proje Hocam –
Sipariş verirken sipariş notu bölümüne kurulu olarak istiyorum yazarsanız eğer proje kurulu olarak gönderiliyor.Aksi halde malzemeler gönderilcektir
akif (doğrulanmış kullanıcı) –
titresim was not declared in this scope
hatası alıyorum, çözümü nasıl olmalıdır.
Proje Hocam –
kodları Arduino IDE 1.05 sürümünde denermisiniz
VENHAR –
Merhaba bu projede kullanılan ve telefona indirilen uygulama hangisi? Ayrıca devre içkn başka fritzing resmi var mı? Buradaki devre resmi hiç açıklayıcı değil yardımcı olursanız sevinirim