مجله مطالب خواندنی

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

مجله مطالب خواندنی

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

با وسایل ساده و ارزان رسیور مادون قرمز USB بسازید

[ad_1]

در این ساختنی یاد می‌گیرید چطور یک رسیور مادون قرمز USB کوچک و ارزان بسازید. از این رسیور می‌توانید در پروژه‌های مختلف مثل ربات‌ها، کوادکوپترها و سایر دستگاه‌های کنترلی استفاده کنید. این رسیور مادون قرمز کیبورد هم دارد و به همین خاطر می‌توانید از آن بدون کامپیوتر استفاده کنید.پس با ساختنی همراه باشید!

رسیور مادون قرمز USB بسازید
رسیور مادون قرمز USB بسازید

میکروکنترلری که برای ساخت رسیور استفاده می‌کنید، کار یک کیبورد استاندارد را می‌کند و به همین خاطر می‌توانید از آن به همراه هر کامپیوتری استفاده کنید. این یعنی با این رسیور مادون قرمز و یک کنترل می‌توانید کامپیوترتان را کنترل کنید.

گام اول : وسایل مورد نیاز

وسایل مورد نیاز
وسایل مورد نیاز
  • برد digispark
  • رسیور مادون قرمز ۳۸kHz
  • یک ریموت کنترل
  • دستگاه لحیم کاری
  • یک کامپیوتر با نرم افزار Arduino IDE

گام دوم : رسیور مادون قرمز را لحیم کنید

ابتدا یکی از پایه‌های رسیور (OUT) را خم کنید تا داخل پین P2 فرو برود. پایه‌های دیگر را هم داخل پین‌های ۵V و GND فرو کنید.

سپس یک تکه کوچک هیت شرینک (یا چسب) به قسمت افقی رسیور مادون قرمز وصل کنید.

دوباره رسیور را روی digispark قرار بدهید و هر سه پایه را بهم لحیم کنید. سپس قسمت‌های اضافی پایه‌ها را ببرید. بخش سخت افزاری رسیور USB آماده است.

گام سوم : کد دکمه‌های کنترل را دریافت کنید

کدهای دکمه‌های ریموت کنترل را پیدا کنید
کدهای دکمه‌های ریموت کنترل را پیدا کنید

در این مرحله باید مشخص کنید چه کدی به هر دکمه ریموت کنترل مرتبط است. هر ریموت کنترل کدهای مخصوص برای دکمه‌هایش دارد و برای استفاده از یک کنترل با رسیور باید این کار را انجام بدهید. ساده ترین روش اینکار استفاده از یک برد آردوینو است. کافی است یک برنامه برای دریافت سیگنال‌های مادون قرمز بنویسید و سپس با فشردن هر دکمه، کد مخصوص آن را مشخص کنید.

اما اگر برد آردوینو نداشته باشید، کارتان کمی‌سخت می‌شود. در این صورت باید با همین قطعاتی که دارید، کدهای به خصوص هر دکمه را پیدا کنید. برای اینکار، ابتدا باید درایورهای digiusb را دانلود کنید. به این لینک بروید و روی دکمه download zipکلیک کنید. بعد از دانلود، محتوای پوشه DigisparkExamplePrograms-master را در هر دایرکتوری که می‌خواهید اکسترکت کنید.

سپس به مسیر DigisparkExamplePrograms-master/C++/DigiUSB Windows Driver بروید و روی installdriver کلیک کنید. حالا با کمک این راهنما، بردهای مناسب را در نرم افزار Arduino IDE نصب کنید.

کدهای زیر را در قالب یک پروژه آردوینوی جدید کپی کنید و آن را روی برد digispark آپلود کنید:

