Mar 01

Yazar:Murat OFLEZER

Kaynak 1:Hasbi SEVİNÇ
Kaynak 2:Meraklı maymun

4) Arduino ile SeriPort Üzerinden Bilgisayara Veri Yollama

Gerek arduinonun kontrolü gerekse işlenen değerlerin kullanıcıya aktarılması için arduinomuz ile bilgisayarımız arasındaki haberleşmeyi yapmamız gerekir. Bu haberleşme arduinonun RX ve TX ayaklarından gerçekleşecektir. Haberleşme için her zamanki gibi arduinoyu USB üzerinden bilgisayarımıza takmamız yeterli olmaktadır. Haberleşme için setup fonksiyonumuza başlatma kodunu yazmayı unutmayalım. Aşağıdaki kod ile bilgisayara her saniye artan sayımızı yolluyoruz.

Arduino kodları;

 
void setup() {
Serial.begin(9600); // bilgisayar ile arduinomuzun haberleşmesini başlatıyoruz.
// Bilgisayarın ve arduinonun aynı hızda çalışması için 9600 yazdık.
// Yani saniyede 9600 tane bit transferi olacaktır.
}
int sayici = 0;
void loop() {
Serial.print(“Sayicimizin degeri= “); // Ekrana mesajımızı yazdırıyoruz.
Serial.println(sayici); // sayaç değerimizi ekrana yazdırıp yeni satıra geçiyoruz.
delay(1000); // Bir saniye bekle
}


Bütün işlem bu kadar kolay. Bundan sonrası tamamen size kalmış. Bu bağlantı ile yazdığınız programı kolaylıkla test etme debug etme imkanı sağlamaktasınız. Şimdi daha önce öğrendiğimiz buton kontrolüyle haberleşmemizi birleştirelim ve butona her basıldığında artan bir sayaç yapalım.

Arduino kodları;

 
const int buttonPin = 2; // Butonun pin numarası
int sayici = 0; //sayacimiz
int buttonState = 0; // Butonun durumu
void setup() {
pinMode(buttonPin, INPUT);
Serial.begin(9600);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
sayici ++; // sayici = sayici + 1;
Serial.print("Sayicimizin degeri= "); // Ekrana mesajımızı yazdırıyoruz.
Serial.println(sayici); // sayaç değerimizi ekrana yazdırıp yeni satıra geçiyoruz.
while(buttonState == HIGH){ // Butondan elini çekene kadar program burada kalır.
// Böylece butona her basıldığında sadece bir kere değer arttırılır
buttonState = digitalRead(buttonPin);
}
}
}

Fritzing Çizimi;

13.png

 

5)Potansiyometre İle Led Veya Buzzer Kontrolü

Bu dersimizde de potansiyometreyi arduino ya bağlayacağız ve seri monitör ekranında potansiyometre değerini okuyacağız.Potansiyometreden aldığımız değerlerini map() komutu ile led ve buzzer için uygun aralığa getiriyoruz.Bu sayede ledimize ve buzzerımıza gerekli voltaj değerlerini vermiş oluyoruz.

Şimdi pwm çıkış için gerekli map() ayarlaması;

14

Yani,konum=map(konum,0,1023,0,255) dediğimiz zaman potansiyometreden alınan değeri kısıtlamış oluruz.

Arduino kodları;

 

 
void setup()
{
pinMode(A0,INPUT); // Potansiyometre A0 pinine bağlı.
pinMode(3, OUTPUT); //Buzzer'ın bağlı olduğu pin. Çıkış olarak ayarlı...
Serial.begin(9600); //Seri monitör ayarlaması.
}

void loop()
{
int konum = analogRead(A0); // ''konum'' değişkenimizin sahip olacağı değer Potansiyometre'nin gönderdiği sayıdır.

konum = map(konum,0,1023,0,255); //0-1023 arasındaki değere sahip olan değişkenimizi 0-255'e düşmeye zorluyoruz.

Serial.println(konum); // Serial Monitor'de konum değişkenimizin sahip olduğu değeri göstertiyoruz.

delay(50); //50 milisaniye gecikme uyguluyoruz. (Siz bu süreyi artırabilirsiniz.)

analogWrite(3, konum); // 3. pine bağlı buzzer ya da LED'e güç veriyoruz.

}

Fritzing Çizimi;

15

6)Ldr İle Led Kontrolü

LDR kısaca ışığa duyarlı dirençtir.LDR ile karanlıkta yanan ledden tutunda ışığa doğru giden robotta kadar çoğu devrenizde kullanabilirsiniz.Biz şimdilik karanlıkta yanan led yapalım;

Arduino kodları;

 
int ldrPin=A2; //ldr yi tanımladık
int ldrDeger=0;
int esikDeger=50;
void setup(){
pinMode(12, OUTPUT);
}

void loop(){
ldrDeger=analogRead(ldrPin);
if(ldrDeger<esikDeger){
// Eğer ışık 50 değerinden az olursa yansın.
digitalWrite(12, HIGH);

}
else{
digitalWrite(12, LOW);  //aksi halde yanmasın.
}
}

Fritzing Çizimi;

16

7)Ultrasonic Mesafe Sensörü

Şimdi çoğunuzun hayali olan engelden kaçan robot için en önemli parçanın kullanımına yani hc-sr04 ultrasonic mesafe sensörüne. 4 adet pin bulunmaktadır; bunlar vcc ,gnd,trig ve echo şimdi zaman kaybetmeden kodlarını yazalım;

Arduino kodları;

 
const int trig =2;       // pinlerin numaralarını ayarladık.
const int echo= 3;
int sure=0;      //süre ve mesafe değişkenlerini tanıttık.
int mesafe=0;

void setup() {
pinMode(trig, OUTPUT);   //trigger için çıkış verdik.
pinMode(echo, INPUT);    //echo için giriş verdik.
Serial.begin(9600);  // serial monitör ayarlamasını yaptık.
}

void loop() {
digitalWrite(trig, HIGH);    //ilk ses dalgamızı gönderdik.
delayMicroseconds(1000);   // bekledik.
digitalWrite(trig, LOW);    //ve yakaladık.
sure = pulseIn(echo, HIGH);
mesafe = (sure/2) / 29.1;
//burada süreyi 2 ye böldük çünkü gidiş geliş mesafesini ayarlamak için.
Serial.print("Mesafe: ");  // serial monitöre yazdırdık.
Serial.print(mesafe);
Serial.println(" cm");
delay(250);
}

 

Fritzing Çizimi;

17

Haftaya İşlenecekler;

8)Proje Display’e Yazı Yazma (i2c’ler lehimlenecek)
9)Proje Park Sensörü Yapma
10)Proje Lm 35 İle Termometre
11)Proje Dth-11 İle Nem Ve Isı Ölçme

2 Yorum “Arduino Eğitimi II”

  1. avatar tarsus haberleri diyor ki:

    Öncelikle bu yazınızı severek okudum. Çok çok sağolun. Ama kafama takılan bir şey var. Cevaplarsanız sevinirim. Dirençler + ucu mı – uca mı bağlanıyor ? Neden sordum örnek vermek gerekirse Google’a led yakmak yazın ve görsellere girin. Kimisi led de + bacağa bağlamış kimisi – bacağa bağlamış. Aynı durum sensörler için de geçerli doğru olan hangisi?

Yorum Yaz