12 Şubat 2017 Pazar

Arduino UNO - Seri Haberleşme



Projelerimizde Arduino'ya komut yollamak veya sensörlerdeki değerleri görüntülemek için seri haberleşmeyi kullanırız. Seri haberleşmeyle bu protokolü destekleyen cihazlarla haberleşebiliriz. Arduino'nun USB kablosu üzerinden bilgisayara veri aktaracağız. Bunun için öncelikle haberleşme hızını (Baud Rate) ayarlamalıyız. Bu ayarın sadece bir kere yapılması yeterli olduğu için, haberleşme hızı setup fonksiyonu içerisinde ayarlanmalıdır.




Sağ alt köşede gözüken 9600 baud haberleşmek için kullanılır.Arduino’ nun baud rate hızı ile burdaki baud rate hızı aynı olmalıdır.


 Şimdi kodumuza geçelim.

 void setup()


{

 Serial.begin(9600);  //Seri haberleşme 9600 baud rate hızıyla başladı.

} 


void loop()

{

Serial.println(" MERHABA DUNYA "); // Parantez içindeki yazı ekrana yazdırılır ve alt satıra geçerek tekrar eder.

delay(1000); // 1 saniye gecikme eklendi.

} 

Burdaki kodu yazıp karta yükledikten sonra Serial monitörü açtığınızda aşağıdaki gibi olucaktır.






   

  ↣ Melih ŞAHAN                                                                                 

7 Şubat 2017 Salı

Arduino UNO - Trafik Lambası Uygulaması


Öncelikle trafik lambalarının çalışma prensibine kısaca değinmek istiyorum. Hepimizin bildiği üzere trafik ışıklarında kırmızı ışık belli bir süre yanar sonra sarı ışık yanar,  söner ve arkasından yeşil ışık yanar.. Yeşil ışık belli bir süre tek başına yandıktan sonra  sarı ışık yanar, arkasında söner kırmızı ışık yanar.. Döngümüz bu şekilde devam eder...
Bizde uygulamamızda kırmızı ve yeşil ışıkların 3'er saniye sarı ışığın 2 saniye yanmasını sağlayarak trafik lambasına uygun şekilde programlayacağız.
Bu projemizde gerekli olan malzemeler şunlar;
  • 1x Arduino Uno
  • 3x LED
  • 3x Direnç
  • 4x jumper

Devremizin kurulumu aşağıdaki gibidir.







Projemizin kodu :

int KIRMIZI=5;
int SARI=4;
int YESİL=3;

void setup()

{

pinMode (YESİL, OUTPUT);
pinMode (SARI, OUTPUT);
pinMode (KIRMIZI, OUTPUT);

}

void loop()

{

   digitalWrite (KIRMIZI,HIGH);
   digitalWrite (SARI,LOW);
   digitalWrite (YESİL,LOW);
   delay (3000);

   digitalWrite (KIRMIZI, LOW);
   digitalWrite (SARI, HIGH);
   digitalWrite (YESİL, LOW);
   delay (2000);

   digitalWrite (KIRMIZI, LOW);
   digitalWrite (SARI, LOW);
   digitalWrite (YESİL, HIGH);
   delay (3000);

 }





↣ Şebnem PALİÇ

Arduino UNO - RGB led Uygulaması


RGB Led Nedir?


 RGB İngilizcedeki red (kırmızı), green (yeşil), blue (mavi) renklerin baş harfleri birleştirilerek oluşmuş bir terimdir. Genel çalışma prensipi; bu üç rengi kullanarak, farklı kombinasyonlarda, çok fazla renk verebilir.

DEVRE ŞEMASI:




Anot RGB ledlerde ortak anot uçtan +5V verilip tüm renkler (RGB) yakılır. Sonra her bir renk pininden voltaj verilip bu gerilim farkı azaltılarak istenilen renk değerlerine ulaşılır.




DEVRENİN KODU:


int RedPin = 11;
int GreenPin = 10;
int BluePin = 9;

void setup()
{
  pinMode(RedPin, OUTPUT);
  pinMode(GreenPin, OUTPUT);
  pinMode(BluePin, OUTPUT);
}

void loop()