/************************************* * This code is written by Laurens Wuyts * For questions: laurens.wuyts@gmail.com *  *  * Microcontroller: ATtiny85 * Dev board:       Digispark *  *************************************/ #include <DigiUSB.h>  uint8_t situation = 0; uint8_t START = 0; uint8_t x = 0; uint8_t BIT = 0; uint8_t Id = 0; uint8_t Id_inv = 0; uint8_t Data = 0; uint8_t Data_back = 0; uint8_t Data_inv = 0; uint8_t Repeat = 0; uint8_t sended = 0;  uint16_t Time_old = 0; uint16_t Time = 0; uint16_t TimeDelta = 0;   void setup(void)    attachInterrupt(0, IR_Read, FALLING);      pinMode(1,OUTPUT);   digitalWrite(1,LOW);    DigiUSB.begin();    void loop(void)    if(sended == 1)      DigiUSB.println(Data_back, DEC);     sended = 0;    else      DigiUSB.delay(10);      void IR_Read(void) {   digitalWrite(1,HIGH);   Time = micros();   if (Time_old != 0)      TimeDelta = Time - Time_old;     if ((TimeDelta > 12000)&&(TimeDelta < 14000))        START = 1;       x = 0;       situation = 1;       Id = 0;       Id_inv = 0;       Data = 0;       Data_inv = 0;      else if ((TimeDelta > 10000)&&(TimeDelta < 12000))        situation = 2; // repeat      else if ((TimeDelta > 1500)&&(TimeDelta < 2500))        situation = 3; //"1"       BIT = 1;      else if ((TimeDelta > 1000)&&(TimeDelta < 1500))        situation = 3; //"0"       BIT = 0;      else situation = 5;      if (situation == 3)        if (x < 8)          Id  else if (x < 16) = BIT;         if (x < 15) Id_inv <<= 1;         x++;        else if (x < 24) = BIT;         if (x < 23) Data <<= 1;         x++;        else if (x < 32) = BIT;         if (x < 31)            Data_inv <<= 1;          else                       /* DO SOMETHING HERE */           sended = 1;                      Data_back = Data;           Repeat = 0;                  x++;             else if (situation == 2)        if(Repeat == 1)                   /* DO SOMETHING HERE */         /*sended = 1;*/                 else          Repeat = 1;                  Time_old = Time;   digitalWrite(1,LOW); }

بعد از آپلود کدها، به مسیر DigisparkExamplePrograms-master/Python/DigiUSB/Windows/ بروید و فایل monitor.exe را باز کنید. حالا یک پنجره جدید باز می‌شود که با فشردن هر دکمه، کد مخصوص دکمه در آن نمایش داده خواهد شد. کد هر دکمه را بنویسید چون بعداً به آن نیاز خواهید داشت.

گام چهارم : کدهای Digispark را آپلود کنید

برد Digispark را برنامه ریزی کنید
برد Digispark را برنامه ریزی کنید

حالا باید کدهای اصلی را روی Digispark آپلود کنید. در این کدها باید کدهای مخصوص ریموت کنترل خودتان که در مرحله قبل پیدا کرده اید را وارد کنید. برای مثال اگر کد دکمه mute کنترل شما ۱۰۰ باشد، باید کدهایی که دانلود می‌کنید را به این شکل تغییر بدهید:

#define mute	۲۴۰
این کد اصلی است که باید به حالت زیر تغییر پیدا کند:
#define mute	۱۰۰

دقت کنید که وقتی می‌خواهید یک دکمه جدید تعریف کنید، نمی‌توانید از فاصله در نام استفاده کنید.

برای اضافه کردن کارکردهای جدید، از loop function استفاده کنید و کارکرد دکمه‌ها را تغییر بدهید یا برای دکمه‌های جدید کارکرد تعریف کنید.

