atoi ve .toint() gibi string to int komutlarında arduino hata veriyor.
  • serialdan okunan string verileri int değiştirmem gerekir. forumda atoi ve .toint() komutlarına rastadım fakat programda yazdığımda ilgili satırda hata veriyor. Acaba header mı üklemem lazım öyle ise header nerden bulurum. teşekkürler.
  • o komutlar standart c.lib de var birde şu orneklere bakıp uygun olanı kullanın http://electronics.stackexchange.com/questions/38845/arduino-serial-read-to-int
  • Bu örneğe göz atmıştım fakat anlayamadım açıkçası.Denedim ama bu programda da sb.sendColour kodu için hata veriyor acaba kullandığım arduino sürümünde mi bir sorun var hiç bir komutu algılamıyor.

    ben şöyle bir program yazdım.

    char a[5];
    int gelenDeger;
    int i=0;
    void setup () {
    Serial.begin(9600);
    pinMode(7,OUTPUT);
    }
    void loop () {
    if (Serial.available() > 0) {
    gelenDeger=Serial.read();
    a[i]=gelenDeger;
    Serial.println(a[i]);
    delay(1000);
    i++;
    }
    //if(a[3]=='7') aşağıdaki satırı bu şekilde yazdığımda çalışıyor. çünkü string veri geliyor
    // fakat ben gelen değeri int olarak kullanmak istiyorum.
    // bunun için atoi yada .toint() komutlarını kullandım fakat hata veriyor.
    if(a[3]==7)
    {
    digitalWrite(7,1);
    }
    }

    yapmak istediğim şey kısaca şöyle bişey PC de C# ile yazdığım bir arayüzden bir int dizinin elemanlarını serialden arduinoya göndermek ve arduinonun içerisinde bunu yine bir int diziye aktarmak. fakat bu zmana kadar int olarak yaptıklarım çalışmadı. string gönderip arduinoda int e çevirmek istedim fakat yukarıda belirttiğim hata ile karşılaştım.
  • int i = a[3] deneyebilir misin?
  • bu konu senelerdir öylece duruyor muydu yani? pes.
    ascii a[3]'ü, int i'ye atarsanız sonuç 0 ila 255 arasında olan bir değer atayacaktır.

    yani 2 sayısı ascii tablosunda dec 50'ye denk gelir. Siz 50 sayısını değil 2 sayısını istiyorsanız toInt() astoi. gibi kavramları kullanamaya çalışırsınız. arduino IDE'de bu iki fonksiyon da çalışmıyor. en azından ben beceremedim.
    Kısacası.
    siz Serial.read() ile okudğunuz string bir veriyi int olarak kullanamazsınız.
    bunun yerine fonksiyonsuz bir çözüm isterseniz;

    int r1 = Serial.read() - 48;
    ya da
    int r1 = Serial.read() - '0';
  • String MyString="ABCD123EFG";
    int MyVal=0;

    MyVal=MyString.substring(4,7)).toInt();

    // MyVal >>123 olacaktır.

    IDE V1.8.2 Çalışmakta..
    Saygılar..


Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook

Tagged

Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.