{

  // Kırmızı ışık için

  analogWrite(RedPin,255); // kırmızı max aydınlıkta yanıyor
  analogWrite(GreenPin,0); // Yeşil Sönük
  analogWrite(Bluepin,0);  // Mavi Sönük
  delay(1000);

  // Yeşil ışık için

  analogWrite(RedPin,0);     // Kırmızı sönük
  analogWrite(GreenPin,255); // Yeşil max aydınlıkta yanıyor
  analogWrite(Bluepin,0);    // Mavi Sönük
  delay(1000);

  // Mavi ışık için

  analogWrite(RedPin,0);    // Kırmızı sönük
  analogWrite(GreenPin,0);  // Yeşil sönük
  analogWrite(Bluepin,255); // Mavi max aydınlıkta yanıyor
  delay(1000);

}



↣ Şebnem PALİÇ

5 Şubat 2017 Pazar

Arduino’da Veri Tipleri/Değişkenleri


Veri Tipi Nedir?
Programlama yaparken, programımızda kullanacağımız değişkenleri tanımlarız. Bu tanımlamalar için programımız belli bir yer ayırır. Yani Arduino için konuşacak olursak 32KB’lık Arduino UNO hafızasının belli bir bölümü bu değişkenlere ayrılır. Bu tanımlamaları yaparken, tanımlayacağımız sayının veya karakterin hangi sayı aralığında yer aldığına göre bir veri tipi seçmeliyiz.
Veri Tipi Neden Önemli?
Atadığımız her değişkenin hafızada belli bir yer tuttuğunu söylemiştik. Belli sayı aralıkları belli yerler tutar. Daha büyük sayıları kullanmamıza imkân veren veri tipleri hafızada daha çok yer kaplar. Dolayısıyla gerekmediği takdirde hafızada fazladan yer kaplamamızın anlamı yok. Arduino için konuşacak olursak, her ne kadar alternatifleri olsa da, UNO’nun 32KB’lık hafızası için her bir değişkenin harcadığı alan bizim için “büyük projelerde” çok önemli.
Şimdi gelelim veri tiplerine,
1) Boolean
Tek bitlik bir değişkendir. İçerisinde sadece 0 veya 1 verilerini barındırabilir. Yani TRUE veya FALSE. Eğer bir yerde yalnızca iki ihtimal varsa bu veri tipini kullanabiliriz. Kısaca bool şeklinde de tanımlama yapılabilir. Kişinin isteğine bağlıdır.
Bool durum;
bool led1=TRUE;

2) byte
8-bit negatif işaretsiz sayıyı içerisinde tutar. Bu da 0-225 arasına denk gelir.
Not: 1 byte 8 bitlik veri tutar. Makine dilinde veriler 0 ve 1’ler ile saklanır. Mesela, 01101001 verisi aslında bir sayının makine dilinde karşılığıdır. Buradaki 0 ve 1’lerin her biri bir bittir.
Byte kullanımına örnek verecek olursak;
byte x=21;

3) int


Uzun ismi Integer’dır ve tamsayı anlamına gelir.

16-bit yani 2 byte’lık alan kaplar. Tam sayıları saklamak için en sık kullanılan veri tipidir.
int deger=96;
4) char
Bir byte yani 8-bit genişliğindedir. İçinde karakter verisi bulundurur. Karakter değerleri numara şeklinde saklanmaktadır. Bunun anlamı da karakter değerleri üzerinde aritmetik işlem yapabileceğinizdir. Herhangi bir karakterin sayı değerini öğrenmek isterseniz ASCII tablosuna bakmalısınız.char değişkenine değer harf veya sayı olarak verilebilir.
5) unsigned int
Integer veri tipi ile aynı özelliklere sahiptir. Yalnız negatif değerlere yer vermediği için, negatif değer için ayırdığı hafızayı pozitif değere ekleyerek 0 ile 65,535 arası değer alabilir. 32-bit sistemlerde ise 0 ile 4,294,967,295 arasında değer alabilir.
unsigned int sayi=146798;
6) unsigned char
Negatif işareti olmayan char değişkeni tanımlar. Karakter verileri negatif değerler almazlar. Dolayısıyla char değişkeni sadece 127’ye kadar değer alabilir. unsigned char ile farklı karakter verilerine erişim olsa da Arduino dilinde byte verisiyle aynı anlama gelir ve 0 ile 255 arasında değer alır.
unsigned char karakter3 = 247;
7) word
Uno ve Atmega mikrodenetleyici bulunduran kartlarda unsigned int ile aynı özelliğe sahiptir. Fakat Due ve Zero kartlarda 32 bitlik negatif işaretsiz veri depolayabilir.
word deger=1200;
8) long
Tanımlayacağımız sayı çok uzunda bu tip bir değişken işimizi görecektir. 32 bitlik yani 4 byte’lık yer kaplayan bu veri tipi -2,147,483,648 ile 2,147,483,647 arasında değer alabilir.
long uzunsayi;
9) unsigned long
long veri tipinin negatif işareti kaldırılmış versiyonu da diyebiliriz. Yine long gibi 32 bitlik yer kaplar fakat negatif işaret için ayrılmış kısmı pozitifte de kullanabileceğimiz için 0 ve 4,294,967,295 arası bir tamsayı değeri atayabiliriz.
unsigned long cokuzunsayi=4325283;
10) short
Bütün sistemlerde kapladığı alan 16 bittir. Bu da -32,768 ile 32,767 arasına tekabül etmektedir.
short deger=7000;
11) float
Bu veri tipi ondalık sayıları da içinde barındırır. Eğer bir işlemde virgülden sonra da sayı varsa değişkenimizi bu veri tipiyle atamak zorundayız. float değişkeni -3.4028235E+38 ile 3.4028235E+38 arasında ondalık değer alabilir. Bu değer hafızada 32 bitlik yer tutar. float değişkeninde en fazla 6 veya 7 hane bulunabilir. Daha uzunu için double kullanmak lazımdır.
float sensor=3.2354;
12) double

