Son Haberler

Arduino öğrenirken yol haritası (1)

Genelde Arduino nedir sorusundan sonra “Nasıl kullanacağım, neyi öğreneyim?“  konusunda bir kafa karışıklığı yaşayan dostlarımıza robot çalışmalarına başlamadan önce kolaylık olması için bir Arduino öğrenim yol haritası ilk bölümünü aşağıda bulabilirsiniz.
Aşağıdaki çalışmaları yapmadan önce Arduinoyu bilgisayarınıza yüklemiş olmanız ve en az bir arduino bordunuzun da olması gerekmektedir.
Aruino seçimi veya nasıl yükleneceği konusundaki konuları şuradanhttp://smarteknoloji.blogspot.com.tr/search/label/Arduino%27ya%20Giri%C5%9F bulabilirsiniz.
Bu yazıdaki içerik ve resimler arduino.cc den alınarak Türkçeleştirilmiştir.
Baştan yanılmamanız için şunu belirteyim “Arduino Basittir ama kolay değildir”.
Yıllarını elektronikte harcamış bir çok abimiz Arduinoda 1 satırlık komutu görüp, kendi yazdıkları 100 satır kod karşısında, hem dudak bükerler, hem küçümserler, hemde kıskanırlar.
Önemli olan işi yapmaksa Arduino bunu size basit yoldan sağlar ancak bir çok temel elektronik bilgisi ve program yazma bilgisini de baştan bildiğinizi farzeder.
Bu baştan bilmeniz gereken temel bilgi olmadan da arduino ile bir şeyler yaparsınız ancak, internette bulduğunuz onun bunun kodunun elinde oyuncak olursunuz kapı kapı forumları dolaşarak kodunuzu düzelttirecek insanların peşinden koşarak zaman, para kaybeder en sonunda arduinoyu bir kenara atar (hayallerinizi de) unutur gider başarısız olursunuz. Biz bunu istemeyiz.
O halde buyrun buradan…
Temel Fonksiyonlar / Core Function
1. İlk bilgiler / BasicsKodlarda geçen komutların işlevi araştırmayı teşvik için özellikle anlatılmamıştır.
Kodların içinde geçen "// bla bla" şeklindeki işret ve laflar programın tek satırlık açıklamalarıdır kod değildir.
Aynı şekilde

/*
programın açıklamaları
bu şekilde de birden fazla satırda da yazılabilir
*/

1.1 Minimum temel kod / BareMinimumArduninoda programlara sketch adını veriyorlar setup() ve Loop() bölümlerinin programınızda olması gerekmektedir.

void setup() {
// ilk değerler ve ilk başta bir kere çalışacak kodlar
}
void loop() {
// devamlı tekrarlanarak sırasıyla çalışacak  kodları burada yazıyoruz
}


1.2 Led yakıp söndürme / Blink
Bunu mutlaka yapın. Süreleri değiştirerek farklı yanma hızlarını keşfedin…
ExampleCircuit_bbExampleCircuit_sch_bb

/*
Blink
Led yakıp söndürür
*/
// Pin 13 e LED bir direnç ile bağlanmıştır
int led = 13;
//reset butonuna basıldığında ilk önce setup bir kez çalışır
void setup() {
// ledin bağlandığı pin çıkış olarak ayarlanıyor.
pinMode(led, OUTPUT);
}
// sonsuz döngü
void loop() {
digitalWrite(led, HIGH);   // ledi aktif yap
delay(1000);               // 1 saniye bekle
digitalWrite(led, LOW);    // ledi söndür
delay(1000);               // 1 saniye bekle
}

Şunları kullandık: pinMode, digitalWrite, delay

1.3 Buton ve dijital port okuma / Digital Read
Buton okumak bir çok durumda lazım olacak bir robotuun ileri geri işlemlerinde kullanacağız mesela.
button
button_sch