/************************************* * This code is written by Laurens Wuyts * For questions: laurens.wuyts@gmail.com *  *  * Microcontroller: ATtiny85 * Dev board:       Digispark *  *************************************/  /**** Define Remote control keys ****/ #define Power     64 #define key_1     32 #define key_2     160 #define key_3     96 #define key_4     16 #define key_5     144 #define key_6     80 #define key_7     48 #define key_8     176 #define key_9     112 #define key_0     136 #define vol_up    224 #define vol_down  208 #define ch_up     72 #define ch_down   8 #define mute      240 #define next      172 #define prev      164 #define up        6 #define down      134 #define left      166 #define right     70 #define playpause 156 #define key_stop  180 /************************************/  #include "TrinketHidCombo.h"  uint8_t situation = 0; uint8_t START = 0; uint8_t x = 0; uint8_t BIT = 0; uint8_t Id = 0; uint8_t Id_inv = 0; uint8_t Data = 0; uint8_t Data_back = 0; uint8_t Data_inv = 0; uint8_t Repeat = 0; uint8_t sended = 0;  uint16_t Time_old = 0; uint16_t Time = 0; uint16_t TimeDelta = 0;   void setup(void)    /* Use INT0(P2) on the Digispark */   attachInterrupt(0, IR_Read, FALLING);      pinMode(1,OUTPUT);   digitalWrite(1,LOW);    TrinketHidCombo.begin();    void loop(void)    if(sended == 1)      /* Assign functions to the buttons */     if(Data_back == vol_up)        TrinketHidCombo.pressMultimediaKey(MMKEY_VOL_UP);      else if(Data_back == vol_down)        TrinketHidCombo.pressMultimediaKey(MMKEY_VOL_DOWN);      else if(Data_back == next)        TrinketHidCombo.pressMultimediaKey(MMKEY_SCAN_NEXT_TRACK);      else if(Data_back == prev)        TrinketHidCombo.pressMultimediaKey(MMKEY_SCAN_PREV_TRACK);      else if(Data_back == key_stop)        TrinketHidCombo.pressMultimediaKey(MMKEY_STOP);      else if(Data_back == playpause)        TrinketHidCombo.pressMultimediaKey(MMKEY_PLAYPAUSE);      else if(Data_back == mute)        TrinketHidCombo.pressMultimediaKey(MMKEY_MUTE);      else if(Data_back == Power)        TrinketHidCombo.pressSystemCtrlKey(SYSCTRLKEY_SLEEP);      else if(Data_back == key_0)        TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_0);       TrinketHidCombo.pressKey(0, 0);      else if(Data_back == key_1)        TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_1);       TrinketHidCombo.pressKey(0, 0);      else if(Data_back == key_2)        TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_2);       TrinketHidCombo.pressKey(0, 0);      else if(Data_back == key_3)        TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_3);       TrinketHidCombo.pressKey(0, 0);      else if(Data_back == key_4)        TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_4);       TrinketHidCombo.pressKey(0, 0);      else if(Data_back == key_5)        TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_5);       TrinketHidCombo.pressKey(0, 0);      else if(Data_back == key_6)        TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_6);       TrinketHidCombo.pressKey(0, 0);      else if(Data_back == key_7)        TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_7);       TrinketHidCombo.pressKey(0, 0);      else if(Data_back == key_8)        TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_8);       TrinketHidCombo.pressKey(0, 0);      else if(Data_back == key_9)        TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_9);       TrinketHidCombo.pressKey(0, 0);      else if(Data_back == up)        TrinketHidCombo.pressKey(0, KEYCODE_ARROW_UP);       TrinketHidCombo.pressKey(0, 0);      else if(Data_back == down)        TrinketHidCombo.pressKey(0, KEYCODE_ARROW_DOWN);       TrinketHidCombo.pressKey(0, 0);      else if(Data_back == left)        TrinketHidCombo.pressKey(0, KEYCODE_ARROW_LEFT);       TrinketHidCombo.pressKey(0, 0);      else if(Data_back == right)        TrinketHidCombo.pressKey(0, KEYCODE_ARROW_RIGHT);       TrinketHidCombo.pressKey(0, 0);          sended = 0;    else        TrinketHidCombo.poll();      /* Read the IR code */ void IR_Read(void) {   digitalWrite(1,HIGH);   Time = micros();   if (Time_old != 0)      TimeDelta = Time - Time_old;     if ((TimeDelta > 12000)&&(TimeDelta < 14000))        START = 1;       x = 0;       situation = 1;       Id = 0;       Id_inv = 0;       Data = 0;       Data_inv = 0;      else if ((TimeDelta > 10000)&&(TimeDelta < 12000))        situation = 2; // repeat      else if ((TimeDelta > 1500)&&(TimeDelta < 2500))        situation = 3; //"1"       BIT = 1;      else if ((TimeDelta > 1000)&&(TimeDelta < 1500))        situation = 3; //"0"       BIT = 0;      else situation = 5;      if (situation == 3)        if (x < 8)          Id  else if (x < 16) = BIT;         if (x < 15) Id_inv <<= 1;         x++;        else if (x < 24) = BIT;         if (x < 23) Data <<= 1;         x++;        else if (x < 32) = BIT;         if (x < 31)            Data_inv <<= 1;          else                       /* DO SOMETHING HERE */           sended = 1;                      Data_back = Data;           Repeat = 0;                  x++;             else if (situation == 2)        if(Repeat == 1)                   /* DO SOMETHING HERE */         sended = 1;                 else          Repeat = 1;                  Time_old = Time;   digitalWrite(1,LOW); }

