Arduino 4’lü Röle Kontrolü – Serial String Okuma

Serial monitor kullanarak yazılan komuta göre roleleri açar, kapatır veya tersini yapar. Arduino’nun rx,tx pinlerine bluetooth bağlayarak bluetooh üzerinden işlem yapabilirsiniz.

Komutlar:

  • 2 karakter röle değeri (r1,r2,r3,r4)
  • 3 karakter yapılmak istenen değer (on:devreyi tamamlar  off:devreyi açar ch:devrenin durumunun tersini alır)

örn:r1ch

//röle pinleri
int role1 = 9; 
int role2 = 10; 
int role3 = 11; 
int role4 = 12; 

int roleXDurum = 0; //tüm roleler

char gelenKarakter = "";
String olusanKarakter = ""; 

void setup() {
  // initialize serial:
  Serial.begin(9600);
  
  pinMode(role1, OUTPUT);
  pinMode(role2, OUTPUT);
  pinMode(role3, OUTPUT);
  pinMode(role4, OUTPUT);

  digitalWrite(role1, HIGH);//ledi kapar 
  digitalWrite(role2, HIGH);//ledi kapar
  digitalWrite(role3, HIGH);//ledi kapar
  digitalWrite(role4, HIGH);//ledi kapar

  //Role durumlarını set et
  roleXDurum = 0;
}

// the loop function runs over and over again forever

void loop() { 
    if(Serial.available() > 0)
    {
      olusanKarakter = Serial.readStringUntil('\n');
      Serial.println(olusanKarakter);
    } 

    if(olusanKarakter.substring(0,2) == "r1")
    {
      String isim = "Role 1";
      Serial.println(isim + " isimli role ile islem baslatildi"); 
      
      if(olusanKarakter.substring(2,4) == "on")
      { 
        ledAc(role1,isim);
      }
      if(olusanKarakter.substring(2,5) == "off")
      {
        ledKapa(role1,isim);
      }
      if(olusanKarakter.substring(2,4) == "ch")
      {
        ledDurumDegistir(role1,isim);
      }
    }
    
    if(olusanKarakter.substring(0,2) == "r2")
    {
      String isim = "Role 2";
      Serial.println(isim + " isimli role ile islem baslatildi"); 
      
      if(olusanKarakter.substring(2,4) == "on")
      { 
        ledAc(role2,isim);
      }
      if(olusanKarakter.substring(2,5) == "off")
      {
        ledKapa(role2,isim);
      }
      if(olusanKarakter.substring(2,4) == "ch")
      {
        ledDurumDegistir(role2,isim);
      }
    }
    
    if(olusanKarakter.substring(0,2) == "r3")
    {
      String isim = "Role 3";
      Serial.println(isim + " isimli role ile islem baslatildi"); 
      
      if(olusanKarakter.substring(2,4) == "on")
      { 
        ledAc(role3,isim);
      }
      if(olusanKarakter.substring(2,5) == "off")
      {
        ledKapa(role3,isim);
      }
      if(olusanKarakter.substring(2,4) == "ch")
      {
        ledDurumDegistir(role3,isim);
      }
    }
    
    if(olusanKarakter.substring(0,2) == "r4")
    {
      String isim = "Role 4";
      Serial.println(isim + " isimli role ile islem baslatildi"); 
      
      if(olusanKarakter.substring(2,4) == "on")
      { 
        ledAc(role4,isim);
      }
      if(olusanKarakter.substring(2,5) == "off")
      {
        ledKapa(role4,isim);
      }
      if(olusanKarakter.substring(2,4) == "ch")
      {
        ledDurumDegistir(role4,isim);
      }
    }

    if(olusanKarakter.substring(0,2) == "rx")
    {
      String isim = "Tum Roleler";
      Serial.println(isim + " isimli role ile islem baslatildi"); 
      
      if(olusanKarakter.substring(2,4) == "on")
      { 
        ledAc(role1,isim);
        ledAc(role2,isim);
        ledAc(role3,isim);
        ledAc(role4,isim);
        
        roleXDurum = 1; 
      }
      if(olusanKarakter.substring(2,5) == "off")
      {
        ledKapa(role1,isim);
        ledKapa(role2,isim);
        ledKapa(role3,isim);
        ledKapa(role4,isim);

        roleXDurum = 0; 
      }
      if(olusanKarakter.substring(2,4) == "ch")
      {
        if(roleXDurum == 0)
        {
          roleXDurum = 1;
          
          ledAc(role1,isim);
          ledAc(role2,isim);
          ledAc(role3,isim);
          ledAc(role4,isim); 
        }
        else
        {
          roleXDurum = 0; 
          
          ledKapa(role1,isim);
          ledKapa(role2,isim);
          ledKapa(role3,isim);
          ledKapa(role4,isim);
        }
      }
    }
    olusanKarakter="";
}

void ledAc(int port, String isim)
{
  digitalWrite(port, LOW);//ledi açar
  Serial.println(isim + " isimli Led Yakildi");
}

void ledKapa(int port, String isim)
{
  digitalWrite(port, HIGH);//ledi kapar 
  Serial.println(isim + " isimli Led Kapatildi");
}

void ledDurumDegistir(int port, String isim)
{
  int val = digitalRead(port);
  if(val==1)
  {
    ledAc(port,isim);
  }
  else
  {
    ledKapa(port,isim);
  }
}

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir