اطلاعیه

Collapse
No announcement yet.

[پروژه] پروژه کامل ریموت 4 کاناله رادیویی ASK لرنینگ

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

    #61
    پاسخ : پروژه کامل ریموت 4 کاناله رادیویی ASK لرنینگ

    نوشته اصلی توسط purealone
    کار شستی زمین کردن پایه 18 هست دیگه؟
    آخه من از یه سویچ 2 پایه استفاده کردم
    پایه های 2و3و4و5 و زمین توی یه قطعه ای اومدن توی pcb که شما گذاشتین
    این قطعه چیه؟کارش چیه؟
    آخه من فکر کردم برای پروگرام کردن از روی برده و نزاشتمش
    الان هم وقتی شستی رو فشار میدم هیچ اتفاقی نمی افته
    حتی چند ثانیه ای هم نگه میدارم اما بازم چشمک ال ای دی همون 3 ثانیه هست
    با سلام و شرمنده که کمی دیر کردم در دادن پاسخ چند روزه نتونستم بیام نت
    دوست من بله کار این شستی همینه که میفرمایید زمین کردن پایه 18
    اون قطعه ای هم که میفرمایید یه پین هدر هست و کارش تست عمل کرد ریموت هست با زمین کردن هر یک از پایه های فوق میتونید عمل کرد هریک از کلید های روی ریموت رو بدون لرن کردن ببینید و فقط جنبه تست داره
    در مورد کلید هم باید بگم حتما برد شما بازهم مشکل داره که مانع کارکرد درست مدار میشه

    کلید لرن سه حالت داره
    1 - حالت اول اینکه با فشار و نگه داشتن این کلید تا سرعت led یک مرحله زیاد بشه
    این مرحله برای لرن ریموت هست و بعد از رفتن به این حالت باید یکی از کلیدهای ریموت رو نگه دارید تا ریموت لرن بشه در صورتی که ریموت لرن بشه برد صریعا از این حالت خارج شده و به حالت عادی برمیگرده

    2 - حالت دوم اینکه کلید لرن رو بیشتر از حالت اول نگه دارید تا سرعت led بعد از رفتن به حالت یک به حالت سرعتر از حالت اول بره
    این مرحله برای پاک کردن یک ریموت به کار میره در این حالت هم مثل مرحله قبل باید یکی از کلید های ریموت رو نگه دارید تا برد بعد از شناسایی ریموت اون رو از لیست ریموت ها پاک کنه

    3 - حالت سوم اینکه کلید رو به قدری نگه دارید تا بعد ار رد شدن از مرحله های اول و دوم led ثابت روشن بمونه
    این مرحله برای پاک کردن همه ریموت ها به کار میره توجه کنید که در این مرحله دیگه نیازی به زدن کلید ریموت نیست و به محض ورود به این مرحله همه ریموتها پاک خواهد شد و بعد از پایان خود به خود از این مرحله خارج و به حالت عادی میره

    !!! یه نکته رو باید بگم و اون اینه که در مرحله های اول و دوم اگر بعد از ورود به این مراحل کلید ریموت زده نشه یا ماژول دیتای درستی به میکرو نده بعد از حدود 30 ثانیه LED دوباره به حالت عادی خواهد رفت و از این حالت خارج خواهد شد زمان لرن شدن حدود 2 ثانیه هست یعنی بعد از ورود به مرحله های اول یا دوم و زدن کلید ریموت فقط 2 ثانیه بعد برد باید از مرحله فوق خارج بشه در غیر این صورت باید دنبال مشکل باشید

    اما در مورد جمله اخر باید بگم فکر کنم شما فرکانس میکرو رو روی 8 مگا هرتز تنظیم نکردید لطفا دوباره چک کنید
    به همین سادگی:nice:
    تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
    به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

    دیدگاه


      #62
      پاسخ : پروژه کامل ریموت 4 کاناله رادیویی ASK لرنینگ

      نوشته اصلی توسط m410
      سلام اقا من میخوام این پروژه رو با ارم انجام بدم .... :agree: سوال اول اینکه این اگوریتمی که گفتینو تماما باید در وقفه انجام بدم ؟
      :question:
      حالا چرا ARM فکر نمیکنید ARM برای این پروژه کمی بزرگه :eek:
      نه دوست من در مورد الگوریتمی که بنده توضیح دادم دیگه نیازی به وقفه خارجی نیست
      بلکه خود بنده هم این کار رو در اینتراپت کامپاراتور تایمر 0 انجام دادم این در حالی هست که کامپراتور با پریود 10 کیلو هرتز تنظیم شده

      به همین سادگی :nice:
      تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
      به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

      دیدگاه


        #63
        پاسخ : پروژه کامل ریموت 4 کاناله رادیویی ASK لرنینگ

        با سلام دوباره
        این فایل هگز ورژن دو هست البته با الگوریتم توضیح داده شده هست با عرض پوزش چون مقدور نبود نتونستم سورسشو در اختیار دوستان قرار بدم

        http://s1.picofile.com/file/7196542361/REMOUT_T2313_V2.hex.html

        البته لازم به توضیحه که نیازی به تغییر در سخت افزار نداره
        امیدوارم کافی باشه

        به همین سادگی:nice:
        تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
        به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

        دیدگاه


          #64
          پاسخ : پروژه کامل ریموت 4 کاناله رادیویی ASK لرنینگ

          نوشته اصلی توسط POLESTAR
          با سلام و شرمنده که کمی دیر کردم در دادن پاسخ چند روزه نتونستم بیام نت
          دوست من بله کار این شستی همینه که میفرمایید زمین کردن پایه 18
          اون قطعه ای هم که میفرمایید یه پین هدر هست و کارش تست عمل کرد ریموت هست با زمین کردن هر یک از پایه های فوق میتونید عمل کرد هریک از کلید های روی ریموت رو بدون لرن کردن ببینید و فقط جنبه تست داره
          در مورد کلید هم باید بگم حتما برد شما بازهم مشکل داره که مانع کارکرد درست مدار میشه

          کلید لرن سه حالت داره
          1 - حالت اول اینکه با فشار و نگه داشتن این کلید تا سرعت led یک مرحله زیاد بشه
          این مرحله برای لرن ریموت هست و بعد از رفتن به این حالت باید یکی از کلیدهای ریموت رو نگه دارید تا ریموت لرن بشه در صورتی که ریموت لرن بشه برد صریعا از این حالت خارج شده و به حالت عادی برمیگرده

          2 - حالت دوم اینکه کلید لرن رو بیشتر از حالت اول نگه دارید تا سرعت led بعد از رفتن به حالت یک به حالت سرعتر از حالت اول بره
          این مرحله برای پاک کردن یک ریموت به کار میره در این حالت هم مثل مرحله قبل باید یکی از کلید های ریموت رو نگه دارید تا برد بعد از شناسایی ریموت اون رو از لیست ریموت ها پاک کنه

          3 - حالت سوم اینکه کلید رو به قدری نگه دارید تا بعد ار رد شدن از مرحله های اول و دوم led ثابت روشن بمونه
          این مرحله برای پاک کردن همه ریموت ها به کار میره توجه کنید که در این مرحله دیگه نیازی به زدن کلید ریموت نیست و به محض ورود به این مرحله همه ریموتها پاک خواهد شد و بعد از پایان خود به خود از این مرحله خارج و به حالت عادی میره

          !!! یه نکته رو باید بگم و اون اینه که در مرحله های اول و دوم اگر بعد از ورود به این مراحل کلید ریموت زده نشه یا ماژول دیتای درستی به میکرو نده بعد از حدود 30 ثانیه LED دوباره به حالت عادی خواهد رفت و از این حالت خارج خواهد شد زمان لرن شدن حدود 2 ثانیه هست یعنی بعد از ورود به مرحله های اول یا دوم و زدن کلید ریموت فقط 2 ثانیه بعد برد باید از مرحله فوق خارج بشه در غیر این صورت باید دنبال مشکل باشید

          اما در مورد جمله اخر باید بگم فکر کنم شما فرکانس میکرو رو روی 8 مگا هرتز تنظیم نکردید لطفا دوباره چک کنید
          به همین سادگی:nice:
          ممنون از اینکه برای کاربران ارزش قائل هستید
          چجوری باید میکرو روی 8 مگا هرتز تنظیم کنم؟
          من از پروگرامر هاتل استفاده میکنم


          از قسمت buffer گزینه load buffer (flash buffer فایل هگز برنامه رو انتخاب میکنم و auto program رو میزنم
          نحوه عملکرد و برنامه ریزیم درسته ؟
          اگه درست نیست ممنون میشم با توجه با عکس هایی که از نرم افزار این پروگرامر گذاشتم بهم یاد بدین.

          دیدگاه


            #65
            پاسخ : پروژه کامل ریموت 4 کاناله رادیویی ASK لرنینگ

            چون توی pcb شما رله 5 پین نبود مجبور شدم خودم شماتیک مدار رو توی پروتئوس بکشم و pcb جدید درست کنم
            اینم لینکش http://keyvan0511.persiangig.com/LERN.zip
            pcb که خودم کشیدم رو چاپ کردم و مدار رو بستم
            اگه میشه یه نگاهی بهش بندازین ببینین شاید من توی کشیدن pcb جایی رو اشتباه کردم
            به شماتیک و قطعاتی هم که استفاده کردم یه نگاهی بندازین.البته توی شماتیک از ترانزیستور های bc547 استفاده
            شده ولی توی مداری که بستم bc337 گذاشتم
            و یه نکته مهم:من از یه آدابتور dc برای تغذیه dc استفاده کردم که روش نوشته 12v dc اما وقتی با ولت متر اندازه میگیرم 18.95 نشون میده.این مشکلی ایجاد نمیکنه ؟

            دیدگاه


              #66
              پاسخ : پروژه کامل ریموت 4 کاناله رادیویی ASK لرنینگ

              نوشته اصلی توسط جعفر رضائی
              این ماژل ها وقتی هیچ چیزی دریافت نمیکنن شروع میکنن به تولید پالس های بیخودی که در این شرایط اگر نیاز باشه از اینتراپت میکرو استفاده کنیم کار میکرو رو مخطل میکنه .شما پیشنهادی برای برطرف کردن این مشکل دارین؟؟؟؟
              این نویز ها اصلا مهم نیستند چون میشه براحتی با چک کردن بیت استارت و به صورت نرم افزاری انها رو از بین برد...در نظر داشته باشید که هنگام ارصال کده اصلی هیچ نوزی نداریم...خیالتون تخت من با اسکوپ چک کردم....

              :rolleyes:

              دیدگاه


                #67
                پاسخ : پروژه کامل ریموت 4 کاناله رادیویی ASK لرنینگ

                نوشته اصلی توسط purealone
                چون توی pcb شما رله 5 پین نبود مجبور شدم خودم شماتیک مدار رو توی پروتئوس بکشم و pcb جدید درست کنم
                اینم لینکش http://keyvan0511.persiangig.com/LERN.zip
                pcb که خودم کشیدم رو چاپ کردم و مدار رو بستم
                اگه میشه یه نگاهی بهش بندازین ببینین شاید من توی کشیدن pcb جایی رو اشتباه کردم
                به شماتیک و قطعاتی هم که استفاده کردم یه نگاهی بندازین.البته توی شماتیک از ترانزیستور های bc547 استفاده
                شده ولی توی مداری که بستم bc337 گذاشتم
                و یه نکته مهم:من از یه آدابتور dc برای تغذیه dc استفاده کردم که روش نوشته 12v dc اما وقتی با ولت متر اندازه میگیرم 18.95 نشون میده.این مشکلی ایجاد نمیکنه ؟
                با سلام
                نه دوست من در pcb مشکلی ندارید
                همان طوری که قبلا هم عرض کردم مشکل شما در تنظیم فیوز بیتهای کلاک هست
                و باید LOW byte فیوز بیت های شما عدد 0XE4 تنظیم بشه
                یعنی فیوز CKDIV8 غیر فعال یا یک باشه
                و فیوز CKOUT غیر فعال یا یک باشه
                و فیوز SUT1 غیر فعال یا یک باشه
                و فیوز SUT0 فعال یا صفر باشه
                و فیوز CKSEL3 فعال یا صفر باشه
                و فیوز CKSEL2 غیر فعال یا یک باشه
                و فیوز CKSEL1 فعال یا صفر باشه
                و فیوز CKSEL0 فعال یا صفر باشه

                به همین سادگی :nice:
                تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
                به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

                دیدگاه


                  #68
                  پاسخ : پروژه کامل ریموت 4 کاناله رادیویی ASK لرنینگ

                  نوشته اصلی توسط POLESTAR
                  با سلام
                  نه دوست من در pcb مشکلی ندارید
                  همان طوری که قبلا هم عرض کردم مشکل شما در تنظیم فیوز بیتهای کلاک هست
                  و باید LOW byte فیوز بیت های شما عدد 0XE4 تنظیم بشه
                  یعنی فیوز CKDIV8 غیر فعال یا یک باشه
                  و فیوز CKOUT غیر فعال یا یک باشه
                  و فیوز SUT1 غیر فعال یا یک باشه
                  و فیوز SUT0 فعال یا صفر باشه
                  و فیوز CKSEL3 فعال یا صفر باشه
                  و فیوز CKSEL2 غیر فعال یا یک باشه
                  و فیوز CKSEL1 فعال یا صفر باشه
                  و فیوز CKSEL0 فعال یا صفر باشه

                  به همین سادگی :nice:
                  ممنون از اینکه مداری که کشیدمو چک کردین.آخه میترسیدم اشکال از مداری که کشیدم باشه.
                  برای اطمینان بیشتر مراحل کاری رو تصویری گذاشتم




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

                  دیدگاه


                    #69
                    پاسخ : پروژه کامل ریموت 4 کاناله رادیویی ASK لرنینگ

                    دوستانی که میخواند برنامه رو خودشون بنویسند بهترین حالتش اینه که یکی از تایمر ها رو رو 38 کیلو هرتز تنظیم کنند :job: و ورودیم تو وقفه چک کنن و تویه همون وقفه بیت استارت رو چک کنند و در همونجا اگه بیت استارت امد 0 و 1 ها رو بدست بیاریید.. ..اگه مشکلی بود یا ما در خدمتیم...

                    دیدگاه


                      #70
                      پاسخ : پروژه کامل ریموت 4 کاناله رادیویی ASK لرنینگ

                      سلام مهندس جان
                      ببخشید می خوام از برنامه تون با اجازتون یه استفاده تجاری بکنم اگه راضی هستید ؟

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

                      من یه چیزایی به برنامه اضافه کردم (فقط برای اینکه یه خورده فانتزی اش کنم یه سگمنت هم گزاشتم ) مدار رو روی برد بورد بستم اما بورد مدار 10 متر هم دیگه نیست به نظرتون دلیلش برمیگرده به شکل برنامه ؟
                      این برنامه هست :

                      کد:
                      /*****************************************************
                      Project : REMOUT mega16
                      Version : v1.1
                      Date  : 2/18/2010
                      Author : Hadi Asadi
                      Company : Polestar
                      Chip type        : Atmega16
                      AVR Core Clock frequency: 8.000000 MHz
                      Memory model      : Tiny
                      External RAM size    : 0
                      Data Stack size     : 20
                      *****************************************************/
                      
                      #include <ioavr.h>
                      #include "delay.h"
                      #include "stdbool.h"
                      
                      #define set(port,pin)      port |= (1<<pin)
                      #define reset(port,pin)     port &= ~(1<<pin)
                      #define invert(port,pin)    port ^= (1<<pin)
                      #define n_eeprom        40
                      
                      #define RF_in         (PIND&(1<<PIND2))
                      #define KEY          (PIND&(1<<PIND0))
                      #define DIP1          (PIND&(1<<PIND5))
                      
                      #define LED           PORTD
                      #define LED_PIN         PORTD1
                      #define OUT1          PORTB
                      #define OUT1_PIN        PORTB0
                      #define OUT2          PORTB
                      #define OUT2_PIN        PORTB1
                      #define OUT3          PORTB
                      #define OUT3_PIN        PORTB2
                      #define OUT4          PORTB
                      #define OUT4_PIN        PORTB3
                      
                      #define DATA          PORTA
                      #define SEG_OFF         PORTD|=(1<<PD6);
                      #define SEG_ON         PORTD&=~(1<<PD6);
                      
                      bool      f_read,f_write,f_set,f_on_erase,f_all_erase,f_remut,f_ok,f_learn;
                      char      us,index,d_crc,x_remut,d_time;
                      char      d_in[4],crc_in[4];
                      int       d_clar,d_key,remut,d_led,clar_kay,i;
                      
                      __eeprom char   e_n_remut=0,e_d_ee[n_eeprom][3];
                      
                      __flash unsigned char num[14]=/* FOR C.A. 7Segment on my board : */
                      {/* 0   1   2   3   4   5   6   7   8   9    O   n   f   =  */
                       0X11 , 0XD7 , 0X32 , 0X92 , 0XD4 , 0X98 , 0X18 , 0XD3 , 0X10 , 0X90 , 0X1E , 0X5E , 0X78 , 0XBE };
                      
                       #pragma vector= INT0_vect 
                      __interrupt void EXT_INT0(void)
                          {
                          reset(GICR,6);
                          TIMSK = 0x12;
                          index ++;
                          us = 0;
                          }
                      #pragma vector= TIMER0_COMP_vect
                      __interrupt void TIMER0_COMP(void)
                          {
                          if(RF_in)
                              {
                              if(index == 20) 
                                  {
                                  f_read = 1;
                                  if(!d_crc)
                                      {
                                      crc_in[0] = d_in[0];
                                      crc_in[1] = d_in[1];
                                      crc_in[2] = d_in[2];
                                      crc_in[3] = d_in[3];
                                      }
                                  } 
                              if(us > 99)
                                  index = 0;
                              else if(us > 6 && us < 50)
                                  {
                                  if(index < 9)
                                      reset(d_in[0],7-(index-1));
                                  else if(index < 17) 
                                      reset(d_in[1],7-(index-9));
                                  else if(index < 21)
                                      reset(d_in[2],7-(index-17));
                                  else
                                      reset(d_in[3],7-(index-17));
                                  }
                              else if(us <= 6)
                                  {
                                  if(index < 9)
                                      set(d_in[0],7-(index-1));
                                  else if(index < 17) 
                                      set(d_in[1],7-(index-9));
                                  else if(index < 21)
                                      set(d_in[2],7-(index-17));
                                  else
                                      set(d_in[3],7-(index-17));
                                  }  
                              us = 0;
                              set(GICR,6);
                              TIMSK = 0x10;
                              }
                          else
                              us++;
                          }
                      #pragma vector= TIMER1_COMPA_vect
                      __interrupt void TIMER1_COMPA(void)
                          {
                          d_clar++;
                          if(d_clar > 100)
                              {  
                              remut = 0;
                              d_clar = 0;
                              d_crc = 0;
                              d_in[0] = 0;
                              d_in[1] = 0;
                              d_in[2] = 0;
                              if(f_set && e_n_remut >= n_eeprom) f_set = 0;
                              if(f_write) 
                                  {
                                  f_write = 0;
                                  f_set = 0;
                                  }
                              }    
                               
                          if(clar_kay > 0)
                              clar_kay --;
                          else
                              {
                              f_on_erase = 0;
                              f_set = 0;
                              } 
                                  
                          if(d_led > 0)
                              d_led--;
                          else
                              {
                              if(f_all_erase) 
                                  d_led = 50;
                              else if(f_on_erase) 
                                  d_led = 100; 
                              else if(f_set) 
                                  d_led = 200;
                              else
                                  d_led = 1000;
                              }
                              
                          if(f_on_erase)
                              {
                              if(d_led < 50) set(LED,LED_PIN) ; else reset(LED,LED_PIN);
                              }
                          else
                              {
                              if(d_led < 100) set(LED,LED_PIN) ; else reset(LED,LED_PIN); 
                              }
                          if(d_time > 0)
                              d_time--;
                          else
                              {
                              if(DIP1)
                                  {
                                  reset(OUT1,OUT1_PIN);
                                  reset(OUT2,OUT2_PIN);
                                  reset(OUT3,OUT3_PIN);
                                  reset(OUT4,OUT4_PIN); 
                                  }
                              }
                          
                          }
                          
                      void main(void)
                          {           
                          
                          DDRA=0XFF;
                          PORTA=0XFF;/* 7SEGMENT : OFF */
                           
                          DDRB|=(1<<DDB0)|(1<<DDB1)|(1<<DDB2)|(1<<DDB3);
                          PORTB=0X00;
                          
                          DDRD|=(1<<DDD1)|(1<<DDD6);
                          PORTD|=(1<<PD0)|(1<<PD2)|(1<<PD5)|(1<<PD6);
                           
                          TCCR0=0x0A;
                          TCNT0=0x00;
                          OCR0=0x64;
                          
                           
                          TCCR1A=0x00;
                          TCCR1B=0x0B;
                          OCR1AH=0x00;
                          OCR1AL=0xFA;
                           
                          GICR|=0x40;
                          MCUCR=0x02;
                          MCUCSR=0x00;
                          GIFR=0x40;
                      
                          TIMSK=0x10;
                      
                          ACSR=0x80;
                           
                          DATA=num[0];
                          
                          __enable_interrupt();
                          
                          SEG_ON; 
                           
                          while (1)
                              {
                              if(KEY) 
                                  d_key = 0;
                              else
                                  {
                                  if(d_key < 5000) 
                                      {
                                      d_key++;
                                      _delay_ms(2);
                                      }
                                  if(!f_all_erase && !f_on_erase && !f_set && d_key == 500) 
                                      {
                                      f_set = 1;
                                      clar_kay = 5000;
                                      d_led = 0;
                                      }
                                  if(!f_all_erase && !f_on_erase && d_key == 2000) 
                                      {
                                      f_set = 0;
                                      f_on_erase = 1;
                                      clar_kay = 5000;
                                      d_led = 0;
                                      }    
                                  if(!f_all_erase && d_key == 3000) 
                                      { 
                                      f_set = 0;
                                      f_on_erase = 0;
                                      f_all_erase = 1;
                                      e_n_remut = 0;
                                      f_learn=0;
                                      for(i=0;i<20;i++)
                                          { 
                                          _delay_ms(200);
                                          e_d_ee[i][0] = 0;
                                          e_d_ee[i][1] = 0;
                                          e_d_ee[i][2] = 0;
                                          }
                                      f_all_erase = 0;
                                      }
                                  }                            
                              if(f_read)
                                  {
                                  f_read = 0;
                                  if(d_in[0] == crc_in[0] && d_in[1] == crc_in[1] && d_in[2] == crc_in[2] && d_in[3] == crc_in[3])
                                      {
                                      d_crc++;
                                      d_clar = 0;
                                      if(d_crc == 3 && !f_set && !f_all_erase && !f_on_erase && !f_write)
                                          {
                                          d_crc = 0;
                                          x_remut = 0;
                                          if(!f_set && !f_on_erase && !f_all_erase)invert(LED,LED_PIN);
                                          for(i=0;i<e_n_remut;i++)
                                              {
                                              if(d_in[0] == e_d_ee[i][0] && d_in[1] == e_d_ee[i][1] && d_in[2] == e_d_ee[i][2])
                                                  {
                                                  remut = d_in[3];
                                                  x_remut = i + 1;
                                                  }                            
                                              }
                                          }
                                      else if(d_crc == 20 && (f_set || f_on_erase) && !f_all_erase && !f_write)
                                          { 
                                          d_crc = 0;
                                          f_write = 1;
                                          if(f_set)
                                              {
                                              f_set = 0;
                                              for(i=0;i<e_n_remut;i++)
                                                  {
                                                  if(d_in[0] == e_d_ee[i][0] && d_in[1] == e_d_ee[i][1] && d_in[2] == e_d_ee[i][2]) 
                                                      f_ok = 1;
                                                  }
                                              if(!f_ok)
                                                  {
                                                  e_n_remut++;
                                                  e_d_ee[e_n_remut-1][0] = d_in[0];
                                                  e_d_ee[e_n_remut-1][1] = d_in[1];
                                                  e_d_ee[e_n_remut-1][2] = d_in[2];
                                                  }
                                              f_ok = 0;
                                              }
                                          else if(f_on_erase)
                                              {
                                              x_remut = 0;
                                              for(i=0;i<=e_n_remut;i++)
                                                  {
                                                  if(!f_ok)
                                                      {
                                                      if(d_in[0] == e_d_ee[i][0] && d_in[1] == e_d_ee[i][1] && d_in[2] == e_d_ee[i][2])
                                                          {
                                                          f_ok = 1;
                                                          x_remut = i;
                                                          }    
                                                      }
                                                  else
                                                      { 
                                                      e_d_ee[i-1][0] = e_d_ee[i][0];
                                                      e_d_ee[i-1][1] = e_d_ee[i][1];
                                                      e_d_ee[i-1][2] = e_d_ee[i][2];
                                                      }
                                                  }
                                              if(f_ok)e_n_remut--;
                                              f_ok = 0;
                                              f_on_erase = 0;
                                              }
                                          }
                                      }
                                  else
                                      { 
                                      d_crc = 0;
                                      }
                                  }
                              ///////////mojtaba instrument : pump remote controller 
                              if(e_n_remut==3)f_learn=1;
                              if(f_learn){
                              /////////remote1/////////////////////////
                              if(d_in[0] == e_d_ee[0][0] && d_in[1] == e_d_ee[0][1] && d_in[2] == e_d_ee[0][2]){
                              remut = d_in[3];
                              switch (remut) 
                                  {
                                  case 0:
                                           
                                     
                                  break;
                                  case 3:
                                    
                                      set(OUT1,OUT1_PIN); 
                                      SEG_ON; 
                                      DATA=num[1]; /* it's show "1" */
                                       _delay_ms(500);
                                      DATA=num[13]; /* it's show "=" */
                                        _delay_ms(500);
                                      DATA=num[10]; /* it's show "o" */
                                       _delay_ms(500);
                                      DATA=num[11]; /* it's show "n" */ 
                                       _delay_ms(500);
                                       SEG_OFF; 
                                      
                                  break;
                                  case 12:
                                      reset(OUT1,OUT1_PIN);
                                      SEG_ON;
                                      DATA=num[1]; /* it's show "1" */
                                       _delay_ms(500);
                                      DATA=num[13]; /* it's show "=" */
                                       _delay_ms(500);
                                      DATA=num[10]; /* it's show "o" */
                                       _delay_ms(500);
                                      DATA=num[12]; /* it's show "f" */  
                                       _delay_ms(500);
                                      DATA=num[12]; /* it's show "f" */ 
                                      _delay_ms(500);
                                      SEG_OFF;
                                      
                                  }
                              }
                            /////////remote 2/////////////////////////
                              if(d_in[0] == e_d_ee[1][0] && d_in[1] == e_d_ee[1][1] && d_in[2] == e_d_ee[1][2]){
                              remut = d_in[3];
                              switch (remut) 
                                  {
                                  case 0:
                                           
                                     
                                  break;
                                  case 2:
                                      set(OUT2,OUT2_PIN);  
                                      SEG_ON; 
                                      DATA=num[2]; /* it's show "2" */
                                       _delay_ms(500);
                                      DATA=num[13]; /* it's show "=" */
                                        _delay_ms(500);
                                      DATA=num[10]; /* it's show "o" */
                                       _delay_ms(500);
                                      DATA=num[11]; /* it's show "n" */ 
                                       _delay_ms(500);
                                       SEG_OFF;
                                      
                                  break;
                                  case 4:
                                      reset(OUT2,OUT2_PIN);
                                      SEG_ON;
                                      DATA=num[2]; /* it's show "2" */
                                       _delay_ms(500);
                                      DATA=num[13]; /* it's show "=" */
                                       _delay_ms(500);
                                      DATA=num[10]; /* it's show "o" */
                                       _delay_ms(500);
                                      DATA=num[12]; /* it's show "f" */  
                                       _delay_ms(500);
                                      DATA=num[12]; /* it's show "f" */
                                      _delay_ms(500);
                                      SEG_OFF;
                                     
                                  }
                              }
                              /////////remote 3/////////////////////////
                              if(d_in[0] == e_d_ee[2][0] && d_in[1] == e_d_ee[2][1] && d_in[2] == e_d_ee[2][2]){
                              remut = d_in[3];
                              switch (remut) 
                                  {
                                  case 0:
                                           
                                     
                                  break;
                                  case 3:
                                      set(OUT3,OUT3_PIN); 
                                      SEG_ON; 
                                      DATA=num[3]; /* it's show "3" */
                                       _delay_ms(500);
                                      DATA=num[13]; /* it's show "=" */
                                        _delay_ms(500);
                                      DATA=num[10]; /* it's show "o" */
                                       _delay_ms(500);
                                      DATA=num[11]; /* it's show "n" */ 
                                       _delay_ms(500);
                                       SEG_OFF;
                                     
                                  break;
                                  case 12:
                                      reset(OUT3,OUT3_PIN);
                                      SEG_ON;
                                      DATA=num[3]; /* it's show "3" */
                                       _delay_ms(500);
                                      DATA=num[13]; /* it's show "=" */
                                       _delay_ms(500);
                                      DATA=num[10]; /* it's show "o" */
                                       _delay_ms(500);
                                      DATA=num[12]; /* it's show "f" */  
                                       _delay_ms(500);
                                      DATA=num[12]; /* it's show "f" */ 
                                      _delay_ms(500);
                                      SEG_OFF;
                                      
                                  }
                              }
                              }
                              }
                          }


                      ممنون از توجهتون

                      دیدگاه


                        #71
                        پاسخ : پروژه کامل ریموت 4 کاناله رادیویی ASK لرنینگ

                        این pcb رو هم براش کشیدم اگه میشه یه نگاهی بهش بندازید

                        فایل : pump_remote_controller.rar

                        ممنون از توجهتون

                        دیدگاه


                          #72
                          پاسخ : پروژه کامل ریموت 4 کاناله رادیویی ASK لرنینگ

                          سلام
                          ایا امکانش هست یکی از دوستان لطف کنه و راجع به فرمت خروجی ev1527 توضیح بیشتری بده -

                          دیدگاه


                            #73
                            پاسخ : پروژه کامل ریموت 4 کاناله رادیویی ASK لرنینگ

                            نوشته اصلی توسط timsar
                            سلام
                            ایا امکانش هست یکی از دوستان لطف کنه و راجع به فرمت خروجی ev1527 توضیح بیشتری بده -
                            دوست عزیز دیتاشیتش رو نگاه کردید؟

                            دیدگاه


                              #74
                              پاسخ : پروژه کامل ریموت 4 کاناله رادیویی ASK لرنینگ

                              بله -
                              ببینید درست متوجه شدم یا نه ؟

                              طول هر کد بیت برابر 256 oscillation pulse
                              192 پالس به معنای "1"
                              64 پالس به معنای "0 "

                              طول preamble برابر چند oscillation pulse ؟

                              دیدگاه


                                #75
                                پاسخ : پروژه کامل ریموت 4 کاناله رادیویی ASK لرنینگ

                                نوشته اصلی توسط timsar
                                بله -
                                ببینید درست متوجه شدم یا نه ؟

                                طول هر کد بیت برابر 256 oscillation pulse
                                192 پالس به معنای "1"
                                64 پالس به معنای "0 "

                                طول preamble برابر چند oscillation pulse ؟
                                با سلام
                                خدایی نمیشد یه نگاهی به پستهای اول مینداختین بعد یه همچین سوالاتی رو میپرسیدین ؟

                                این پست رو نگاه کنید کاملا توضیح داده شده است

                                http://www.eca.ir/forum2/index.php?topic=52063.msg273256#msg273256

                                به همین سادگی :nice:
                                تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
                                به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

                                دیدگاه

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