Android Emulator “Get Google Play Services” Çözümü

Selamlar,

Android için harita uygulaması geliştirirken eskiden kullandığımızın dışında google maps için google play service kütüphanesinin olduğunu görmüştüm. daha sonra bu servisi kullanırken emulatorde hatiranın görünmediğinin ve “Get google play services” şeklinde bir yazının çıktığını gördüm.  Bu uygulamanın emulatorde desteği olmadığını ve çalışmadığının olduğunun göstergesiydi.

get-google-play-services

 

 

 

 

 

Sonra araştırmalarım sonucu bununla ilgili Türkçe kaynak olmadığını görünce bende paylaşmak istedim.

Problemin çözümü için yapmanız gerekenler;

  • Öncelikle bize lazım olan 2 tane google maps apk’sını buradan indirelim.
  • Eclipse>Window>Android Virtual Device Manager’ı açalım. New diyelim. Aşağıdaki gibi ayarları yapalım.

  • Ayarları yaptıktan sonra Android Virtual Device Manager üzerinde start edelim. Bundan sonra yapacağımız işlemde emulatörün açık olması gerekiyor. Çünkü apk ları emultördeki android işletim sistemine kuracağız.
  • Şimdi bizim android-sdk nın olduğu klasöre gidelim. Orandan platform-tools klasörüne girelim. bendeki yolu D:\Android\android-sdk\platform-tools şeklinde.
  • Bu klasörün içerisine indirdiğiniz rar dosyasındaki iki tane apk yı koyuyoruz.
  • Bundan sonraki işlemleri komut penceresi (cmd) üzerinden klasör içerisindeki adb.exe yi kullanarak yapacağız.
  • Şimdi klasör içerisindeyken shift+mouse sağ tık yapalım ve Komut penceresini burada aç diyelim.

cmd

 

  • Bunu yaparak cmd içerisinde buraya elle tek tek yazarak gitmek yerine bu dizinden işlem yapabilecek komut satırına ulaşmış oluyoruz. Güzel ve kullanışlıdır tavsiye ederim 😉
  • ilk önce burada   “adb install com.google.android.gms-5.0.89-1307510-034-APK4Fun.com.apk” komutunu veriyoruz. ve kurulumu success diyene kadar bekliyoruz.
  • Sonra “adb install com.android.vending-4.3.11.apk” komutunu veriyoruz. ve kurulumu success diyene kadar bekliyoruz.
  • apk kurulum
  • Şimdi emulatörü kapatıp bir daha açalım ve uygulamamızı çalıştıralım.  uygulamada haritanın çalıştığını göreceksiniz.

map_emulator

 

Projeye devam edebiliriz artık  😉

 

Arduino ile Bluetooth Kontrol (Akıllı Ev Uygulaması)

Merhaba Arkadaşlar,

 

Sizlerle Arduino ile Bluetooth bağlantısı ile kontrol etmeyi anlatacağım. Elimde bir Arduino Nano V3.0 ve bir de HC-06 Model Bluetooth Module var.  Arduino ile Bluetooth haberleşmesini sağlamak Arduino tarafındaki kodlamada ve işlemede zor birşey olmadığını gördüm. Uğraş verici kısım ise başka bir Android gibi bir cihazdan haberleşmesini sağlamak.

HC-06 Bluetooth modülümüzde bilmemiz gereken 4 bacak bağlantısı var. Bunlar; VCC, GND,RX ve TX dir. VCC ve GND artı-eksi enerji girişleri zaten. 3.3 V'luk bir besleme yapıyoruz. Gelelim diğer iki bacağa. TX bacağı Arduino tarafından Transmit edecek değeri göndermek için kullanılır. Arduinodan başka bir cihaza komut veya mesaj bu yoldan iletilir. İletilen değer text bir değerdir. Karşı tarafta bunu text olarak okur ve işlem yapar. RX bacağı ise başka bir bluetooth lu cihazdan gelen mesaj ya da komutu okumak için kullanılır. Arduino buradan okuduğu mesaja göre işlemlerini gerçekleştirir.

Şimdi bu bağlantıları sağlamak için gerekli olan kütüphanemize bakalım. Burada bir seri haberleşme olduğundan dolayı <SoftwareSerial.h>  kütüphanesini projemizde kullanacağız. Bu bize seri haberleşmeyi sağlayacaktır.

