Arduino Seri İletişim

Arduino UNO’nun 0 ve 1 dijital pinleri doğal donanım seri iletişim yeteneğine sahiptir.
Serial.write(), Serial.print(), Serial.println() komutlarını kullanarak göndereceğiniz seri veriyi; Arduino IDE üzerinden Tools-> Serial Monitor kullanarak yada bu pinlere bağlayacağınız bir kablo ile bilgisayarınız üzerinden izleyebilirsiniz. Seri iletişim çift yönlü olduğundan Arduino’nuza bilgisayarınızdan da bilgi gönderebilirsiniz.
Dikkat etmeniz gereken nokta; setup() içerisinde tanımladığınız Serial.begin(9600); satırı ile bilgisayarınızın ayarları ile aynı olması. PuTTY veya benzeri bir program seri porttan veri okumanız için yeterli olacaktır. Arduino’muzu bilgisayar ile haberleştirerek, 5 nolu pinin durumunu bilgisayarda görmek için aşağıdaki kurulumu yapabiliriz:

Yukarıdaki bağlantı şekline göre Arduino üzerindeki 5 nolu dijital pin’in değerini seri arabirim üzerinden okumak için aşağıdaki programcığı kullanabiliriz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int DURUM=0;
int sonDURUM=0;
void setup()
{
 Serial.begin(9600);
 pinMode(5,INPUT);
}
void loop()
{
 DURUM=digitalRead(5);
 if(DURUM!=sonDURUM)
 {
 Serial.print("Pin 5 durumu:");
 Serial.println(DURUM);
 sonDURUM=DURUM;
 }
}

Peki, bu iletişimi çift taraflı hale getirmek istesek… Önceki donanım kurulumunu aşağıdaki şekilde değiştirip, resmin hemen altında yer alan kodu kullanarak bilgisayardan gelen veriye göre ledimizi yakabiliriz. Led’i yakmak için SPACE tuşunu kullanınız.
Arduino Mega kullandığınızda Serial1, Serial2 ve Serial3 şeklinde kullanmayı unutmayın.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
int DURUM=0;
int sonDURUM=0;
int gelenBayt = 0;
int ledDURUM=LOW;
void setup()
{
  Serial.begin(9600);
  pinMode(5,INPUT);
  pinMode(4,OUTPUT);
}
void loop()
{
  DURUM=digitalRead(5);
  if(DURUM!=sonDURUM)
  {
    Serial.print("Pin 5 durumu:");
    Serial.println(DURUM);
    sonDURUM=DURUM;
  }
  //Gelen bilgiyi okumaya çalışalım
  if (Serial.available() > 0)
  {
    gelenBayt = Serial.read();
    //32 space tuşu
    if(gelenBayt==32) ledDURUM=HIGH;
    else ledDURUM=LOW;
  }
  digitalWrite(4,ledDURUM);
}

Yorum yaz