اطلاعیه

Collapse
No announcement yet.

مشکل با دستور if

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل با دستور if

    سلام وقتتون بخیر
    از عنوان تاپیک معلمه که سوال چیه .
    لطفا به این کد توجه کنید :
    بنده یک رشته رو از جایی میگیرم . و این رشته داخل سریال مانیتور نشان داده میشه . پس تا خط Serial.println(LED); به درستی مدار کار میکنه . ولی از اون به بعد کار نمیکنه . نمیدونم چرا
    کد PHP:
    if (mySerial.available()) {
        
    String  stmySerial.readString() ;
        
    String  LED st.substring(0) ; 
       
    Serial.println(st);
       
    Serial.println("/////////////"); 
       
    Serial.println(LED);
       
    Serial.println("/////////////");  
       
    delay(20);
          if (
    st=="AFHYN5K"){digitalWrite(11,HIGH);}
          if (
    st=="68KHTM9"){digitalWrite(11,LOW);}
         if (
    Serial.available()){mySerial.write(Serial.read());}


    بنده مقادیر رشته روهر چی تغییر میدم هیچ تغییری در وضعیت led حاصل نمیشه .
    حتی خواستم قسمتی از یک رشته رو با کد substring بردارم ولی بازم کار نمیکنه .
    اصلا وارد دستور شرطی if نمیشه . (منظور if دوم و سوم برنامه هست.)
    به نظرتون مشکل از کجاست ؟
    جدیدترین ویرایش توسط plastic; ۲۳:۲۵ ۱۳۹۷/۰۱/۲۸.

    #2
    پاسخ : مشکل با دستور if

    سلام
    تابع digitalWrite(11,HIGH) چیکار میکنه ؟؟
    نمونه کدش رو بزار
    هر مشکلی هست مربوط به دستورات قبل از if دوم هست نگاه کنید ببینید کجا مشکل داره
    آرزوی سرافرازی برای ایران عزیز . . .


    دیدگاه


      #3
      پاسخ : مشکل با دستور if

      سلام
      فکر کنم رشته با عدد فرق میکنه و شما نمی تونید مستقیم اونا رو با هم مقایسه کنید و نیاز به دستوری شیه strstr ,strcmp و از اینا دارین.

      دیدگاه


        #4
        پاسخ : مشکل با دستور if

        درود . این دو استرینگ باهم فرق میکنند . دستور serial read به صورت بایت میخونه . راهکار اینه که بیاید به صورت یک آرایه ای از کاراکتر ها بخونید . به این صورت :
        کد:
         
            while (Serial.available()) {
            char c = Serial.read();
            readString += c;
            }
        و یا به روش دیگه عمل کنید که در این حالت اگر end line سریال مانیتور رو روی Both NL & CR قرار بدید کد زیر عملی خواهد بود .

        کد:
        void setup() {
          Serial.begin(9600);
          pinMode(13,OUTPUT);
        }
        
        
        
        
        void loop() {
          
           if (Serial.available()) {
           String  str= Serial.readString() ;
        
        
        
        
           if(str.substring(0) == "AFHYN5K\r\n"){ digitalWrite(13,HIGH);} 
           if(str.substring(0) == "68KHTM9\r\n"){ digitalWrite(13, LOW);}
           
           Serial.println(str);     
        }
        }

        دیدگاه

        لطفا صبر کنید...
        X