بعد از اینکه کدها را روی برد digispark آپلود کردید، رسیور مادون قرمز را یکبار از کامپیوتر جدا کنید و دوباره به آن وصل کنید. ۵ ثانیه صبر کنید و سپس ریموت کنترل و رسیور را تست کنید.

رسیور مادون قرمز USB آماده است

رسیور مادون قرمز آماده است
رسیور مادون قرمز آماده است

این رسیور بخاطر اندازه کوچکش تقریباً در هر پروژه ای قابل استفاده است. کارکردهای بسیار گسترده ای هم دارد و می‌توانید کلید حل مشکل بسیاری از پروژه‌های الکترونیکی باشد.

رمز فایل‌های دریافتی saakhtani.ir است.

منبع

نوشته با وسایل ساده و ارزان رسیور مادون قرمز USB بسازید - #کاردستی #علمی #خبر


[ad_2]
لینک منبع
بازنشر: مفیدستان


ادامه مطلب ...

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

جام جم سرا: سلمان رجایی افزود: اعضای اردوهای جهادی بسیج دانشجویی امسال با رویکرد فرهنگی از ابتدای ماه مبارک رمضان اقدام به تعویض رایگان رسیورهای ماهواره و جایگزینی آن‌ها با گیرنده‌های دیجیتال می‌کنند.

وی اضافه کرد: در این اردو‌ها با همکاری ۳۰ گروه دانشجویی و روحانیون مبلغ اعزامی چالش‌ها و آسیب‌های استفاده از ماهواره بصورت نشست‌های فرهنگی به مردم اطلاع رسانی می‌شود. این فعالیت با همکاری سایر دستگاه‌های فرهنگی صورت می‌گیرد که در صورت تحویل داوطلبانه گیرنده‌های ماهواره از سوی مردم به صورت رایگان گیرنده‌های دیجیتال در اختیار آن‌ها قرار می‌گیرد.

وی با قدردانی از صدا و سیمای مرکز کرمان برای راه اندازی فرستنده‌های دیجیتال در جنوب کرمان گفت: این اقدام گام مهمی در راستای مقابله با تهاجم فرهنگی دشمن و استفاده بهینه از شبکه‌های داخلی به جای شبکه‌های ماهواره است (ایرنا)


ادامه مطلب ...

با وسایل ساده و ارزان رسیور مادون قرمز USB بسازید

[ad_1]

در این ساختنی یاد می‌گیرید چطور یک رسیور مادون قرمز USB کوچک و ارزان بسازید. از این رسیور می‌توانید در پروژه‌های مختلف مثل ربات‌ها، کوادکوپترها و سایر دستگاه‌های کنترلی استفاده کنید. این رسیور مادون قرمز کیبورد هم دارد و به همین خاطر می‌توانید از آن بدون کامپیوتر استفاده کنید.پس با ساختنی همراه باشید!

رسیور مادون قرمز USB بسازید
رسیور مادون قرمز USB بسازید

میکروکنترلری که برای ساخت رسیور استفاده می‌کنید، کار یک کیبورد استاندارد را می‌کند و به همین خاطر می‌توانید از آن به همراه هر کامپیوتری استفاده کنید. این یعنی با این رسیور مادون قرمز و یک کنترل می‌توانید کامپیوترتان را کنترل کنید.

گام اول : وسایل مورد نیاز

وسایل مورد نیاز
وسایل مورد نیاز
  • برد digispark
  • رسیور مادون قرمز ۳۸kHz
  • یک ریموت کنترل
  • دستگاه لحیم کاری
  • یک کامپیوتر با نرم افزار Arduino IDE

