اطلاعیه

Collapse
No announcement yet.

مشکل دریافت عدد بزرگ تر از ۹ در سریال اردوینو

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

    مشکل دریافت عدد بزرگ تر از ۹ در سریال اردوینو

    سلام
    توی یه پروژه نیاز به تبادل عدد بین کامپیوتر و اردوینو دارم
    برای شروع یه کد خیلی ساده نوشتم ولی با یه مشکل عجیب روبرو شدم

    یه برنامه ساده نوشتم که یه عدد رو از پورت سریال میخونه و به تعداد عدد چشمک میزنه
    اینم سورسم


    int s, i;

    void setup(){
    Serial.began(9600);
    pinMode(13,OUTPUT);
    }

    void loop(){
    if(Serial.available()>0){
    s = Serial.read()

    for(i = 0 ; s-48 > i ; i++ ){

    digitalWrite(13,HIGH);
    delay(800);

    digitalWrite(13,LOW);
    delay(800);
    }
    }
    }
    بابت بهم ریختگی کد معذرت میخوام با گوشی نوشتم هیچ جوره درست نشد

    الان مشکل از جاییه که وقتی عدد بزرگ تر از ۹ باشه بجای خوندن کل عدد میاد رقم به رقم میخونه
    مثلا وقتی ۲۳ رو وارد میکنم بجای اینکه ۲۳ تا چشمک بزنه میاد ۵ تا چشمک میزنه یعنی یه بار ۲ رو میخونه یه بارم ۳ رو
    کسی میدونه مشکل از کجاس؟

    #2
    پاسخ : مشکل دریافت عدد بزرگ تر از ۹ در سریال اردوینو

    نوشته اصلی توسط Taher Moradi نمایش پست ها
    سلام
    توی یه پروژه نیاز به تبادل عدد بین کامپیوتر و اردوینو دارم
    برای شروع یه کد خیلی ساده نوشتم ولی با یه مشکل عجیب روبرو شدم

    یه برنامه ساده نوشتم که یه عدد رو از پورت سریال میخونه و به تعداد عدد چشمک میزنه
    اینم سورسم


    بابت بهم ریختگی کد معذرت میخوام با گوشی نوشتم هیچ جوره درست نشد

    الان مشکل از جاییه که وقتی عدد بزرگ تر از ۹ باشه بجای خوندن کل عدد میاد رقم به رقم میخونه
    مثلا وقتی ۲۳ رو وارد میکنم بجای اینکه ۲۳ تا چشمک بزنه میاد ۵ تا چشمک میزنه یعنی یه بار ۲ رو میخونه یه بارم ۳ رو
    کسی میدونه مشکل از کجاس؟
    سلام
    دلیلش خیلی سادس. وقتی شما توی ترمینال مثلا مینویسید 23، این 2 و 3 به شکل کد اسکی در میان و در قالب 2 بایت ارسال میشن. برنامه شما اول 2 رو میخونه و اجرا میکنه و بعد 3 رو میخونه و اجرا میکنه! شما باید تدبیری برای این مشکل پیش بینی کنید.

    دیدگاه


      #3
      پاسخ : مشکل دریافت عدد بزرگ تر از ۹ در سریال اردوینو

      نمیشه به صورت باینری فرستاد ؟

      ببینید من الان اعداد رو دونه دونه ضربدر ده میکنم و با عدد بعدی جمع میکنم ولی بازم مشکلاتی بوجور میاد مثلا باید تعداد ارقام هم مشخص باشه

      کسی راه حل دیگه ای برای مشکل سراغ نداره؟

      دیدگاه


        #4
        پاسخ : مشکل دریافت عدد بزرگ تر از ۹ در سریال اردوینو

        نوشته اصلی توسط Taher Moradi نمایش پست ها
        نمیشه به صورت باینری فرستاد ؟

        ببینید من الان اعداد رو دونه دونه ضربدر ده میکنم و با عدد بعدی جمع میکنم ولی بازم مشکلاتی بوجور میاد مثلا باید تعداد ارقام هم مشخص باشه

        کسی راه حل دیگه ای برای مشکل سراغ نداره؟
        خوب کافیه آخر عددتون یه کاراکتر معین قرار بدید تا برنامه متوجه بشه عدد تموم شده

        دیدگاه


          #5
          پاسخ : مشکل دریافت عدد بزرگ تر از ۹ در سریال اردوینو

          فکر میکنم اونموقع باید اعداد رو در قالب رشته فرستاد چون اگه متغیر ها به صورت intiger تعریف بشن امکان فرستادن کاراکتر وجود نخواهد داشت
          تبدیل رشته به عددم خودش یه کار مشکلیه چون فک میکنم باید با سوییچ کیس تمام کاراکترای اعداد رو به عدد تبدیل کرد

          دیدگاه


            #6
            پاسخ : مشکل دریافت عدد بزرگ تر از ۹ در سریال اردوینو

            نوشته اصلی توسط Taher Moradi نمایش پست ها
            فکر میکنم اونموقع باید اعداد رو در قالب رشته فرستاد چون اگه متغیر ها به صورت intiger تعریف بشن امکان فرستادن کاراکتر وجود نخواهد داشت
            تبدیل رشته به عددم خودش یه کار مشکلیه چون فک میکنم باید با سوییچ کیس تمام کاراکترای اعداد رو به عدد تبدیل کرد
            ببینید وقتی شما با ترمینال چیزی میفرستید به طور خودکار تبدیل به کد اسکی یا همون رشته میشه. بعضی ترمینال ها به صورت خودکار انتهای رشته رو اگر درست بگم با کدهای اسکی 0x0A و 0x0D پر میکنن که انتهای قالب داده مشخص بشه.
            سمت میکروکنترلر هم شما باید داده دریافتی رو توی یک رشته ذخیره و کاراکتر به کاراکتر بررسی و تبدیل به عدد کنید.

            دیدگاه


              #7
              پاسخ : مشکل دریافت عدد بزرگ تر از ۹ در سریال اردوینو

              سلام از این دستور استفاده کن
              X = Serial.parseInt();
              بجای X میتونی هر متغیری که دلت خواست قرار بدی

              فرستاده شده از SM-A305Fِ من با Tapatalk

              دیدگاه

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