/*
Pin 2 yi okur sonucunu serialmonitor den gösterir
*/
// pin 2 ye buton bağladık ve tanımladık
int pushButton = 2;
// setup bir kez çalışır
void setup() {
// seri portumuzu 9600 baud a ayarladık
Serial.begin(9600);
//butonu okuyacağımız pini giriş olarak ayarladık
pinMode(pushButton, INPUT);
}
//sonsuz döngü
void loop() {
//buton pini oku
int buttonState = digitalRead(pushButton);
// butonun değerini buttonState değerinden ekrana seri porttan yolla
Serial.println(buttonState);
delay(1);        // biraz bekle
}

Şunları kullandık: pinMode, serial.Begin, digitalRead, Serial.println

1.4 Potans okuma / Analog Read
Hayatta hiç bir şey buton değerleri gibi bir veya sıfır değil. Daha neler göreceksiniz denemeden bilemezsin.
AnalogReadSerial_BBAnalogReadSerial_sch


/*
10K lık bir potansiyometreyi Arduinoya bağlayın
*/
// ilk kurulum değerlerini burada yazıyoruz
void setup() {
// seri portumuza 9600 baud değerini veriyoruz
Serial.begin(9600);
}
// sonsuz döngü
void loop() {
// pin 0 dan analog değer okuyoruz
int sensorValue = analogRead(A0);
// sensor değerini ekrana serial port üzerinden yazıyoruz
Serial.println(sensorValue);
delay(1);        // biraz bekle
}

Şunları kullandık: serial.Begin, analogRead, Serial.println, delay

1.5 Led parlaklığı kontrol / Fade
Ledi yaktınız parlaklığını da kontrol etmeyi ihmal etmeyin.
İleride servo motorların kontrolünde de aynı yöntemi kullanacağız.
simplefade_bbsimplefade_pin9_schem

/*
Pin 9 daki ledin parlaklığını değiştirir
*/
int led = 9;           //ledin bağlandığı pin
int brightness = 0;    // ilk parlaklık değeri sıfır yaptık
int fadeAmount = 5;    // parlaklık adımları değeri. her seferinde 5 birim artar azalır demek.
//ilk kurulum değerleri. Resetten sonra bir kez yapılır.
void setup()  {
// pin 9 u çıkış yaptık
pinMode(led, OUTPUT);
}
// sonsuz döngü
void loop()  {
// pin 9 parlaklığını ayarla
analogWrite(led, brightness);// parlaklığı değiştir
brightness = brightness + fadeAmount;
// parlaklık değerleri sona gelince mantığı değiştir
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
// gözümüzün değişikliği algılaması için 30 milisaniye bekle
delay(30);
}
Şunları kullandık: pinMode, analogWrite, delay

1.6 Voltaj okumak / Analog Read
Arduino ile voltaj okuyarak hassas işler yapmamıza olanak verir. Yukarıdaki Pot okuma programından faydalanarak voltajları okuyabiliriz. Yerleşim şekli ve şeması şöyle
AnalogReadSerial_BBAnalogReadSerial_sch

/*
Pin A0 a potansın orta ucu bağlanır ve okuma yapılır. voltaj değeri hesaplanır.
*/
// ilk değerler
void setup() {
// seripotun hızı 9600 baud yapılır
Serial.begin(9600);
}
// sonsuz döngü
void loop() {
// analog pin 0 daki değer okunur ve sensorvalue ye konur
int sensorValue = analogRead(A0);
// analog okunan değerler 0 - 1023 arasındadır.
//sistem 5v ile beslendiğinden 5.0/1023 değeri ile okunan değeri çarparsak voltaj değeri bulunur
float voltage = sensorValue * (5.0 / 1023.0);
// okunan voltajı ekrana seri port üzerinden yaz.
Serial.println(voltage);
}

Şunları kullandık: serial.Begin, analogRead, Serial.println, delay

İlk temel işleri bitirdik, artık ilerideki maçlara bakacağız.

Yazının 2. bölümünü allah bilir ne zaman yazarım artık ;)

Hiç yorum yok:

Yorum Gönder

SmarTeknoloji Designed by SmarTeknolji.blogspot.com Copyright © 2014

TeqrayT LTD ŞTİ. Tema resimleri mammamaart tarafından tasarlanmıştır. Blogger tarafından desteklenmektedir.