Okuma ve yazma pinlerini belirlemek için "  SoftwareSerial myBluetooth(10, 11); "  komutunu kullanılır. Burada Arduino nun 10 ve 11 bacağını kullanacağımızı belirledik. 10. bacaktan veri okuma ve 11. bacaktan veri gönderme işlemleri yapılacaktır.

Sürekli okuma işlemini takip etmesi için setup komut bloğunda  myBluetooth.begin(9600); yazarak 10 ve 11. bacaklardan seri haberleşmeyi başlatıyoruz.  

Arduino tarafından bluetooth bağlantısının olduğunu kontrol etmek için bir şart yazıyoruz.    myBluetooth.available() komutu ile bir bluetooth bağlantısının olup olmadığı kontrol edilir. Burada bağlantı varsa bu komut true değeri alır.

Ve geldik son 2 komuta. Bluetooth bağlantısı oluştuktan sonra karşıdan gelen değeri okumak için myBluetooth.read();  komutu kullanılır. Bu komut RX değerini okur. Ben projede bunu deger diye bir değişkene attım ve şart cümlecikleriyle kontrol ettim. okunan deger = 0 ise kapıyı kapat komutu, deger  = 1 kapıyı kapat komutu ve deger = 2 ise arduino nun ölçtüğü sıcaklık değerini gönder komutunu verdim. Bunları dahada arttırark işlemlerinizi çoğalta bilirsiniz. Android uygulamada yer alan text alanıyla değer gönder diyerek kendi uygulamanızı zenginleştirebilirsiniz.

Buradaki son komutumuzda sıcaklık değeri gönderirken kulladığımız komut olan myBluetooth.print(sicaklik); komutudur. Print ile TX den bluetooh üzerinden text değerin gönderirmesi sağlanır. Bunu da yazdığımız diğer taraftaki uygulama text olarak okur.

Arduino tarafındaki komut tamamı bu kadar. Ben uygulamada mini bir akıllı ev uygulaması yapmayı plandağım. Bir android uygulama ile bağlantı sağladım ve oradan 0, 1 ve 2 değerlerini Arduino ya göndererek işlemler yaptım. Arduino devresinde birde kapı zili uygulamasını entegre ettim. Kapı ziline basıldığında Arduino dan Android uygulamaya "Kapi Zili Caldi" şeklinde bir mesaj geliyor ve Kapıyı aç komutu ile Android den Arduino ya kapıyı aç (1) komutunu gönderiyorum. Ayrıca devreye bir tane LM 35 Sıcaklık Sensörü entegre ettim ve Android uygulamadan sıcaklığı goster isteği yaptığımda Arduino o anki sıcaklık değerini uygulamanıza gönderiyor.

Aşağıda devre şemasını, Arduino kodlarını ve Android'in Apk sını paylaşıyorum. Size Kolay Gelsin 🙂

 

ANDROİD UYGULAMA

Bluetooth_Control_Apk

Uygulamayı telefonunuza indirip kurduktan sonra bluetooth bağlantıyı sağlamak icin Devrenin enerjili olması ve Telefonun Bluetooth nun açık olması gerekiyor. Telefondan bağlantıyı açtıktan sonra açık olan cihazlar arasında HC-06 şeklinde bir cihaz görünecektir. Bu cihaz ile bağlantı kurunuz. Bağlantı işleminde sizden şifre isteyecektir. Bu şifre HC-06 için default olarak 1234 yada 0000 dır. Bende 1234 şifresini kabul etmişti. Daha sonra uygulamayı açıp "Bağlantıyı Aç" diyoruz. Bağlantının gerçekleştiğini Bluetooth Module üzerinde yanıp sönen ledin sürekli yanmaya başlamasından anlayabilirsiniz. Bağlantı oluştuktan sonra ister butonlar vasıtasıyla isterseni elle text girerer ve "Veriyi Gönder" diyerek işlem yapabilirsiniz.

 

Bluetooth_control_Apk

 

 ÇALIŞMA VİDEOSU

Video linki

 

 DETAYLI DOKUMAN

Makale

 

 DEVRE ŞEMASI

Bluetooth_Kontrollu_Akilli_ev

 ARDUINO KODLARI

#include <SoftwareSerial.h> // gerekli olan kütüphane.
#include <Servo.h> // servomotor için gerekli olan kütüphane

 Servo myservomotor; // sınıfın bir örneğini aldık
 SoftwareSerial myBluetooth(10, 11); // Bluetooth modülün RX, TX ayakları 10 ve 11 e bağlanacak.
 int ledPinOpen=5; // 5. pin led çıkış olacak.
 int ledPinClose=6; // 6. pin led çıkış olacak.
 int ledPinBell=4; // 6. pin led çıkış olacak.
 int buzzerPin=7; // 7. pin buzzer çıkış olacak.
 int buttonPin=2; // 2. pin button giriş olacak.
 char deger; // Android uygulamadan gelecek olan değer
 int buttonState = 0;  
 float sicaklik;
 float gerilim;
 int sicaklikPin = 0; // analog giriş

void setup() {
Serial.begin(9600);
myservomotor.attach(8);             // arduinonun 8. pinini servo çıkış olacak.
myservomotor.write(0);               // motoru çev
myBluetooth.begin(9600);          // 10 ve 11 den okuma başlasın.
pinMode(buzzerPin,OUTPUT);   // çıkış olacak
pinMode(buttonPin,INPUT);      // giriş olacak
digitalWrite(ledPinClose,HIGH);
}

void loop() {
gerilim = analogRead(sicaklikPin); // analog degeri oku
gerilim = (gerilim/1023)*5000;        // analog deger mv ye çevirir.
sicaklik = gerilim/10.0;                         // celciusa çevirip sicakliğa atadık.

buttonState = digitalRead(buttonPin);  // butondan gelen degeri oku
   if (myBluetooth.available())                         // bluetooth bağlantısı varsa
   {
deger=myBluetooth.read();    // bluetooth'tan gelen degeri oku

if(deger == '1'){ // gelen değer 1 ise
myBluetooth.println("Kapi Acildi");         // bluetooth üzerinden değer döndür.  bu dönen değeri android uygulamasında görülür
for(int derece = 0; derece < 90; derece++){
myservomotor.write(derece);                // motoru çevir
        }
   }
if (deger == '0'){
digitalWrite(ledPinOpen,0); // ledi sondur
digitalWrite(ledPinClose,1); // ledi yak
myBluetooth.println("Kapi Kapandi");
for(int derece = 90; derece > 1; derece–){ // 90 derecelik açı yap
myservomotor.write(derece); // motoru çevir
      }
   }
 if(deger == '2')
  { 
myBluetooth.print("Ortam sicakligi ");
myBluetooth.print(sicaklik);
myBluetooth.print(" derecedir.");
   }
}
if (buttonState == HIGH) {
myBluetooth.println("Kapi Zili Caldi");
digitalWrite(buzzerPin, HIGH);
delay(1000);
}
else {
digitalWrite(buzzerPin, LOW);
digitalWrite(ledPinBell, LOW);
}
delay(100);   // bir sonraki veriyi hazırlamak için

}

Arduino ile Kapı Zili Uygulaması

Herkese Merhaba,

Sizlere Arduino ile Kapı Zili uygulamasını anlatacağım. Burada Kapı Zili uygulamasından çok benim için önem arzeden kısım Button Kontrol kısmıdır. Bir butonun değerini Arduino dan nasıl okuruz onu vurgulayacağım.

Arduino dan bir çıkış alacağımız zaman hep pinMode(PinNumber, OUTPUT); komutunu kullanarak belirttiğimiz pini çıkış belirlemiştik ve digitalWrite(PinNumber, HIGH);  yazarak pinden çıkış almıştık. Şimdi ise Arduino ya bir giriş olması için öncelikle  pinMode(PinNumber, INPUT); komutu ile pinden bir değer okunacağı yani giriş olacağı belirtilir, daha sonra digitalRead(PinNumber); komutu ile loop butondan gelecek değer takip edilir. Gelen değerin kontrolü HIGH ya da LOW olma duruma göre işlem yapılır. Aşağıda devre şeması ve kodları ekledim. Her zamanki gibi kodların yanında açıklamalarınıda belirrtim. Anlaşılır olmasına dikkat ettim. Hadi iyi çalışmalar sizlere 🙂

 

Kullanılan Malzemeler :

1- Arduino Uno R3

2- Push Button

3- Buzzer

5- Led

6- Direnç

Devre Şeması :   

arduino_kapi_zili

 

Devre bağlantılarını yaparken Buzzer bağlantısına dikkat edelim. Buzzer’ında led gibi + ve – bacakları vardır. Uzun bacak + dır. Bazen kenarında + olarakta yazar. bağladığınızda çalışmazsa ters bağlamayı denersiniz 🙂

 

Arduino Kodları:

const int buttonPin = 2;   // 2.pin Button olacak
const int buzzerPin = 3;   // 3. pin buzzer olacak
const int ledPin = 4;          // 4. pin led olacak

int buttonState = 0;          // buton durumu

void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);           // 4.pin çıkış olacak
pinMode(buzzerPin, OUTPUT);   // 3.pin çıkış olacak
pinMode(buttonPin, INPUT);      // 2.pin giriş olacak

void loop(){

buttonState = digitalRead(buttonPin);    // 2.pinden gelen değeri oku

if (buttonState == HIGH) {                        // gelen deger 1 ya da high ise yani butona basılmışsa
Serial.print(“zil caldi”);
digitalWrite(ledPin, HIGH);           // ledi yak
digitalWrite(buzzerPin, HIGH);     // zili çal
delay(1000);                                         // 1 sn boyunca zil çalsın
   }
   else {
digitalWrite(buzzerPin, LOW);    // zil sussun
digitalWrite(ledPin, LOW);           // ledi söndür
 }
}

Arduino ile Kızılötesi Algılayıcı (Infrared Receiver) ve Uzaktan Kumanda Kontrolü

Herkese Merhaba,

Sizlere Arduino 'ya bir infrared alıcı bağlamayı, kumanda ile sinyal göndermeyi ve aldığımız sinyali Arduino'da yorumlamayı anlatacağım. Burada alıcı olarak VS1838B Infrared Receiver Module kullandım. Bu kızılötesi algılayıcısını alırken buna uygun kumandayı da yanında bulabilirsiniz. Bende kumandasıyla birlikte mevcuttu. ben uygulamayı anlatmak için kapı açma kapama gibi bir konu oluşturdum. kumandadan 1 tuşuna basınca kapı açılsın (servo motor 90 derecelik açı yapsın ve led yansın), 2 tuşuna basıncada kapansın (servo motor 0 dereceye dönsün ve led sönsün).

 

Aşağıda bulunan resimde kullandığımız alıcıların bacaklarını gösteren bir datasheet i bulunmaktadır. alıcının sol bacağından kumandadan gönderilen 2 bitlik sinyaller değerini okuyacağız.

 

$_35

 

 

 

 

 

 

Kullanılan Malzemeler :

1- Arduino Uno R3

2- Servo Motor

3- Kızılötesi Alıcı (IR Reciever)

4- Kızılötesi Kumanda (Remote controller)

5- Led

6- Direnç

Devre Şeması :                        

Arduino_Infrared_Kumanda_Kontrolu

Kod Paylaşımına geçmeden önce bir bilgi daha vermem gerekiyor. Kullandığımız Arduino IDE programında Kızıl Ötesi algılayıcının kütüphanesi(IRRemote.h) bulunamamaktadır. Bunun için bu kütüphaneyi Arduino IDE mize eklememiz gerekiyor. Bu derste kütüphane eklemeyi de görmüş oluyoruz. Öncelikle  buradan kütüphane için gerekli olan dosyaları indiriyoruz. Dosyaları zip ten çıkardıktan sonra Arduino IDE'nin olduğu klasördeki libraries klasörünün içerisine kopyalıyoruz.  İşte eklemiş olduk 🙂 Arduino IDE Programını açtığımızda Sketch > Import Library > bölümüne baktığınızda kütüphanenin eklenmiş olduğunu görürsünüz. Şimdi Kodlara geçebiliriz.

Arduino Kodları:

#include <IRremote.h>  // kızıl ötesi alıcı için gerekli olan kütüphane
#include <Servo.h>    // kapıyı açma kapama için kullandığımız servo motoru kullanabilmek için gerekli olan kütüphane

Servo myservomotor;   // sınıfın bir örneğini aldık
int INFRARED_PIN = 2;   // Arduino nun 2 nolu pini alıcının girişi olarak belirledik
int LED_PIN = 10;   //Arduino nun 10 nolu pini led için çıkış belirledik
IRrecv irrecv(INFRARED_PIN);  // belirlediğimiz 2 nolu pini kızılötesi alıcıdan değerleri oku dedik.

