Çok basit - Serialdan aldığım byte değerini birleştirme

Başlatan veliusta, 27 Mart 2015, 20:00:29

veliusta

#include <SoftwareSerial.h>
SoftwareSerial myBluetooth(10, 16);

byte KIRMIZI;
byte YESIL;
byte MAVI;

void setup(){
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(9, OUTPUT);
  Serial.begin(9600);
  myBluetooth.begin(9600);
}

void loop(){
 if(myBluetooth.available()){
   if(myBluetooth.read()=='K'){
    

  analogWrite(5, KIRMIZI);
  analogWrite(6, YESIL);
  analogWrite(9, MAVI);
  }
 }
}


Serialdan tek tek veriler alıyorum. K geldikten sonra 0-255 arası sayı gelebilir bu gelen sayıyı byte KIRMIZI; aktarsın. aynı şekilde diğer renklerde bu şekilde geliyor.
Rica etsem yaparmısınız?


Kabil ATICI

#include <SoftwareSerial.h>
SoftwareSerial myBluetooth(10, 16);

byte KIRMIZI;
byte YESIL;
byte MAVI;
int gelenler[16];
byte D_kirmizi = 0;
byte D_yesil = 0;
byte D_mavi = 0;
int islem = 0;
int gelen_say = 0;
int v_gel = 0;

void setup() {
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(9, OUTPUT);
  Serial.begin(9600);
  myBluetooth.begin(9600);
}
//burada en son veriden sonra 'S' geldiğini kabul ediyoruz.
//Bunu göndermen gerekecek veya kendin düzenlemen
void loop() {
  if (myBluetooth.available()) {
    int veri = 0;
    veri = myBluetooth.read();
    if (veri == 'S') //en son bunun geldiğini kabul ediyoruz.
    {
      byte deger = 0;
      v_gel = 0;
      islem = 1;
      for (int i; i < gelen_say; i++)
      {
        if (deger == 3)
        {
          gelenler[i] -= 0x30;// gelen verinin türünden emin
         // değilim oyüzden bu satırların silinmesi gerekesilir
          if ( D_mavi < 10)
            D_mavi = gelenler[i];
          else if ( D_mavi < 100)
            D_mavi = (D_mavi * 10) + gelenler[i];
          else
            D_mavi = (D_mavi * 10) + gelenler[i];
        }

        if (gelenler[i] == 'M')
        { deger = 3;
        }
        if (deger == 2)
        {
          gelenler[i] -= 0x30;// gelen verinin türünden emin
         // değilim oyüzden bu satırların silinmesi gerekesilir
          if ( D_yesil < 10)

            D_yesil = gelenler[i];
          else if ( D_yesil < 100)
            D_yesil = (D_yesil * 10) + gelenler[i];
          else
            D_yesil = (D_yesil * 10) + gelenler[i];
        }
        if (gelenler[i] == 'Y')
        { deger = 2;
        }
        if (deger == 1)
        {
          gelenler[i] -= 0x30;// gelen verinin türünden emin
         // değilim oyüzden bu satırların silinmesi gerekesilir
          if ( D_kirmizi < 10)
            D_kirmizi = gelenler[i];
          else if ( D_kirmizi < 100)
            D_kirmizi = (D_kirmizi * 10) + gelenler[i];
          else
            D_kirmizi = (D_kirmizi * 10) + gelenler[i];
        }
        if (gelenler[i] == 'K')
        { deger = 1;
          D_kirmizi = 0;
        }
      }
    }
    if (veri == 'K') {
      gelen_say = 0;
      v_gel = 0;
    }
    if (v_gel == 1)
    {
      gelenler[gelen_say] = veri;
      gelen_say++;
    }

    if (islem == 1) {
      islem = 0;
      analogWrite(D_kirmizi, KIRMIZI);
      analogWrite(D_yesil, YESIL);
      analogWrite(D_mavi, MAVI);
    }
  }
}


dediğin kadar basit olmadığını biliyoruz.
çalışır çalışmaz, denemedim.
ambar7

veliusta

Kabil abi başka birisi yapmıştı. Sandığım kadar kolay değilmiş. Yinede Teşekkür ederim.
http://forum.arduino.cc/index.php?topic=311660.0