k60單片機(jī),依據(jù)紅外信號(hào)識(shí)別方向控制舵機(jī)電機(jī)舵機(jī)的程序
紅外信號(hào)采用海爾牌遙控器內(nèi)置NEC協(xié)議, 協(xié)議包括9ms的高電平、4.5ms 的低電平、四個(gè)字節(jié)地址碼和命令碼,四個(gè)字節(jié)地址碼分別為:地址碼 0xC3,地址反碼 0x3C,命令碼 0x55,命令碼反碼 0xAA,低位首發(fā)�;鶐盘�(hào)如下圖1 所示
0.png (57.54 KB, 下載次數(shù): 50)
下載附件
2018-9-17 17:41 上傳
圖1 基帶信號(hào)圖
實(shí)際信號(hào)中高電平為 38KHz的信號(hào),實(shí)際信號(hào)如下圖所示:
0.jpg (59.78 KB, 下載次數(shù): 54)
下載附件
2018-9-17 17:42 上傳
超聲波導(dǎo)引信號(hào)頻率為 40KHz的方波。
引腳使用:
KLED1 PTE0
KLED2 PTE1
SERVO
PWM PTA11
舵機(jī)占空比 18.5% 14.0% 11.3%
舵漿位置 左滿舵 中間位置 右滿舵
電機(jī) PA07
紅外接收器
1->PTB0
2->PTB4
3->PTB6
4->PTB8
5->PTB10
6->PTB16
7->PTB20
8->PTB22
0.jpg (37.97 KB, 下載次數(shù): 48)
下載附件
2018-9-17 17:43 上傳
k60單片機(jī)源程序如下:
- #include "common.h"
- #include "isr.h"
- #include "LedBuz.h"
- #include "FreeCars.h"
- #include "infrared.h"
- #include "motor.h"
- #include "servo.h"
- #include "oled.h"
- #include "VoltageDetect.h"
- #include "wdog.h"
- #include "dirCtrl.h"
- /* 修改主頻 請(qǐng)使用 CMSIS標(biāo)準(zhǔn)文件 system_MKxxxx.c 中的 CLOCK_SETUP 宏 */
- void SysInitialization(void); //系統(tǒng)初始化
- //uint8_t startLineMaskFlag = 0; //起跑線屏蔽標(biāo)志
- //uint32_t VoltageTime,MenuTime,FreeCarsTime,ImgDealFreTimer,StartRunTime,StartLineDetectTime;
- int main(void)
- {
- test_motor=1500;
- SysInitialization(); //系統(tǒng)初始化
-
- EnableInterrupts(); //開啟全部中斷
-
- KLED2_ON;
- KLED1_ON;
- //test_motor=1580;
- Servo_Test=1455;
- DelayMs(1000);
- while(1)
- {
-
- //SingleMotor_Control(test_motor);
- //Servos_control(Servo_Test);
-
- //DirPIDCalculate();
- // VoltageConvert();
- //KLED1_REV;
- KLED2_REV;
- SingleMotor_Control(test_motor);
- DirPIDCalculate();
-
- }
- }
- //系統(tǒng)初始化
- void SysInitialization(void)
- {
- DisableInterrupts(); //禁止全部中斷
- DelayInit(); //延時(shí)函數(shù)初始化,使用的是DWT
- GPIO_LedBuzInit(); //初始化LED和蜂鳴器引腳
- FreeCars_Init(); //FreeCars上位機(jī)UART引腳配置
- Motor_Init(); //電機(jī)初始化(包含單電機(jī)和雙電機(jī)的,在Preprocessor Symbols中設(shè)置)
- Servo_Init(); //舵機(jī)初始化 50Hz
- //Voltage_Init(); //電壓檢測初始化
- DirPID_Init(); //方向PID參數(shù)初始化
- GPIO_InfraredInit(); //紅外接收器初始化
- PIT_QuickInit(HW_PIT_CH0, 10000); //CH0 10ms中斷,用于舵機(jī)PID控制
- ISR_Config(); //所有中斷的配置,該函數(shù)應(yīng)放在所有初始化函數(shù)之后
- }
復(fù)制代碼
0.png (48.2 KB, 下載次數(shù): 56)
下載附件
2018-9-17 17:44 上傳
所有資料51hei提供下載:
紅外程序.rar
(5.94 MB, 下載次數(shù): 23)
2018-9-17 11:09 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|