اطلاعیه

Collapse
No announcement yet.

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

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

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

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

    ابازم ممنون از پاسختون
    اما شما که میگید اول یک بیت یک میاد بعد صفر
    اگر طول صفر از سه برابر یک بیشتر بود یعنی اینکه اون بیت استارت هست همین
    یعنی نیازی به دوباره چک کردن طول صفر نیست که حتما 31 برابر طول یک باشه ( شاید این نویز باشه )
    شما که تجربه دارید لطفا راهنمایی کنید
    یعنی ممکن نیست چنین نویزی اتفاق بیفته
    حالا سئوال مهمترم اینه که پس با این کد جدید که میگید خودش طول یک رو تشخیص میده
    دیگه نیازی به این نیست که ریموتمون حتما با مقاومت 330K باشه درسته؟
    یعنی ریموت با هر مقاومت اسیلاتوری میشه استفاده کرد ؟ درسته
    ممنون
    با سلام

    یعنی نیازی به دوباره چک کردن طول صفر نیست که حتما 31 برابر طول یک باشه ( شاید این نویز باشه )
    نه دیگه نیازی یهش نیست حالا شما به من بگید برنامه بندرو مطالعه کردید؟؟؟؟؟
    میدونید کار متغیر d_crc چیه؟
    یا دقت کردید کار متغیر index چیه و کی صفر میشه ؟؟؟

    یعنی ممکن نیست چنین نویزی اتفاق بیفته :
    چرا حتما میتونه ولی برای تشخیص نویز راههای دیگه ای رو در نظر گرفتم که خیلی بهتر از اینه

    حالا سئوال مهمترم اینه که پس با این کد جدید که میگید خودش طول یک رو تشخیص میده
    دیگه نیازی به این نیست که ریموتمون حتما با مقاومت 330K باشه درسته؟
    یعنی ریموت با هر مقاومت اسیلاتوری میشه استفاده کرد ؟ درسته


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

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



    و این هم خروجی ماژول وقتی که هیچ کلیدی زده نشده






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

    دیدگاه


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

      نوشته اصلی توسط POLESTAR
      با سلام

      یعنی نیازی به دوباره چک کردن طول صفر نیست که حتما 31 برابر طول یک باشه ( شاید این نویز باشه )
      نه دیگه نیازی یهش نیست حالا شما به من بگید برنامه بندرو مطالعه کردید؟؟؟؟؟
      میدونید کار متغیر d_crc چیه؟
      یا دقت کردید کار متغیر index چیه و کی صفر میشه ؟؟؟

      یعنی ممکن نیست چنین نویزی اتفاق بیفته :
      چرا حتما میتونه ولی برای تشخیص نویز راههای دیگه ای رو در نظر گرفتم که خیلی بهتر از اینه

      حالا سئوال مهمترم اینه که پس با این کد جدید که میگید خودش طول یک رو تشخیص میده
      دیگه نیازی به این نیست که ریموتمون حتما با مقاومت 330K باشه درسته؟
      یعنی ریموت با هر مقاومت اسیلاتوری میشه استفاده کرد ؟ درسته


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

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



      و این هم خروجی ماژول وقتی که هیچ کلیدی زده نشده






      به همین سادگی :nice:
      lمهندس تشکر
      من خیلی دنبال دکمه تشکر گشتم اما پیداش نکردم
      اگه ممکنه اول بگیداین دکمه تشکر کجاست (خارج از بحث)
      ممنون از راهنماییهاتتون
      توی پست اول خیلی تاکید کرده بودید که مقاومت اسیلاتور حتما 330 باشد برای همین پرسیدم
      واقعیتش هنوز نه
      اما الان با این حرفایی که زدید تصمیم گرفتم حتما کد شما رو دقیق مطالعه کنم
      ممنون از راهنماییهاتون
      متشکرم

      دیدگاه


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

        آقا بعد از گذشت چند روز 26 صفحهی جذاب رو مطالعه کردم که تنها مشکلش اینه که آدم بعد از این که به عنوان مثال وقتی که به صفحات آخر نزدیک میشه و یه مشکل جالب بر میخوره،با این که جوابش رو در صفحات قبل دیده بود نمیدونست کدوم صفحه هست،و مجبور می شه دوباره صفحات رو از اول سرچ کنه

        و اما چند پیشنهاد
        1-از آقای اسدی خواهش میکنم که صفحه ی اول رو ویرایش کنند و لینک ماژول ها پیشنهادیشون(منظورم مدلشون) رو قرار بدن تا بچه ها از روی عکس دنبال ماژول ها نگردنن به خصوص گیرنده رو عرض میکنم چرا که فرستنده به راحتی پیدا میشه و در دو مدل 433 ,
        315هست
        2-خواهش از دوستانی هست که گفتند برنامه رو به صورت بسکام قرار میدن ولی تا حال قرار ندادن هست که اگر واقعا قصدشون هست این مطالب رو عنوان بکنند که کلی از بچه ها کلی الکی ذوق کردیم :cry2:
        3-......
        و در آخر هم از آقای اسدی تشکر میکنم که در خیلی از پستها سوالهای تکراری رو با حوصله جواب دادن
        من هم چند سوال برام پیش اومده که فکر میکنم تکراریه ولی واقعا 26 صفحه رو دوباره نگاه کردن خیلی سخته oo:
        خدایا چگونه زیستن را به من بیاموز ، چگونه مردن را خود خواهم آموخت
        "دکتر علی شریعتی"

        دیدگاه


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

          با سلام خدمت دوستان عزیز
          از اونجای که برنامه ارائه شده رو درک نکردم(به علت آشنایی کم با مدار گیرنده)
          از روی فرمایشات آقای اسدی یک برنامه کوچیک نوشتم. اما چند اشکال رو بهمراه داره از دوستان خواهش میکنم این برنامه رو بررسی و مشکلات اونرو بگن.
          در این مدار از mega8 و یک lcd استفاده شده. lcd رو پورت B تنظیم شده و خروجی مدارگیرنده به وقفه خارجی 0 وصل شده.
          از نظر الگوریتم (بنظر من) درسته اما کاملا غلط کار میکنه.
          لطفاً راهنمایی کنید.


          کد:
          #include <mega8.h>  
          #include <delay.h> 
          #include <stdio.h>
          #include <lcd.h> 
          #include <math.h>
          #asm
              .equ __lcd_port=0x18
          #endasm        
          #define RF_in          PIND.2
          long int    Remote_Serial; //شماره سریال فرستنده
          unsigned char  buffer_lcd[32]; 
          float      Curent_Change=0; // طول سیگنال بعداز آخرین تغییر سطح آن
          float      Last_Change=0; //  طول سیگنال قبل از آخرین تغییر سطح آن
          bit       Start_Prog=0; //  کاراکتر شروع فریم اطلاعات
          bit       A_Prog, B_Prog, C_Prog, D_Prog; // کلید فشار داده شده
          char      Index_Data; // شماره بیت فریم اطلاعات - فریم 24بیت است که از شماره 1 تا 24 میباشد
           interrupt [EXT_INT0] void ext_int0_isr(void)
          {
              if(Start_Prog==1)        //اگر بیت کارکتر شروع فریم اطلاعات دریافت شده بود
                  Index_Data+=1;     // افزایش ایندکس فریم اطلاعات
              if((Curent_Change/Last_Change)>5) 
              {
                  Index_Data=0;   
                  Start_Prog=1;   // تشخیص کاراکتر شروع فریم
                  Remote_Serial=0  // خالی کردن شماره سریال فرستنده
              }
              else if(Curent_Change>Last_Change)
                  if(Index_Data<21)  // سریال فرستنده 20 بیت است
                      Remote_Serial+=1*(pow(2,(Index_Data-1)));  // تبدیل باینری به دسیمال   
                  else  // چهار بیت آخر - یعنی از بیت 20 تا 24 به کلید فشرده شده اختصاص دارد
                      switch(Index_Data)
                      {
                          case 21:
                              A_Prog=1;   // تشخیص فشرده شدن کلید 1
                              break;
                          case 22:
                              B_Prog=1;   // تشخیص فشرده شدن کلید 2
                              break;
                          case 23:
                              C_Prog=1;   // تشخیص فشرده شدن کلید 3
                              break;
                          case 24:
                              D_Prog=1;   // تشخیص فشرده شدن کلید 4
                      }
              else if(Curent_Change<Last_Change)
                  if(Index_Data<21)
                      Remote_Serial+=0*(pow(2,(Index_Data-1)));    
                  else
                      switch(Index_Data)
                      {
                          case 21:
                              A_Prog=0;
                              break;
                          case 22:
                              B_Prog=0;
                              break;
                          case 23:
                              C_Prog=0;
                              break;
                          case 24:
                              D_Prog=0;
                      }   
              else
                  Start_Prog=0;          //تشخیص خطا و مردود اعلام کردن فریم
              Last_Change=Curent_Change;       // جابجای طول سیگنال فعلی با قبلی - جهت دریافت طول سیگنال جدید
              Curent_Change=0;            
              TCNT0=0xff;               // مقدار شمارنده تایمر حداکثر - 255 - برای ایجاد وقفه سریز در پریود بعدی    
              TIMSK=0x01;               //فعال کردن وقفه سرریز تایمر 0
              if(Index_Data==24)           // تشخیص پایان یافتن فریم از روی ایندکس
              {
                  lcd_clear();
                  lcd_gotoxy(0,0);
                  sprintf(buffer_lcd, "%u", Remote_Serial);   //نمایش شماره سریال روی صفحه نمایش
                  lcd_puts(buffer_lcd); 
                  if(A_Prog)                   //نمایش کلید تشخیص داده شده
                      lcd_putsf(";A");
                  else if(B_Prog)      
                      lcd_putsf(";B");
                  else if(C_Prog)      
                      lcd_putsf(";C");
                  else if(D_Prog)      
                      lcd_putsf(";D");
                  Start_Prog=0;
                  TIMSK=0x00;        
              }   
          }
          
          interrupt [TIM0_OVF] void timer0_ovf_isr(void)
          {  
              Curent_Change+=1;    // افزایش طول سیگنال فعلی
          }   
          void main(void)
          {
          
          // اختصاص پورت به صورت خروجی
          PORTB=0x00;
          DDRB=0xFF;
          //فرکانس تایمر 0 بر روی 1مگاهرتز 
          TCCR0=0x02;
          TCNT0=0xff; 
          // فعال سازی وقفه عمومی
          #asm("sei")
          // INT0 Mode: Falling Edge
          GICR|=0x40;
          MCUCR=0x02;
          GIFR=0x40;
          while (1){ };

          دیدگاه


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

            نوشته اصلی توسط MoslemMaleki
            با سلام خدمت دوستان عزیز
            از اونجای که برنامه ارائه شده رو درک نکردم(به علت آشنایی کم با مدار گیرنده)
            از روی فرمایشات آقای اسدی یک برنامه کوچیک نوشتم. اما چند اشکال رو بهمراه داره از دوستان خواهش میکنم این برنامه رو بررسی و مشکلات اونرو بگن.
            در این مدار از mega8 و یک lcd استفاده شده. lcd رو پورت B تنظیم شده و خروجی مدارگیرنده به وقفه خارجی 0 وصل شده.
            از نظر الگوریتم (بنظر من) درسته اما کاملا غلط کار میکنه.
            لطفاً راهنمایی کنید.


            کد:
            #include <mega8.h>  
            #include <delay.h> 
            #include <stdio.h>
            #include <lcd.h> 
            #include <math.h>
            #asm
                .equ __lcd_port=0x18
            #endasm        
            #define RF_in          PIND.2
            long int    Remote_Serial; //شماره سریال فرستنده
            unsigned char  buffer_lcd[32]; 
            float      Curent_Change=0; // طول سیگنال بعداز آخرین تغییر سطح آن
            float      Last_Change=0; //  طول سیگنال قبل از آخرین تغییر سطح آن
            bit       Start_Prog=0; //  کاراکتر شروع فریم اطلاعات
            bit       A_Prog, B_Prog, C_Prog, D_Prog; // کلید فشار داده شده
            char      Index_Data; // شماره بیت فریم اطلاعات - فریم 24بیت است که از شماره 1 تا 24 میباشد
             interrupt [EXT_INT0] void ext_int0_isr(void)
            {
                if(Start_Prog==1)        //اگر بیت کارکتر شروع فریم اطلاعات دریافت شده بود
                    Index_Data+=1;     // افزایش ایندکس فریم اطلاعات
                if((Curent_Change/Last_Change)>5) 
                {
                    Index_Data=0;   
                    Start_Prog=1;   // تشخیص کاراکتر شروع فریم
                    Remote_Serial=0  // خالی کردن شماره سریال فرستنده
                }
                else if(Curent_Change>Last_Change)
                    if(Index_Data<21)  // سریال فرستنده 20 بیت است
                        Remote_Serial+=1*(pow(2,(Index_Data-1)));  // تبدیل باینری به دسیمال   
                    else  // چهار بیت آخر - یعنی از بیت 20 تا 24 به کلید فشرده شده اختصاص دارد
                        switch(Index_Data)
                        {
                            case 21:
                                A_Prog=1;   // تشخیص فشرده شدن کلید 1
                                break;
                            case 22:
                                B_Prog=1;   // تشخیص فشرده شدن کلید 2
                                break;
                            case 23:
                                C_Prog=1;   // تشخیص فشرده شدن کلید 3
                                break;
                            case 24:
                                D_Prog=1;   // تشخیص فشرده شدن کلید 4
                        }
                else if(Curent_Change<Last_Change)
                    if(Index_Data<21)
                        Remote_Serial+=0*(pow(2,(Index_Data-1)));    
                    else
                        switch(Index_Data)
                        {
                            case 21:
                                A_Prog=0;
                                break;
                            case 22:
                                B_Prog=0;
                                break;
                            case 23:
                                C_Prog=0;
                                break;
                            case 24:
                                D_Prog=0;
                        }   
                else
                    Start_Prog=0;          //تشخیص خطا و مردود اعلام کردن فریم
                Last_Change=Curent_Change;       // جابجای طول سیگنال فعلی با قبلی - جهت دریافت طول سیگنال جدید
                Curent_Change=0;            
                TCNT0=0xff;               // مقدار شمارنده تایمر حداکثر - 255 - برای ایجاد وقفه سریز در پریود بعدی    
                TIMSK=0x01;               //فعال کردن وقفه سرریز تایمر 0
                if(Index_Data==24)           // تشخیص پایان یافتن فریم از روی ایندکس
                {
                    lcd_clear();
                    lcd_gotoxy(0,0);
                    sprintf(buffer_lcd, "%u", Remote_Serial);   //نمایش شماره سریال روی صفحه نمایش
                    lcd_puts(buffer_lcd); 
                    if(A_Prog)                   //نمایش کلید تشخیص داده شده
                        lcd_putsf(";A");
                    else if(B_Prog)      
                        lcd_putsf(";B");
                    else if(C_Prog)      
                        lcd_putsf(";C");
                    else if(D_Prog)      
                        lcd_putsf(";D");
                    Start_Prog=0;
                    TIMSK=0x00;        
                }   
            }
            
            interrupt [TIM0_OVF] void timer0_ovf_isr(void)
            {  
                Curent_Change+=1;    // افزایش طول سیگنال فعلی
            }   
            void main(void)
            {
            
            // اختصاص پورت به صورت خروجی
            PORTB=0x00;
            DDRB=0xFF;
            //فرکانس تایمر 0 بر روی 1مگاهرتز 
            TCCR0=0x02;
            TCNT0=0xff; 
            // فعال سازی وقفه عمومی
            #asm("sei")
            // INT0 Mode: Falling Edge
            GICR|=0x40;
            MCUCR=0x02;
            GIFR=0x40;
            while (1){ };
            دوست عزیز نیازی به تحلیل برنامتون نیست. بایک نگاه ساده میشه فهمید که چرا کار نمیکنه .حتی اگه به صورت تئوری برنامه درست باشه این همه عملیات اعشاری با متغیر های float و long و توابع زمانبر برای LCD استفاده کردید پس انتظار نداشته باشید میکرو بتونه سریال فرستنده رو دیکد کنه. طول هر بیت دیتا حدودا بین 1 تا 2 میلی ثانیه هست بنابر این با بیت preamble حد اکثر زمان کل دیتا که میکرو فرصت داره کمتر از 50 میلی ثانیه هست که طی این مدا میکرو باید بتونه دیکود کنه.

            دیدگاه


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

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

              حالا سئوال من اینه که واقعا بخ این کد (کد شما میشه اطمینان کرد و ب شکل تجاری ازش استفاده کرد؟؟؟؟؟؟
              این روش واقعا توی دراز مدت مشکلی ایجاد نم یکنه؟؟؟
              ممنون

              دیدگاه


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

                سلام آقای h123456h
                شما برنامه ای که نوشته اید، نتیجه گرفته اید یا نه؟
                اگه گرفته اید لطف کنید سورس برنامه رو قرار بدید و بعد بر روی سورس شما مطالعه کنیم
                من این مدار رو ساختم ولی این مدار کار نکرد و فقط یک بار کار کرد و بعد هرکاری که کردم نتونستم ریموت رو لرن کنم
                اگه میشه لطف کنید برنامه ای که نوشته اید رو قرار بدید
                [img width=67 height=100]http://dc365.4shared.com/img/pGCA8eEE/30607875402595991224.jpg[/img]
                1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
                2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
                3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

                دیدگاه


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

                  دوستان عزیر و همربان جیگرررر یه سوال دارم!!!! ریموت کنترل های آماده توی بازار هستش مثلا ایران میکرو چند نمونه دو کاناله تا 12 کاناله داره قیمتشم مناسبه برای ارسال دیتا نیست ولی مثل کنترل از راه دوره یک رله رو قطع و وصل میکنه من سوالی دارم اینه که این مدارات به دوصورت لرن کد و فیکس کد موجودن تفاوتشون چیه آیا احتما تداخل یکی به یکی دیگه هست داخلشون مدار ارسالی ای اس کا هست و آی سی پی پی تی کسی میدونه ؟
                  در جهان هرگز مشو مدیون احساس کسی - تا نباشد رایگان مهرت گروگان کسی
                  گوهر خود را نزن بر سنگ هر ناقابلی - صبر کن پیدا شود گوهر شناس قابلی

                  دیدگاه


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

                    این جا رو نگاه کن

                    http://www.eca.ir/forum2/index.php?topic=24973.msg117385#msg117385
                    http://www.eca.ir/forum2/index.php?topic=21222.15
                    ابتدا و شروع هرکاری سخت ترین مرحله آن کار است. برای مثال به عقابها نگاه کن ، حتی اونها هم در ابتدای پرواز ، زیاد بال و پر می زنند، اما هنگامی که اوج می گیرند ، دیگر حتی نیازی به پر زدن هم ندارند ...

                    کافیست اولین قدمها را بدون ترس و با پشتکارِ بالا برداری مطمئن باش بزودی به اوج خواهی رسید و روزهای سخت همیشه نخواهند ماند ...

                    دیدگاه


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

                      نوشته اصلی توسط POLESTAR
                      با سلام

                      بفرمایید این هم لینک ورژن 2

                      به همین سادگی :nice:
                      با سلام.
                      واقعاً ممنون از برنامه کاملتون.
                      من خیلی سعی کردم که برنامه شمارو بفهمم. ولی واقعاً نتونستم. چون با برنامه نویسی الکترونیک خیلی آشنا نیستم.
                      خودم برنامه رو از نو نوشتم.
                      ولی چندتا ایراد اساسی داره.
                      اول اینکه با تغییر ولتاژ تغذیه ریموت، در کد شناسایی شده و در بیت 17 بدلیل تغییر طول موج، تغییر ایجاد میشه. دوم نویز بسیار زیادی هست که میگیره.
                      پس انتظار دارم بعنوانتنها کسی که در کل سایتهای فارسی زبان این برنامه رو با avr ارئه کرده کمک کنید. یا برنامه خودمو تکمیل کنیم. یا بخش شناسایی کد و کلید ریموت رو در برنامه خودتون برام توضیح بدید. پیشاپیش ممنونم.
                      برنامه من:

                      کد:
                      #include    <mega8.h>  
                      #include    <delay.h> 
                      
                      #define RF_IN      PIND.2             //خروجی ماژول
                      
                      char          Loaded_Remote_KEY;       //آخرین کد کلید فشار داده شده    
                      unsigned long int    Loaded_Remote_Serial;      //شماره سریال آخرین ریموت فشار داده شده
                      float          Current_Change=0;        //طول سیگنال بعداز آخرین تغییر سطح آن
                      float          Last_Change=0;         //طول سیگنال قبل از آخرین تغییر سطح آن
                      bit           Start_Prog=0;          //کاراکتر شروع فریم اطلاعات
                      char          Index_Data;           //شماره بیت فریم اطلاعات - فریم 24بیت است که از شماره 1 تا 24 میباشد
                      bit           New_Data=0;           //گزارش دریافت اطلاعات جدید
                      unsigned long int    BinCL[20];           //آرایه جهت ایجاد سریال باینتری و تبدیل مستقیم به دسیمال
                      
                      interrupt [EXT_INT0] void ext_int0_isr(void)
                      {
                          if((Start_Prog)&&(Current_Change>3))      //اگر بیت کارکتر شروع فریم اطلاعات دریافت شده بود - طول تغییرات بیشتر از 4 سیکل کاری باشد به معانی اینکه تغییرات میان بیتها (تغییر سطح سیگنال برای شناسایی) بحساب نییاید
                              Index_Data+=1;             //افزایش ایندکس فریم اطلاعات
                          if((Current_Change/Last_Change)>4)       //درصورتی اطلاعات در بازه طولانی(درپروید قبلی) تغییر نکرد، شناسایی کارکتر شروع فریم
                          {
                              Index_Data=0;              //داریه فریم اطلاعات، برابر با ابتدای فریم
                              Start_Prog=1;              //تشخیص کاراکتر شروع فریم
                              Loaded_Remote_Serial=0;         //خالی کردن سریال شناسسایی شده
                              Loaded_Remote_KEY=0;          //خالی کردن کلید شناسایی شده
                          }
                          else if((Current_Change<Last_Change))      
                              if(Index_Data<=20)                   //20کاراکتر اول مربوط به سریال ریموت می باشد
                                  Loaded_Remote_Serial+=BinCL[Index_Data-1];   //تبدیل با استفاده از روش معمول باینری به دسیمال     
                              else                          //4بیت آخر فریم مربوط به کلید فشار داده شده است
                                  Loaded_Remote_KEY+=BinCL[Index_Data-21];
                          
                          Last_Change=Current_Change;           //جابجای طول سیگنال فعلی با قبلی - جهت دریافت طول سیگنال جدید
                          Current_Change=0;                   
                          TCNT0=0xff;                   //مقدار شمارنده تایمر حداکثر - 255 - برای ایجاد وقفه سریز در پریود بعدی - توجه داشته باشید اگر مقدار تایمر در سریز تغییر کن، 1/8 از کل قدت پردازنده فقط سرف پردازش وقفه میگردد و کل پروسه با مشکل مواجه میشود
                          TIMSK=0x01;                   //فعال کردن وقفه سرریز تایمر 0
                          if(Index_Data==24)               //تشخیص پایان یافتن فریم از روی ایندکس، فریم اطلاعات 24بیت است
                          {
                              Start_Prog=0;              //اجازه کپچر بیتهای جدید تا زمان رسیدن بیت شروع فریم صلب می گردد
                              New_Data=1;               //اطلاعات جدید به شکل صحیح دریافت گردید
                              Trace_Command();            //پردازش فرمان جدید
                          }   
                      }
                      
                      interrupt [TIM0_OVF] void timer0_ovf_isr(void)
                      {  
                          Current_Change+=1;               //افزایش طول سیگنال فعلی
                      }
                      
                      void main(void)
                      {
                          
                          BinCL[0]= 1;
                          BinCL[1]= 2;
                          BinCL[2]= 4;
                          BinCL[3]= 8;
                          BinCL[4]= 16;
                          BinCL[5]= 32;
                          BinCL[6]= 64;
                          BinCL[7]= 128;
                          BinCL[8]= 256;
                          BinCL[9]= 512;
                          BinCL[10]= 1024;
                          BinCL[11]= 2048;
                          BinCL[12]= 4096;
                          BinCL[13]= 8192;
                          BinCL[14]= 16384;
                          BinCL[15]= 32768;
                          BinCL[16]= 65536;
                          BinCL[17]= 131072;
                          BinCL[18]= 262144;
                          BinCL[19]= 524288;
                          
                          //فرکانس تایمر 0 بر روی 1مگاهرتز 
                          TCCR0=0x02;
                          TCNT0=0xff; 
                            
                          // External Interrupt(s) initialization
                          // INT0: On
                          // INT0 Mode: Any change
                          // INT1: Off
                          //وقفه خارجی 0 - حساس به هر نوع تغییری
                          GICR|=0x40;
                          MCUCR=0x01;
                          GIFR=0x40;
                          
                          // فعال سازی وقفه عمومی
                          #asm("sei") 
                              
                       
                              
                          while (1) 
                          {
                      
                          };
                      }

                      دیدگاه


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

                        دوستان خسته نباشید یه سئال از آقای POLESTAR گردم متسفانه هنوز جوابی ندادند
                        دوستان من از ریموت های فیکس کد برای در ورودی خونه استفاده کردم و چند تا فامیل هم خوششون اومده نسبت به قیمت پایینتری که نسبت به لرن کد ها دارن و امنیتشون پایین تره بنظرتون امنیت داره که برای دم در خونه استفاده کنم ونم مال مردم!!!! اکثر صفحات تایپیک رو خوندم و بجز چند تا نکته سردرد شدیدی گرفتم بحث ها زیاده و خوندن این همه مطلب سخته از دوستان ممنون میشم اگر نتیجه کلی کار یا برداشتشون رو مطرح کنند تا بنده خدایی مثل من سردرگم نشه فقط خواستم چند تا نکته یاد بگیرم مجبور شدم خیلی از صفحاتو بخونم!!! آخرشم مجبور شدم این رو اینجا بنویسم ممنون از دوستان گل گلاب :applause:
                        در جهان هرگز مشو مدیون احساس کسی - تا نباشد رایگان مهرت گروگان کسی
                        گوهر خود را نزن بر سنگ هر ناقابلی - صبر کن پیدا شود گوهر شناس قابلی

                        دیدگاه


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


                          کوتاه مختصر
                          فیکس کد======>امنیت پایین
                          لرن کد========>امنیت بسیار بالا
                          قیمتهاشونم زیاد فرقی نداره.
                          ابتدا و شروع هرکاری سخت ترین مرحله آن کار است. برای مثال به عقابها نگاه کن ، حتی اونها هم در ابتدای پرواز ، زیاد بال و پر می زنند، اما هنگامی که اوج می گیرند ، دیگر حتی نیازی به پر زدن هم ندارند ...

                          کافیست اولین قدمها را بدون ترس و با پشتکارِ بالا برداری مطمئن باش بزودی به اوج خواهی رسید و روزهای سخت همیشه نخواهند ماند ...

                          دیدگاه


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

                            نوشته اصلی توسط مجید ملوندی
                            کوتاه مختصر
                            فیکس کد======>امنیت پایین
                            لرن کد========>امنیت بسیار بالا
                            قیمتهاشونم زیاد فرقی نداره.
                            ممنون آقای ملوندی ولی بیش از حد مختصر نگفتی!!!
                            اینی که گفتید توی همین صفحه اول هم بود
                            بازم ممنون
                            در جهان هرگز مشو مدیون احساس کسی - تا نباشد رایگان مهرت گروگان کسی
                            گوهر خود را نزن بر سنگ هر ناقابلی - صبر کن پیدا شود گوهر شناس قابلی

                            دیدگاه


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

                              نوشته اصلی توسط sami222

                              از دوستان ممنون میشم اگر نتیجه کلی کار یا برداشتشون رو مطرح کنند تا بنده خدایی مثل من سردرگم نشه فقط خواستم چند تا نکته یاد بگیرم مجبور شدم خیلی از صفحاتو بخونم!!! آخرشم مجبور شدم این رو اینجا بنویسم ممنون از دوستان گل گلاب :applause:
                              دوست عزیز فیکس کد هم خوبه.
                              لرن کد هم خیلی خیلی بهتره.
                              ملت همین فیکس کدش رو هم ندیدن که بخوان رمزشو باز کنن.
                              مطمعن باش اون دزدی که که بتونه فیکس کد ساده رو باز کنه نمیاد دزدی.میره مغازه تعمیراتی میزنه.
                              نتیجه:جفتشون خوبن.ولی لرن یک چیز دیگه است==>اخره امنیت.
                              بازم سوالی بود بپرس دوست من؟
                              ابتدا و شروع هرکاری سخت ترین مرحله آن کار است. برای مثال به عقابها نگاه کن ، حتی اونها هم در ابتدای پرواز ، زیاد بال و پر می زنند، اما هنگامی که اوج می گیرند ، دیگر حتی نیازی به پر زدن هم ندارند ...

                              کافیست اولین قدمها را بدون ترس و با پشتکارِ بالا برداری مطمئن باش بزودی به اوج خواهی رسید و روزهای سخت همیشه نخواهند ماند ...

                              دیدگاه


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

                                سلام به دوستان ، یه سوآل دارم ، برای کم کردن نویز ماژول گیرنده چیکار باید کرد؟
                                [img width=67 height=100]http://dc365.4shared.com/img/pGCA8eEE/30607875402595991224.jpg[/img]
                                1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
                                2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
                                3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

                                دیدگاه

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