decode_results results;             // ** results değerinde kumandadan bir tuşa bastığımızda alıcının algıladığı değeri okuyacağız. **
void setup()
{
Serial.begin(9600);    // saniyede 9600 defa okuma işlemi yap.
irrecv.enableIRIn();  // alıcıdan değer okumaya başla.
myservomotor.attach(8);   // Arduinonun 8. pinini servo motor için çıkış yaptık.
myservomotor.write(0);    // başlangıçta açısını 0(sıfır) a çektik. (Kapı Kapalı durumu)
}
void loop() {
if (irrecv.decode(&results)) {  // Eğer bir değer geldiyse
Serial.println(results.value);  // Değeri serial monitöre yansıt. Buradan basılan her tuşun ürettiği değeri görebiliriz. Böylece diğer değerleride if ya da  switch case ye bağlayıp  çeşitli komutla üretebilirsiniz.
irrecv.resume();  // Sonraki değeri alamaya devam et.
  }

// Kumandanın 1 nolu tuşu 167241175 değerinde bir değer ürettiği için gelen değer bu değere eşit mi diyoruz.

// Kumanda direk alıcıyı gördüğü yerde bu değeri üretir. alıcı ile kumandanın vericisi birbiriniz görmesede bir değer üretir ama bunlar sürekli değişir.

// Direk gördüğünde ise tek bir değer üretir. Biz bu değeri baz alıyoruz. Farklı değerler üretmesiniz sebebibe gelen ışık dalgalarında bozulmalar olmasıdır.

 if(16724175==results.value)      
{
Serial.println("1");    // 1 tuşuna basıldıysa ekrana 1 yazdır.
digitalWrite ( LED_PIN , HIGH );    // led i yak
myservomotor.write(90);   // Servo motoru 90 derecelik açı yap. (kapıyı aç)

results.value=0;   // Kumandaya basıldığında algılanan değer results.value de kalır. sürekli aynı değer okunmaya devam etmesin diye o(sıfıra) eşitliyoruz. bunu yapmazsak serial monitörde hep 16724175 değerini bastığını görürsünüz.

 }
 else if(16718055==results.value)   //eğer 2 tuşuna basıldıysa
{
Serial.println("2");    // 2 tuşuna basıldıysa ekrana 2 yazdır.
digitalWrite ( LED_PIN , LOW );    // led i söndür
myservomotor.write(0);     // Servo motoru 0. derece açıya çek. (kapıyı kapat)
results.value=0;
   }
}

 

 

Arduino ile Servo Motor Kontrolü

Herkese Merhaba,

Sizlere Arduino için kullanılan servo.h kütüphanesi hakkında bilgi vereceğim ve servo motorun arduino ile kontrolünü paylaşacağım.

Öncelikle servo motoru tanımlamak gerekirse; Servo motorlar kullanıcının komutlarını yerine getiren motorlardır. Komutlar, pozisyon ve hız komutları veya hız ve pozisyonun birleşimi olabilir. 3 girişi bulunur. Bunlar güç, toprak ve sinyal girişleridir.

Arduino’nun servo.h kütüphanesini kullanarak servo motorları kontrol edebiliriz. Bu kütüphaneden kullandığımız bazı fonksiyonlara değineceğim.

servomotor.attach(pin) fonksiyonunda servo motorun hangi pinden sinyal alacağını belirleriz.

servomotor.write(pos); fonksiyonunda servo motorun açısını ayarlamak için kullanılır.

Bağlantı Şeması : 

 

Arduino_Servo_Conrol

 

Arduino Kodları:

#include <Servo.h>

Servo myservomotor; // sınıfın bir örneğini aldık

void setup()
{
myservomotor.attach(8);  // arduinonun 8. pinini çıkış yaptık.
myservomotor.write(0);  // motora ilk 0.derecesinden başlaması komutunu verdik
}

void loop()
{
for(int derece = 0; derece < 180; derece++){   // 180 derecelik açı yap
myservomotor.write(derece);
delay(10);   // her 1 derece açıyı 10 milisaniyede yapacak
 }

 for(int derece = 180; derece > 1; derece–){  // tam tersi yönünde açı yap
myservomotor.write(derece);
delay(10);
 }
}

Aduino ile LCD Ekrana Yazı Yazdırma

Herkese Merhaba,

Bugün size Arduino ile LCD ekrana yazı yazdırma işlemini paylaşacağım. Kodlara ve bağlantı şemasına geçmeden önce kullandığım LCD ekranımızı tanıyalım. Daha sonrada Arduino nun LCD için kullandığı sınıfa değinelim.

lcd