گام دوم : رسیور مادون قرمز را لحیم کنید

ابتدا یکی از پایه‌های رسیور (OUT) را خم کنید تا داخل پین P2 فرو برود. پایه‌های دیگر را هم داخل پین‌های ۵V و GND فرو کنید.

سپس یک تکه کوچک هیت شرینک (یا چسب) به قسمت افقی رسیور مادون قرمز وصل کنید.

دوباره رسیور را روی digispark قرار بدهید و هر سه پایه را بهم لحیم کنید. سپس قسمت‌های اضافی پایه‌ها را ببرید. بخش سخت افزاری رسیور USB آماده است.

گام سوم : کد دکمه‌های کنترل را دریافت کنید

کدهای دکمه‌های ریموت کنترل را پیدا کنید
کدهای دکمه‌های ریموت کنترل را پیدا کنید

در این مرحله باید مشخص کنید چه کدی به هر دکمه ریموت کنترل مرتبط است. هر ریموت کنترل کدهای مخصوص برای دکمه‌هایش دارد و برای استفاده از یک کنترل با رسیور باید این کار را انجام بدهید. ساده ترین روش اینکار استفاده از یک برد آردوینو است. کافی است یک برنامه برای دریافت سیگنال‌های مادون قرمز بنویسید و سپس با فشردن هر دکمه، کد مخصوص آن را مشخص کنید.

اما اگر برد آردوینو نداشته باشید، کارتان کمی‌سخت می‌شود. در این صورت باید با همین قطعاتی که دارید، کدهای به خصوص هر دکمه را پیدا کنید. برای اینکار، ابتدا باید درایورهای digiusb را دانلود کنید. به این لینک بروید و روی دکمه download zipکلیک کنید. بعد از دانلود، محتوای پوشه DigisparkExamplePrograms-master را در هر دایرکتوری که می‌خواهید اکسترکت کنید.

سپس به مسیر DigisparkExamplePrograms-master/C++/DigiUSB Windows Driver بروید و روی installdriver کلیک کنید. حالا با کمک این راهنما، بردهای مناسب را در نرم افزار Arduino IDE نصب کنید.

کدهای زیر را در قالب یک پروژه آردوینوی جدید کپی کنید و آن را روی برد digispark آپلود کنید:

/*************************************
* This code is written by Laurens Wuyts
* For questions: laurens.wuyts@gmail.com
* 
* 
* Microcontroller: ATtiny85
* Dev board:       Digispark
* 
*************************************/
#include <DigiUSB.h>

uint8_t situation = 0;
uint8_t START = 0;
uint8_t x = 0;
uint8_t BIT = 0;
uint8_t Id = 0;
uint8_t Id_inv = 0;
uint8_t Data = 0;
uint8_t Data_back = 0;
uint8_t Data_inv = 0;
uint8_t Repeat = 0;
uint8_t sended = 0;

uint16_t Time_old = 0;
uint16_t Time = 0;
uint16_t TimeDelta = 0;
 
void setup(void) 
  attachInterrupt(0, IR_Read, FALLING);
  
  pinMode(1,OUTPUT);
  digitalWrite(1,LOW);

  DigiUSB.begin();

 
void loop(void) 
  if(sended == 1) 
    DigiUSB.println(Data_back, DEC);
    sended = 0;
   else 
    DigiUSB.delay(10);
  


