İki Arduino Uno arasında uart iletişim (rx-tx pinleri arasında) LED yakma

Bu çalışmada uart bağlantısı ile arduino uno üzerinden, başka bir arduino uno'ya veri gönderip, led yakıp söndürme yapacağız.

Birinci arduino uno'yu ana (master), ikinci uno'yu da köle (slave) olarak ayarlayacağız.

ANA ARDUINO

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10,11); // RX, TX pinleri (10 ve 11)
//DİKKAT ANA arduino'da 0 ve 1 pinlerini kullandığımda problem yaşanıyor. mesaj gönderilemiyor.
//BUNUN için 10 ve 11 nolu pinler kullanıldı
//belki sorun 13 nolu pinde led olduğu için olabilir. çünkü karşıdaki köle arduino 13. pini
//veri alışverişinde yakıp söndürmek için kullandığından olabilir.

void setup() {
  Serial.begin(9600); // Bilgisayar ile iletişim
  mySerial.begin(9600); // Köle Arduino ile iletişim
  Serial.println("LED kontrolü için '1' veya '0' yazın.");
}
void loop() {
  // Kullanıcıdan mesaj al
  if (Serial.available()) {
    String kullaniciMesaji = Serial.readStringUntil('\n');
    Serial.println("Gönderilen mesaj: " + kullaniciMesaji);
    mySerial.println(kullaniciMesaji); // Mesajı Köle Arduino'ya gönder
  }
  // Köleden gelen mesajları kontrol et (isteğe bağlı)
  if (mySerial.available()) {
    String gelenCevap = mySerial.readStringUntil('\n');
    Serial.println("Köleden gelen cevap: " + gelenCevap);
  }
}
-------------------------------------------
SLAVE ARDUINO

void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
}
//ana arduinodan "ON" gönderiyorum. Köle arduino gelen mesaj olarak "ON" okuyor.
//Ancak yinede de "bilinmeyen komut" mesajı veriyor. ledi yakmıyor.
//bu ise "veri karşılaştırma kısmında bir hata olduğunu gösterir."
//bunu önlemek için Serial.readString() kullandım.
//(önceden kullandığım Serial.read() tek bir karakter okuyordu)
void loop() {
  if (Serial.available() > 0) {
    String receivedData = Serial.readString();
    // Tüm mesajı oku //DİKKAT readString kullanmak gerekiyor.
    receivedData.trim(); // Boşluk ve \n karakterlerini temizle

    if (receivedData == "1") {
      digitalWrite(13, HIGH);
      Serial.println("LED YAKILDI");
    }
    else if (receivedData == "0") {
      digitalWrite(13, LOW);
      Serial.println("LED SÖNDÜRÜLDÜ");
    }
    else {
      Serial.println("BİLİNMEYEN KOMUT: " + receivedData);
    }
  }
}


Bu blogdaki popüler yayınlar

Raspberry Pi 5 ile Arduino Uno arasında UART (rx-tx) iletişimi