Liquid Crystal Display(LCD)  olarak geçen 16 sütün 2 satırdan oluşan ve  mavi arkaplan ışıklı bir yazı ve karakter göstergesidir. Üzerinde 16 tane pin bulunmaktadır.  Bu pinlerin açıklamaları ve ne işe yaradıklarını aşağıda belirttim.

1- VSS girişi  : Gnd girişidir. 0 volt negatif gerilim bağlanır.

2- VDD girişi : 5 volt pozitif gerilim girişidir.

3- VE girişi : Ekrandaki yazının netliğini ayarlamak için kullanılan voltaj girişidir.

4- RS(Register Select) : LCD ekranın ne yapacağını, register da bir deger olup olmadığını kontrol eder.

5- R/W(Read/Write) : pinlerin modlarını okuma veya yazma olarak değiştirmek için kullanılır.

6- E (Enable) : Pinleri okuma modunda aktif hale getirir.

7-14  D0-D7 : Bit bit aldığı değerleri okur. Buradan ekrana yazdırılacak yazılar bit bit gönderilir. LCD de okur.

15 – Anot  16 – Katot : sonda bulunan bu iki girişe + ve – olamak üzere voltaj uygulanır. Bu sayede LCD nin arkaplan ışığı(mavi ışık) yanar.

Şimdi devremizde kullanılan malzemelere ve devre şemasına bakalım ve montajını yapalım.

Malzemeler :

  • Arduino
  • LCD Display
  • 1 K pot
  • Breadboard

Devre Şeması :

Arduino_LCD

 

** Buradaki 1 K lık potansiyometreyi kullanmamızdaki amaç; yukarıda bahsettiğimiz VE girişinden ekran yazı netliği ayarını yapmak için kullanılır. potun sağ sol ayaklarını + ve – değerleri verip orta bacağını VE girişine bağlarız. ilk çalıştırdığımızda görüntü yoksa ya da net değilse sağa sola çevirerek ayar yaparız.

Arduino LCD sınıfı:

Arduino ile ekrana yazı yazdırmak için öncelikle  "#include <LiquidCrystal.h>" içinde geçen LiquidCrystal sınıfı tanımlanır. Bu sınıf sayesinde LCD ye yazı yazdırırız. Bu sınıfın kodda kullandığımız baz komutlarına değinirsek.

lcd.begin(cols, rows)  kullandığımız LCD nin kaç sütün(cols), kaç satırdan(rows) oluştuğunu belirtiriz.

lcd.print(data) ekrana yazacağımız yazıyı bu kod ile göndeririz. data yerine "mesajınızı" yazabilirsiniz.

lcd.setCursor(col, row)  ekrana yazıyı ekranın belirli bir alanına yazdırmak istiyorsak, kaçıncı sütün kaçıncı satırda yer almasını belirtiriz öncesinde.

lcd.clear() ekranda yazan herşeyi siler.

daha detaylı bilgi için : http://arduino.cc/en/Reference/LiquidCrystal adresine bakabilirsiniz.

Arduino kodları : 

#include <LiquidCrystal.h>

// LCD için kullanılacak çıkışlar set edilir. LiquidCrystal(rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
lcd.begin(16, 2); // LCD ekran arayüzü başlatır ve ekran boyutları (genişlik ve yükseklik) belirtir
lcd.print("*RESUL DOLANER*");   // Ekrana Yazı Yazdırılır.
lcd.setCursor(0, 1);    // ekranın alt satırına yazı yazdırmak için cursor konumlandırılır.
lcd.print("resuldolaner.com");

delay(5000); // ilk yazı 5 sn ye ekranda yazılı kalır
lcd.clear(); // ekran tamamen silinir.
lcd.print("LCD DISPLAY"); // ve başka bir yazı yazdırılır.
}

void loop() {

}

Arduino ve LM35 Kullanarak Sıcaklık Kontrolü

Herkese merhaba,

Bugün sizlere  hobi olarak başladığım Arduino cihazıyla yaptığım sıcaklık kontrol uygulamasını paylaşacağım. Uygulamanın nasıl çalıştığını anlatan bir videoda yükledim ordanda nasıl birşey olduğunu izleyebilirsiniz. LM35 sıcaklık sensörü ile elde ettiğimiz analog sinyali mV ye, daha sonra Dereceye çevirip, elde ettiğimiz veriye görede ledlerimizi yakacağız.

Elde ettiğimiz değer;

