صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از 1 به 10 از 19
Like Tree9 لایک

موضوع: مشکل در ارتباطات رادیویی با اردوینو !!!

  1. #1
    Senior Member
    تاریخ عضویت
    Nov 2014
    نوشته ها
    255

    مشکل در ارتباطات رادیویی با اردوینو !!!

    با سلام خدمت همه دوستان
    من با هر ماژول رادیویی که میخوام کار کنم (یبار سیم 800 . حالا هم rf315) عین هردوبار به یه مشکل خوردم. حتی من الان واسه RF کد خود کتابخونه رو پروگرام میکنم این مشکل وجود داره. مشکل اینه که تا پروگرام میشه دستگاه میوفته توو یه حلقه و مدام اون دستورات رو اجرا میکنه . حالا سیم 800 رو بیخیال شدم فعلا ولی این یکی خیلی کارم گیره. نمیدونم دلیلش چیه . دوتا اردوینو نانو با یه ماژول گیرنده و یک ماژول فرستنده 315 دارم. هر کدوم رو جدا جدا پروگرام کردم . با کد پیشفرض کتابخونه virtual wire ولی وقتی وصل هستن مدام توو گیرنده دستور اجرا میشه ( میوفته توو حلقه) و مشکل هم از فرستندس چون وقتی فرستنده رو قطع میکنم قطع میکنه . یه جورایی یعنی فرستنده مدام در حال ارسال کده . یعنی مشکل از کده ؟ کد پیشفرض کتابخونه ؟ دو سه تا کد دیگه هم پیدا کردم ولی اونا هم همین مشکل رو داشتن .
    کد فرستنده این هست :
    #include <VirtualWire.h>

    void setup()
    {
    Serial.begin(9600); // Debugging only
    Serial.println("setup");

    // Initialise the IO and ISR
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000); // Bits per sec
    }

    void loop()
    {
    const char *msg = "hello";

    digitalWrite(13, true); // Flash a light to show transmitting
    vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(13, false);
    delay(2000);
    }

  2. #2
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,806
    الان برای من یه سوال پیش میاد وضعیت led شماره 13 روی فرستنده به چه صورته ؟
    اگه درست بخواد کار کنه باید دوثانیه خاموش باشه موقع ارسال یه چشمک بزنه و تمام.

    کد این دوستمون رو هم چک کنید
    اضافاتشو پاک کنید.
    مشکل در کد نویسی فرستنده گیرنده h3v3e-h34b
    لایک کردن

  3. #3
    Senior Member
    تاریخ عضویت
    Nov 2014
    نوشته ها
    255
    سلام مهندس فکر کنم مشکل رو پیدا کردم . خب داخل void loop من این رو نوشتم . مسلما هربار تکرار میکنه و کد رو میفرسته .کد رو بردمش توو void setup دیگه تکرار نکرد و با هر ریست یکبار کد رو میفرسته. حالا چیزی که برام سواله اگه من بخوام رو یه پایه کلید بذارم که هروفت اون پایه 1 بشه کد رو بفرسته اینو چکار کنم ؟
    این کد جواب نمیده :
    #include <VirtualWire.h>
    int key = 3;
    void setup()
    {
    Serial.begin(9600); // Debugging only
    Serial.println("setup");

    // Initialise the IO and ISR
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000); // Bits per sec
    pinMode(key,INPUT);

    }

    void loop()
    {
    while (key==HIGH){
    const char *msg = "hello";
    digitalWrite(13, true); // Flash a light to show transmitting
    vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(13, false);
    Serial.println("send code");
    delay(100);

    }

  4. #4
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,806
    نقل قول نوشته اصلی توسط feredy2011 نمایش پست ها
    سلام مهندس فکر کنم مشکل رو پیدا کردم . خب داخل void loop من این رو نوشتم . مسلما هربار تکرار میکنه و کد رو میفرسته .کد رو بردمش توو void setup دیگه تکرار نکرد و با هر ریست یکبار کد رو میفرسته. حالا چیزی که برام سواله اگه من بخوام رو یه پایه کلید بذارم که هروفت اون پایه 1 بشه کد رو بفرسته اینو چکار کنم ؟
    این کد جواب نمیده :
    #include <VirtualWire.h>
    int key = 3;
    void setup()
    {
    Serial.begin(9600); // Debugging only
    Serial.println("setup");

    // Initialise the IO and ISR
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000); // Bits per sec
    pinMode(key,INPUT);

    }

    void loop()
    {
    while (key==HIGH){
    const char *msg = "hello";
    digitalWrite(13, true); // Flash a light to show transmitting
    vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(13, false);
    Serial.println("send code");
    delay(100);

    }
    کد قبلیتون هم نباید مشکلی به هم میزد چرا که انتهای لوپ دو ثانیه توقف داشتید.
    با همون کد قبلی اول جواب بگیرید بعد برید سراغ کلید

    لطفا کد قبلی رو آپلود کنید و وضعیت ال ای دی شماره 13 رو به من بگید
    لایک کردن

  5. #5
    Senior Member
    تاریخ عضویت
    Nov 2014
    نوشته ها
    255
    هر دو ثانیه یکبار ال ای دی چشمک میزنه و کد رو هم هر دو ثانیه یکبار ارسال میکنه

  6. #6
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,806
    نقل قول نوشته اصلی توسط feredy2011 نمایش پست ها
    هر دو ثانیه یکبار ال ای دی چشمک میزنه و کد رو هم هر دو ثانیه یکبار ارسال میکنه
    اگر میبیند که led بدون هیچ مشکلی داره مطایق با کد کار می کنه بنابراین کد سمت فرستنده نیست که مشکل داره
    باید سمت گیرنده رو چک کنیم

    کد سمت گیرنده رو برام بفرستید لطفا
    لایک کردن

  7. #7
    Senior Member
    تاریخ عضویت
    Nov 2014
    نوشته ها
    255
    سلام مهندس . اون مشکل حل شد .
    حالا یه سوال . من اگه بخوام از سمت فرستنده دوتا کد استفاده کنم یعنی مثلا hello1 وقتی ارسال میشه رله آن بشه . hello2 رو بفرستم رله غیر فعال بشه ....
    چکار باید بکنم ؟

  8. #8
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,806
    نقل قول نوشته اصلی توسط feredy2011 نمایش پست ها
    سلام مهندس . اون مشکل حل شد .
    حالا یه سوال . من اگه بخوام از سمت فرستنده دوتا کد استفاده کنم یعنی مثلا hello1 وقتی ارسال میشه رله آن بشه . hello2 رو بفرستم رله غیر فعال بشه ....
    چکار باید بکنم ؟
    باید توی کد سمت گیرندت دست ببری
    همونجایی که داره داده رو دریافت می کنه یه if می نویسی
    کد:
    if(Reciveddata=="hello1"){}
    if(Reciveddata=="hello2"){}
    ای وسط فقط یه نکته می مونه
    این که سمت گیرنده متغیر دریافتی از چه نوعی تعریف شده
    string
    int
    char

    بر اساس هر گدوم از اینها که بود سمت فرستنده باید داده درست بفرستی
    لایک کردن

  9. #9
    Senior Member
    تاریخ عضویت
    Nov 2014
    نوشته ها
    255
    مهندس این کد گیرنده :
    #include <VirtualWire.h>
    void setup()
    {
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start();
    }
    void loop()
    {
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen))
    {
    digitalWrite(13, true);
    }


    این کد فرستنده :
    #include <VirtualWire.h>
    void setup()
    {
    vw_set_ptt_inverted(true);
    vw_setup(2000);


    }

    void loop()
    {
    const char *msg = "hello";
    digitalWrite(13, true);
    vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx();
    digitalWrite(13, false);
    }

    من یکم سر در نمیارم از بحث اشاره گر ....
    این سه خط از گیرنده رو نمیفهمم :

    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen))

    این دو خط از فرستنده :
    const char *msg = "hello";
    vw_send((uint8_t *)msg, strlen(msg));
    واسه همین نمیدونم دوتا کد مجزا رو چطوری بفرستم ...
    ممنون

  10. #10
    Senior Member
    تاریخ عضویت
    Nov 2014
    نوشته ها
    255
    این کار سمت فرستنده درست و منطقی هست ؟
    int input1 = digitalRead(key1);
    if (input1 == HIGH )
    {
    const char *msg1 = "reza1";
    digitalWrite(led, true);
    Serial.println("send reza1");
    vw_send((uint8_t *)msg1, strlen(msg1));
    vw_wait_tx();
    delay(100);
    digitalWrite(led, false);
    delay(2000);
    }

    int input2 = digitalRead(key2);
    if (input2 == HIGH )
    {
    const char *msg2 = "reza2";
    digitalWrite(led, true);
    Serial.println("send reza2");
    vw_send((uint8_t *)msg2, strlen(msg2));
    vw_wait_tx();
    delay(100);
    digitalWrite(led, false);
    delay(2000);

    حالا سمت گیرنده نمیدونم چکار باید بکنم !؟

صفحه 1 از 2 12 آخرینآخرین

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO