MCU etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
MCU etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

15 Mart 2014 Cumartesi

Arduino - LM35 Sıcaklık Sensörü ve LCD ile Termometre Uygulaması


Bu yazımda geçen yazıda yaptığımız termometre uygulamasında kullandığımız seri haberleşme yerine LCD ekranı kullanarak yine aynı projeyi yaptım.

Bu projeyi PCB karta işlerken elbette seri haberleşme portu yerine portatif olan LCD'yi kullanmak durumunda kalırız. Bu yüzden LCD'yi de öğrenmek mühim. Zaten Seri Haberleşmeyi tam olarak öğrenebilirsek LCD'yi de kullanmak zor olmayacaktır.

Burda sadece LCD Ekran kullanımı ve LM35 Termometre projelerini birleştirdim ve aşağıdaki kodu koştum. LCD Bağlantılarını tekrar yazacağım uğraşmak istemeyenler için :).








LCD'nin
1 - VSS (Toprak)
2-  +VDD
3-  Potansiyometrenin Ortası
4-  Arduino 7.pinine
5-  Toprak
6-  Arduino 8.pinine

11- Arduino  9.pinine
12- Arduino 10.pinine
13- Arduino 11.pinine
14- Ardunio 12.pinine
15- +VDD   
16-  Toprak

***Şemada 15. ve 16.pinlerin yerlerini ters yazmışım çok özür diliyorum. 15 VDD, 16 Toprağa bağlı olmalı. Potansiyometrenin



Sağ Bacak Toprak, Sol Bacak +VDD

Kodlarımız :

#include <LiquidCrystal.h> // Kütüphane Gerekli
LiquidCrystal lcd(7, 8, 9, 10, 11, 12); //Arduino pinleri LCD için
float sicaklik; //Analog değeri dönüştüreceğimiz sıcaklık 
float analoggerilim; //Ölçeceğimiz analog değer

void setup(){
  lcd.begin(16,2); 
}

void loop(){
  lcd.clear(); 
  lcd.setCursor(0,0); //komutu ile imleci istediğimiz karakter kutusunda konumlanmasını sağlıyoruz.İlk satırın 6.sütununa.
  analoggerilim = analogRead(A1); //A1'den değeri ölç
  analoggerilim = (analoggerilim/1023)*5000;//değeri mV'a dönüştr 
  sicaklik = analoggerilim /10,0; // mV'u sicakliğa dönüştür

  lcd.print("Sicaklik Degeri"); // İmlecten itibaren bu yazı yazılacak
  lcd.setCursor(0,1); // 1.satırın ilk sütunundayız 
  lcd.print(sicaklik); // Ardndan Bu değişken değer yazılacak
  lcd.print(" Derece"); //Değer ardından da bu yazı yazılacak
  lcd.setCursor(1,7);  //Derece yazısının yeri (2.satır,7.sütun)
  delay(1000); //Bu kısım LCD'lerin frekans çalışma aralığı yüzünden giriliyor.

}


Videomuz :








7 Mart 2014 Cuma

Arduino - Buton ile Çıkışları Değiştirme

Butonların öneminden daha önceki yazımda bahsetmiştim. Burada da yine bir öncekine benzer bir uygulama yapacağız. Bu uygulamanın yapılış amacını aslında 7 segment display uygulamalarına giriş için yaptığımızı düşünebiliriz.

Kısaca uygulamadan söz etmek gerekirse amacımız burda 1 sayısal giriş ile  2 sayısal çıkışı yönetmek olacak. Butona her bastığımızda çıkışın yeri değişecek. Yani çıkış olarak kullandığımız yeşil ve turuncu ledleri sırayla butona basarak yanmasını sağlayacağız.

Bu uygulamaya geçmeden önce size aritmetik bir operatör olan " mod " almayı anlatacağım.

Arduino'da ve bir çok C tabanlı dilde mod  " % " ifadesi ile alınmakta. Yani biz herhangi bir integer değerin herhangi bir sayı modunda almak istersek şu şekilde kullanmamız gerekiyor.



Integer değeri= sayi , mod=5 olsun;

" sayi%5 " 

Uygulamamızda  bu kavramın daha iyi anlaşılacağını düşünüyorum.

int led1=8;  //yeşil led
int led2=7;  //turuncu led
int buton=4;
int ledsirasi=0; //modunu alacağımız sayi

void setup () {
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(buton,INPUT_PULLUP);}
  
void loop () {
    int butondurumu=digitalRead(buton);
    if (butondurumu==0)
    {ledsirasi=ledsirasi+1;}
    
    if (ledsirasi%2==0)
    {digitalWrite(led1,HIGH);
     digitalWrite(led2,LOW);}
     else
     {digitalWrite(led2,HIGH);
     digitalWrite(led1,LOW);}
     
     delay(100);
}

Programda çıkışları seçmeyi (aslında 1 olanı seçmeyi) mod2ye bağlı olarak ledsirasi integer değerine göre seçtim. ledsirasi 0'dan başlamak üzere her butona basıldığında 1 artacak ve mod2ye göre de ya "1" ya da "0" olacak. Buna göre de ya yeşil led ya da kırmızı led in yanması sağlanmış olacak.




Bir sonraki uygulamamızda 7 segmentli gösterge ile 0-9 arası sayıcı yapacağız. Daha önce CMOS 4026 entegresi ile hazır olarak bunu yapmıştım bu sefer arduinoyu kendimiz programlayarak bunu yapacağız.









22 Temmuz 2013 Pazartesi

Arduino - Analog Çıkışlara Hükmetmek (PWM & Ledler)

Daha önce dijital çıkışlara hakim olmuştuk. "1" ve "0" mantığı ile ledimizi yakmış ve söndürmüştük.Fakat hayatta ki ölçülebilen değerler sadece "1" ve "0" lardan oluşmuyor. Bu yazımda analog çıkışlarla ilgili çalışma yapacağız. Arduino UNO ve türevleri bu özelliği barındırmakta.




Bu özellik elbette ki tüm çıkış pinlerinde yok. Üzerinde ~ işareti bulunan pinleri kullanırsak analog özelliğini de kullanabiliriz.

Dijital çıkışlarda " digitalWrite(10, HIGH ), digitalWrite(10, LOW) " komutunu kullanıyorduk. Çıkışımız ya "1" ya da "0" oluyordu. Analog özelliğini kullanabilmemiz için ise aşağıdaki komuta ihtiyacımız olacak.

analogWrite( )

Öncelikle devremizi aşağıdaki gibi kuruyoruz.Tabi siz isterseniz üzerinde "~" işareti bulunan herhangi bir pini de kullabilirsiniz.

Kodlar ve açıklaması :


int led=9;
  
void setup()
{
  pinMode(led, OUTPUT);

}
void loop()
{
  int parlaklik;
  {
  for (parlaklik=0;parlaklik<=255;parlaklik+=5)
  {analogWrite(led,parlaklik);
  delay(100);
  }
  for(parlaklik=255;parlaklik>=0;parlaklik-=5)
  {
    analogWrite(led,parlaklik);
    delay(100);
  }
}
}


  • 9. pinimizi çıkış olarak ayarladık
  • Parlaklık ismiyle integer bir değer okuttuk.Bu değerimiz analog çıkış almamızı sağlayacak.
  • 8 bitlik dijital değeri analog değere çevirmiş olduk 2^8=256 formülünden analog çıkışımız 0-255 arasında değişecek.
  • Biz bu değeri 5'er 5'er 255'e kadar arttırdık ve sonra da 255'ten 5'er 5'er azalttık.
  • Böylece analog olarak ledimizin parlaklığını arttırmış ve azaltmış olduk.