Arduino’nun ATMEGA tabanlı kartlarında float değişkeninden farksızdır. Due kartında 64 bitlik yer tutar ve saklayabildiği ondalık sayı çok daha yüksek olabilir.
double ondalikdeger=2.4323;

↣ Şebnem PALİÇ

15 Ocak 2017 Pazar

Arduino UNO - Blink Uygulaması



Kullanılan malzemeler:


*LED

*330 ohm Direnç

*Arduino UNO

*Jumper Kablo











Arduino IDE programına aşağıdaki kodu yazıyoruz




#define led 7

void setup()

{

  pinMode(led, OUTPUT);  
 // 7 numaralı pini çıkış yaptık 

}

void loop()

{

 d
igitalWrite(led,HIGH);    // 7 numaralı pine enerji verildi 

 delay(1000);     // 1000 milisaniye = 1 saniye bekleme 
  

 digitalWrite(led,LOW);   // 7 numaralı pindeki enerji kesildi 
 

 delay(1000);    // 1 saniye bekleme
}
























Kodlar ne anlama geliyor?

Setup: fonksiyonu reset tuşuna basıldığında veya arduino’ya ilk olarak güç verilip çalıştırıldığında 1 kez çalışan fonksiyondur.

Loop:  ise sürekli olarak kendisini tekrar eden bir fonksiyondur.


Delay:  fonksiyonu ile milisaniye türünden sistemi bekletebiliyoruz. Biz 1 saniye bekle sonra işlem yap gibi bir mantık için kullanmış oluruz.


pinMode: fonksiyonu ile arduinodaki pinleri çıkış veya giriş  pinleri olarak ayarlayacağımızı belirliyor.


↣ Şebnem PALİÇ












ARDUİNO NEDİR?

Arduino, Processing/Wiring dilini kullanarak çevre elemanları ile temel giriş çıkış uygulamalarını gerçekleştiren açık kaynaklı fiziksel programlama platformudur. Arduino ile bağımsız olarak interaktif uygulamalar gerçekleştirilebilirsiniz. Aynı zamanda Arduinoyu bilgisayar ile Flash, Processing, MaxMSP, C Sharp gibi bir çok yazılım üzerinden yada kendi yazdığınız yazılımlarla haberleştirerek de kullanabilirsiniz.





Arduino Nasıl Kullanılır?


Arduino ya da herhangi bir mikrodenetleyici sistemi kullanmak için ilk olarak düzgün çalışma ortamını sağlamanız gerekir.



  • Arduino UNO, PRO Mini, Mega, Leonardo, Esplora, Lilypad, Nano, Due, Arduino çeşitleri bulunur.




  • Karta uygun USB kablonuz. USB yazıcı kablosu ya da mikroUSB kablosu gerekecektir.


  • Arduino IDE programı gerekmektedir.


  • Arduinoya uygun bir bilgisayar gerekir.




Arduino UNO Teknik Özellikler:

- ATmega328 Mikrodenetleyici

- 7-12V Giriş Voltajı

- 14 Dijital G/Ç Pini

- 6 PWM Çıkışı

- 6 ADC Girişi

- 16MHz Çalışma Frekansı

- 32KB Flash Hafıza





Arduino çeşitleri




Arduino Pro mini


























Arduino Mega






















Arduino Leonardo












Arduino Esplora




















Arduino Lilypad
























Arduino Nano













 Arduino Due











↣ Şebnem PALİÇ