void IR_Read(void) {
  digitalWrite(1,HIGH);
  Time = micros();
  if (Time_old != 0) 
    TimeDelta = Time - Time_old;
    if ((TimeDelta > 12000)&&(TimeDelta < 14000)) 
      START = 1;
      x = 0;
      situation = 1;
      Id = 0;
      Id_inv = 0;
      Data = 0;
      Data_inv = 0;
     else if ((TimeDelta > 10000)&&(TimeDelta < 12000)) 
      situation = 2; // repeat
     else if ((TimeDelta > 1500)&&(TimeDelta < 2500)) 
      situation = 3; //"1"
      BIT = 1;
     else if ((TimeDelta > 1000)&&(TimeDelta < 1500)) 
      situation = 3; //"0"
      BIT = 0;
     else situation = 5; 
    if (situation == 3) 
      if (x < 8) 
        Id  else if (x < 16) = BIT;
        if (x < 15) Id_inv <<= 1;
        x++;
       else if (x < 24) = BIT;
        if (x < 23) Data <<= 1;
        x++;
       else if (x < 32) = BIT;
        if (x < 31) 
          Data_inv <<= 1;
         else 
          
          /* DO SOMETHING HERE */
          sended = 1;
          
          Data_back = Data;
          Repeat = 0;
        
        x++;
      
     else if (situation == 2) 
      if(Repeat == 1) 
        
        /* DO SOMETHING HERE */
        /*sended = 1;*/
        
       else 
        Repeat = 1;
      
    
  
  Time_old = Time;
  digitalWrite(1,LOW);
}

بعد از آپلود کدها، به مسیر DigisparkExamplePrograms-master/Python/DigiUSB/Windows/ بروید و فایل monitor.exe را باز کنید. حالا یک پنجره جدید باز می‌شود که با فشردن هر دکمه، کد مخصوص دکمه در آن نمایش داده خواهد شد. کد هر دکمه را بنویسید چون بعداً به آن نیاز خواهید داشت.

گام چهارم : کدهای Digispark را آپلود کنید

برد Digispark را برنامه ریزی کنید
برد Digispark را برنامه ریزی کنید

حالا باید کدهای اصلی را روی Digispark آپلود کنید. در این کدها باید کدهای مخصوص ریموت کنترل خودتان که در مرحله قبل پیدا کرده اید را وارد کنید. برای مثال اگر کد دکمه mute کنترل شما ۱۰۰ باشد، باید کدهایی که دانلود می‌کنید را به این شکل تغییر بدهید:

#define mute	۲۴۰
این کد اصلی است که باید به حالت زیر تغییر پیدا کند:
#define mute	۱۰۰

دقت کنید که وقتی می‌خواهید یک دکمه جدید تعریف کنید، نمی‌توانید از فاصله در نام استفاده کنید.

برای اضافه کردن کارکردهای جدید، از loop function استفاده کنید و کارکرد دکمه‌ها را تغییر بدهید یا برای دکمه‌های جدید کارکرد تعریف کنید.

/*************************************
* This code is written by Laurens Wuyts
* For questions: laurens.wuyts@gmail.com
* 
* 
* Microcontroller: ATtiny85
* Dev board:       Digispark
* 
*************************************/

/**** Define Remote control keys ****/
#define Power     64
#define key_1     32
#define key_2     160
#define key_3     96
#define key_4     16
#define key_5     144
#define key_6     80
#define key_7     48
#define key_8     176
#define key_9     112
#define key_0     136
#define vol_up    224
#define vol_down  208
#define ch_up     72
#define ch_down   8
#define mute      240
#define next      172
#define prev      164
#define up        6
#define down      134
#define left      166
#define right     70
#define playpause 156
#define key_stop  180
/************************************/

#include "TrinketHidCombo.h"

uint8_t situation = 0;
uint8_t START = 0;
uint8_t x = 0;
uint8_t BIT = 0;
uint8_t Id = 0;
uint8_t Id_inv = 0;
uint8_t Data = 0;
uint8_t Data_back = 0;
uint8_t Data_inv = 0;
uint8_t Repeat = 0;
uint8_t sended = 0;

uint16_t Time_old = 0;
uint16_t Time = 0;
uint16_t TimeDelta = 0;
 
void setup(void) 
  /* Use INT0(P2) on the Digispark */
  attachInterrupt(0, IR_Read, FALLING);
  
  pinMode(1,OUTPUT);
  digitalWrite(1,LOW);

  TrinketHidCombo.begin();

 
void loop(void) 
  if(sended == 1) 
    /* Assign functions to the buttons */
    if(Data_back == vol_up) 
      TrinketHidCombo.pressMultimediaKey(MMKEY_VOL_UP);
     else if(Data_back == vol_down) 
      TrinketHidCombo.pressMultimediaKey(MMKEY_VOL_DOWN);
     else if(Data_back == next) 
      TrinketHidCombo.pressMultimediaKey(MMKEY_SCAN_NEXT_TRACK);
     else if(Data_back == prev) 
      TrinketHidCombo.pressMultimediaKey(MMKEY_SCAN_PREV_TRACK);
     else if(Data_back == key_stop) 
      TrinketHidCombo.pressMultimediaKey(MMKEY_STOP);
     else if(Data_back == playpause) 
      TrinketHidCombo.pressMultimediaKey(MMKEY_PLAYPAUSE);
     else if(Data_back == mute) 
      TrinketHidCombo.pressMultimediaKey(MMKEY_MUTE);
     else if(Data_back == Power) 
      TrinketHidCombo.pressSystemCtrlKey(SYSCTRLKEY_SLEEP);
     else if(Data_back == key_0) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_0);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == key_1) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_1);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == key_2) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_2);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == key_3) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_3);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == key_4) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_4);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == key_5) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_5);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == key_6) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_6);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == key_7) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_7);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == key_8) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_8);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == key_9) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_9);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == up) 
      TrinketHidCombo.pressKey(0, KEYCODE_ARROW_UP);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == down) 
      TrinketHidCombo.pressKey(0, KEYCODE_ARROW_DOWN);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == left) 
      TrinketHidCombo.pressKey(0, KEYCODE_ARROW_LEFT);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == right) 
      TrinketHidCombo.pressKey(0, KEYCODE_ARROW_RIGHT);
      TrinketHidCombo.pressKey(0, 0);
    
    sended = 0;
   else 
      TrinketHidCombo.poll();
  


/* Read the IR code */
void IR_Read(void) {
  digitalWrite(1,HIGH);
  Time = micros();
  if (Time_old != 0) 
    TimeDelta = Time - Time_old;
    if ((TimeDelta > 12000)&&(TimeDelta < 14000)) 
      START = 1;
      x = 0;
      situation = 1;
      Id = 0;
      Id_inv = 0;
      Data = 0;
      Data_inv = 0;
     else if ((TimeDelta > 10000)&&(TimeDelta < 12000)) 
      situation = 2; // repeat
     else if ((TimeDelta > 1500)&&(TimeDelta < 2500)) 
      situation = 3; //"1"
      BIT = 1;
     else if ((TimeDelta > 1000)&&(TimeDelta < 1500)) 
      situation = 3; //"0"
      BIT = 0;
     else situation = 5; 
    if (situation == 3) 
      if (x < 8) 
        Id  else if (x < 16) = BIT;
        if (x < 15) Id_inv <<= 1;
        x++;
       else if (x < 24) = BIT;
        if (x < 23) Data <<= 1;
        x++;
       else if (x < 32) = BIT;
        if (x < 31) 
          Data_inv <<= 1;
         else 
          
          /* DO SOMETHING HERE */
          sended = 1;
          
          Data_back = Data;
          Repeat = 0;
        
        x++;
      
     else if (situation == 2) 
      if(Repeat == 1) 
        
        /* DO SOMETHING HERE */
        sended = 1;
        
       else 
        Repeat = 1;
      
    
  
  Time_old = Time;
  digitalWrite(1,LOW);
}

بعد از اینکه کدها را روی برد digispark آپلود کردید، رسیور مادون قرمز را یکبار از کامپیوتر جدا کنید و دوباره به آن وصل کنید. ۵ ثانیه صبر کنید و سپس ریموت کنترل و رسیور را تست کنید.

رسیور مادون قرمز USB آماده است

رسیور مادون قرمز آماده است
رسیور مادون قرمز آماده است

این رسیور بخاطر اندازه کوچکش تقریباً در هر پروژه ای قابل استفاده است. کارکردهای بسیار گسترده ای هم دارد و می‌توانید کلید حل مشکل بسیاری از پروژه‌های الکترونیکی باشد.

رمز فایل‌های دریافتی saakhtani.ir است.

منبع

نوشته با وسایل ساده و ارزان رسیور مادون قرمز USB بسازید - #کاردستی #علمی #خبر


[ad_2]
لینک منبع
بازنشر: مفیدستان


ادامه مطلب ...