IR рд░рд┐рдореЛрдЯ рдХрдВрдЯреНрд░реЛрд▓ рдХреЛ stm32 рдкрд░



рдирдорд╕реНрддреЗ

рд╡рд┐рднрд┐рдиреНрди рдШрд░реЗрд▓реВ рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдЕрд╡рд░рдХреНрдд рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ, рдбреАрдХреЛрдбрд┐рдВрдЧ рдФрд░ рдмрд╛рдж рдореЗрдВ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╡рд░реНрдгрди stm32 рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд░рддрд╛ рд╣реИред Arduino рдХреЗ рд▓рд┐рдП IRremote рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдФрд░ stm32 рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рддред

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдХ рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рджреЛрдиреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдПрдХ рд╕рдВрдХреЗрдд рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдПред рд░рд┐рд╕реАрд╡рд░ рдХрд┐рд╕реА рднреА рдкрд┐рди (GPIO_Input) рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ, рдФрд░ рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ PWM рдЬрдирд░реЗрд╢рди (PWM) рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЯрд╛рдЗрдорд░ рдХреЗ рдЪреИрдирд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЯрд╛рдЗрдорд░ рдирдВрдмрд░ 4 рдХреЗ рдкрд╣рд▓реЗ рдЪреИрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдкреАрдмреА 6 (рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░) рдФрд░ рдкрд┐рди рдкреАрдмреА 5 (рд░рд┐рд╕реАрд╡рд░)ред

рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдорд░ рдЗрдВрдЯрд░рдкреНрдЯ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рд╣рд░ 50 ╬╝s рдпрд╣ рдЗрдирдкреБрдЯ рдкрд┐рди рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рджреМрд░рд╛рди рдпрд╣ PWM рдЬреЗрдирд░реЗрд╢рди рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИ, рдПрдХ рд╕рд┐рдЧреНрдирд▓ рднреЗрдЬрддрд╛ рд╣реИ, рдФрд░ рд╡рд╛рдкрд╕ рдореЛрдб рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИред

рд╕реЗрдЯрд┐рдВрдЧреНрд╕ IRremote.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИрдВ

extern TIM_HandleTypeDef htim4; //     -   50  (     72) #define MYPRESCALER 71 //   1 #define MYPERIOD 49 // 50  //     -     #define MYSYSCLOCK 72000000 //     recive_IR #define RECIV_PIN (HAL_GPIO_ReadPin(recive_IR_GPIO_Port, recive_IR_Pin)) 

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдЯрд╛рдЗрдорд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдЧреЗ, рддреЛ рдЖрдкрдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - htim4, рдФрд░ IRremote. рдФрд░ irSend. рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рднреА рдРрд╕рд╛ рд╣реА рдХрд░реЗрдВред рдореИрдВ рдЗрд╕ рд╕рд╛рд░реА рдЕрд░реНрдерд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЖрд▓рд╕реА рдерд╛ред рдХреНрдпреВрдмрд╛ рдореЗрдВ рдПрдХ рдФрд░ рдЯрд╛рдЗрдорд░ рдЪреБрдирддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЪреИрдирд▓ рдФрд░ рдЖрдВрддрд░рд┐рдХ рдШрдбрд╝реА рд╕реНрд░реЛрдд рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ...



рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрд╛рдХреА рд╕рдм рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдЖрдк рдПрдХ рдЕрд▓рдЧ рдЪреИрдирд▓ рдирдВрдмрд░ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ irSend.s рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред

рдмрд╛рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ - рд╕рд┐рд╕реНрдЯрдо рдЖрд╡реГрддреНрддрд┐ (72 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ) рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдкреНрд░рддреНрдпреЗрдХ 50 ╬╝s рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡-рдлрд╛рдбрд╝рдиреЗрд╡рд╛рд▓рд╛ рдФрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд┐рди рдХреА рдЖрд╡реГрддреНрддрд┐ рдФрд░ рдкрдврд╝рдиреЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВ рдЬреЛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ ...

 ////////////////////////////////////   //////////////////////////////////////// #define DECODE_RC5 1 //     RC5   0 #define SEND_RC5 1 //       RC5   0 #define DECODE_RC6 1 #define SEND_RC6 1 ... 

рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЖрдХрд╛рд░ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЖрдк рдЖрдорддреМрд░ рдкрд░ рдЕрдкреНрд░рдпреБрдХреНрдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд╛рдЯ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╛рдЗрд▓реЛрдВ (рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдо рд╣реИрдВ)ред

рдХрд╛рд░реНрдпрдХреНрд░рдо рдЕрддреНрдпрдВрдд рд╕рд░рд▓ рд╣реИ, my_decode (рдФрд░ рдкрд░рд┐рдгрд╛рдо) рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдбреАрдХреЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрдЯрди рдХреЛрдб, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкреНрд░рдХрд╛рд░ рдФрд░ рдкреИрдХреНрд╕ рд▓рдВрдмрд╛рдИ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ ...



рдореЗрд░реЗ рдкрд╛рд╕ рдФрд░ рдХреЛрдИ рдЙрдкрд╛рдп рдирд╣реАрдВ рд╣реИред

рдбреАрдХреЛрдб рдХрд┐рдП рдЧрдП рд╕рд┐рдЧреНрдирд▓ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдмрдВрдзрд┐рдд рдирд╛рдо рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ...

 sendSAMSUNG(0x707048b7, 32); my_enableIRIn(); 

My_enableIRIn () рдлрд╝рдВрдХреНрд╢рди рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдпрд╣ PWM рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЯрд╛рдЗрдорд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдореЛрдб рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИред рдПрдХ рд╣реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд░рдВрднреАрдХрд░рдг (рдЕрдирдВрдд рд▓реВрдк рд╕реЗ рдкрд╣рд▓реЗ) рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд╛рд░рдг, рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдирд╣реАрдВ рдкрдХрдбрд╝ рдкрд╛рдПрдВрдЧреЗ - рдпрд╣ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...


... рддреЛ рдЪрд┐рдВрддрд╛ рдХреА рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рд╡реИрд╕реЗ рднреА рдмрдЯрди рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдПрдХ рдЕрдЬреНрдЮрд╛рдд рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рднреА рднреЗрдЬреЗрдВ, рддреЛ рдЖрдкрдХреЛ "рдХрдЪреНрдЪреЗ рдбреЗрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯ" рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ...



... рдФрд░ sendRaw () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реАрдб рдбреЗрдЯрд╛ рднреЗрдЬреЗрдВ ...

 uint8_t khz = 38; //    ,    36  40  unsigned int raw_signal[] = {1300, 400, 1300, 400, 450, 1200, 1300, 400, 1300, 400, 450, 1200, 500, 1200, 450, 1250, 450, 1200, 500, 1200, 450, 1250, 1300}; sendRaw(raw_signal, sizeof(raw_signal) / sizeof(raw_signal[0]), khz); my_enableIRIn(); //   ( ) 

рдореБрдЭреЗ "рдХрдЪреНрдЪрд╛" рднреЗрдЬрдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдкреБрд╕реНрддрдХрд╛рд▓рдп microsecond рджреЗрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ DWT рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рд╕рднреА stm32 рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╣рд░ рдЬрдЧрд╣ рдирд╣реАрдВ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рдпрджрд┐ рдЖрдкрдХреЗ рдкрддреНрдерд░ рдореЗрдВ DWT рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ irSend.s рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ custom_delay_usec (рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд▓рдВрдмрд╛ рд╣рдорд╕реЗ) рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕реЗрдЯрд┐рдВрдЧ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реИред

рд╡рд╣ рд╕рдм рд╣реИред

рдкреБрд╕реНрддрдХрд╛рд▓рдп

Source: https://habr.com/ru/post/hi456890/


All Articles