26°C’den küçükse Yeşil Ledi Yak
26°C ile 30°C arasında ise Sarı Ledi Yak
30°C ile 35°C arasında ise Kırmızı Ledi Yak
35°C’nin üzerinde üzerinde ise sıra ile tüm ledlerin yamasını istiyoruz.

İlk olarak devre kurulumu malzemelerini paylaşacağım;

Malzemeler;

  • Arduino Uno R3
  • 1 Adet LM35 Sıcaklık Sensörü
  • 3 adet Led (Sarı Kırmızı Yeşil)
  • 4 adet Direnç (1 K olabilir.)
  • biraz kablo
  • birde breadboard

Devremizin Şeması;

Arduino_LM35_Sicaklik_Kontrolu_Devre_Semasi

Arduino_LM35_Sicaklik_Kontrolu_Devre_Semasi

Devre Kurulumunu yukarıda gördüğümüz gibi yaparsak sıkıntısız bir şekilde çalışacaktır. Direçler elimde 1K olduğu için onları kullandım daha düşüklerini de kullanabilirsiniz. ledlerin yüksek voltajta yanmaması için ekledim.

Şimdi Kodlama Kısmına Geçelim. Kodların yanına Yeşil olarak kodların ne işe yaradığını kısa olarak belirttim.

Kodlar;

float sicaklik_derecesi;
float gerilim_degeri;

int sicaklik_derecesiPin = 0; // analog girişin olacağı pin

int yesil_led = 7;        // yeşil led çıkış
int sari_led = 6;          // sarı led
int kirmizii_led = 5; // kırmızı led

void setup()
{
Serial.begin(9600);                                     // saniyede 9600 defa 0. analog girişi oku
pinMode( yesil_led, OUTPUT);           // 7 nolu pin çıkış olarak belirle
pinMode( sari_led, OUTPUT);             // 6 nolu pin çıkış olarak belirle
pinMode( kirmizii_led, OUTPUT);     // 5 nolu pin çıkış olarak belirle
}

void loop()
{
// dinleme işlemi
gerilim_degeri = analogRead(sicaklik_derecesiPin);       // analog degeri oku
gerilim_degeri = (gerilim_degeri/1023)*5000;                // analog deger mv ye çevirir.
sicaklik_derecesi = gerilim_degeri/10.0;                            // celciusa çevirip sicakliğa atadık.

// bulduğumuz değer aralığına göre yanacak ledleri belirliyoruz.
if ( sicaklik_derecesi < 26 )
{
digitalWrite ( yesil_led , HIGH );     // yeşil ledi yak
digitalWrite ( sari_led , LOW );         //
digitalWrite ( kirmizii_led , LOW ); //
}
else if( (sicaklik_derecesi >=26) && ( sicaklik_derecesi < 30) )
{
digitalWrite ( yesil_led , LOW );      // yeşil ledi söndür
digitalWrite ( sari_led , HIGH );       // sarı ledi yak
digitalWrite ( kirmizii_led , LOW ); // kırmızı ledi söndür
}
else if( (sicaklik_derecesi >=30) && ( sicaklik_derecesi < 35) )
{
digitalWrite ( yesil_led , LOW );            // yeşil ledi söndür
digitalWrite ( sari_led , LOW );               // sarı ledi söndür
digitalWrite ( kirmizii_led , HIGH );      // kırmızı ledi yak
}
else if( sicaklik_derecesi >=35 )
{
digitalWrite ( yesil_led , HIGH );         // yeşil ledi yak
digitalWrite ( sari_led , LOW );             // sarı ledi söndür
digitalWrite ( kirmizii_led , LOW );    // kırmızı ledi söndür
delay(250);                                                      //250 milisaniye boyunca yak

digitalWrite ( yesil_led , LOW );            // yeşil ledi söndür
digitalWrite ( sari_led , HIGH );            // sarı ledi yak
delay(250);                                                      //250 milisaniye boyunca yak

digitalWrite ( sari_led , LOW );               // sarı ledi söndür
digitalWrite ( kirmizii_led , HIGH );     // kırmızı ledi yak
delay(250);                                                        //250 milisaniye boyunca yak
}

// yarım saniyede bir bizde ekranımızdan değeri görelim.
Serial.print("sicaklik_derecesi degeri: ");
Serial.print(sicaklik_derecesi);
Serial.println(" derece");
delay(500);

}

 

 

***  Serial.print ile yazdırdığımız yazıları görmek için; arduino programımızız sol kısmında bulunan serial monitor butonuna tıklamanız gerekmektedir.