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 / Basics
Kodlarda 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 / BareMinimum
Arduninoda 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…
/*
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.
/*
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.
/*
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.
/*
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
/*
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
Bu yazıdaki içerik ve resimler arduino.cc den alınarak Türkçeleştirilmiştir.
13.12.2018