UART Nedir?
UART (Universal Asynchronous Receiver/Transmitter), mikrodenetleyiciler arasında seri haberleşme sağlayan asenkron bir iletişim protokolüdür. Bu protokolde iki temel pin kullanılır:
RX
(Receive): Veri alırTX
(Transmit): Veri gönderir
UART Nasıl Çalışır?
İki Arduino arasında UART haberleşmesi kurmak için RX
ve TX
pinleri çapraz şekilde bağlanır:
- Arduino 1’in
TX
pini → Arduino 2’ninRX
pini - Arduino 1’in
RX
pini → Arduino 2’ninTX
pini
Daha sonra her iki Arduino’da da seri haberleşmeyi başlatmak için aşağıdaki komut yazılır
Serial.begin(9600);
Veri göndermek için Serial.write()
fonksiyonu kullanılır. Örneğin, bir butona basılıp basılmadığını kontrol ederek ‘A’ karakteri gönderilebilir
if(digitalRead(Buton) == 1){
Serial.write('A');
}
Gelen veriyi kontrol etmek için Serial.available() > 0
kullanılır. Veri varsa Serial.read()
fonksiyonu ile okunur
if(Serial.available() > 0){
char gelen = Serial.read();
if(gelen == 'A'){
digitalWrite(13, 1);
}
}
if (Serial.available() > 0)
ifadesi, seri porttan veri gelip gelmediğini kontrol eder; veri varsa if bloğuna girilir.
Örnek Kod
/* Veri Gönderen */
/* Veri Gönderen ile Veri Alan Arduino'ya
bağlı olan LED'i kontrol edeceğiz */
#define Buton_yak 3
#define Buton_sondur 4
void setup() {
Serial.begin(9600);
pinMode(Buton_yak, INPUT_PULLUP);
pinMode(Buton_sondur, INPUT_PULLUP);
}
void loop() {
if (digitalRead(Buton_yak) == 0) {
Serial.write('A');
}
if (digitalRead(Buton_sondur) == 0) {
Serial.write('B');
}
}
/* Veri Alan */
/* Veri Gönderen Arduino'dan Gelen Veriye Göre
Gelen veriyi okuyup ona göre LED’i yakıp/söndürecek */
#define Led 5
void setup() {
Serial.begin(9600);
pinMode(Led, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
char gelen = Serial.read();
if (gelen == 'A') {
digitalWrite(Led, 1);
Serial.print("Led Yakıldı!\n");
}
if (gelen == 'B') {
digitalWrite(Led, 0);
Serial.print("Led Söndürüldü!\n");
}
}
}
Bağlantı Şeması