|
本帖最后由 garrettzls 于 2021-8-2 09:28 編輯
大家來交流一下電賽啊
PN編碼器旋鈕:
SW -> PA10
DT -> PA11
CLK -> PA12
編碼電機:
左輪:
IN1 -> PB10
IN2 -> PB8 TIM4_CH3
A -> PA2
B ->
右輪:
IN3 -> PB11
IN4 -> PB9 TIM3_CH4
A -> PA3
B ->
OLED:
CS -> PA6
DC -> PA7
RES -> PA5
D1 -> PB0
D0 -> PB1
VCC ->
GND ->
舵機:
IN -> PA0
紅外傳感器:
IN1 -> PA4
IN2 -> PA5
IN3 -> PA6
IN4 -> PA7
板載LED:
LED -> PB12
單片機源程序如下:
- /* Includes ------------------------------------------------------------------*/
- #include "stm32f10x.h"
- #include "infrared_sensor.h"
- #include "encode_motor.h"
- #include "steering_motor.h"
- #include "bluetooth.h"
- #include "usart.h"
- #include "PID.h"
- #include "timer.h"
- #include "delay.h"
- #include "oled.h"
- #include "led.h"
- #include <string.h>
- #include "encodeing.h"
- //OLED刷新顯示
- void OLED_update()
- {
- OLED_ShowString(0,0,(u8 *)"V1: V2: ",16);
- OLED_ShowString(0,16,(u8 *)"PIDOUT: ",16);
- OLED_ShowString(0,32,(u8 *)"TIME: Spd: ",16);
-
- if(run_flag == 1)
- OLED_ShowString(0,48,(u8 *)"RUNING... ",16);
- else
- OLED_ShowString(0,48,(u8 *)"STOP... ",16);
-
-
- OLED_ShowNum(26,0,(int)V_left,4,12);
- OLED_ShowNum(82,0,(int)V_right,4,12);
-
- OLED_ShowNum(58,16,(int)PID_OUT,4,12);
- OLED_ShowNum(42,32,(int)time,2,12);
- OLED_ShowNum(94,32,(int)speed,3,12);
- OLED_Refresh_Gram();//更新顯示
- }
- //設(shè)置小車前進的固定速度
- void set_PID_speed(int v1,int v2)
- {
- Set_Temp = v1;
- Set_Temp1 = v2;
- }
- //主函數(shù)
- int main(void)
- {
- u8 state;
- int ang;
-
-
- //設(shè)置APP偏移
- //SCB->VTOR = FLASH_BASE | 0x8000; /* Vector Table Relocation in Internal FLASH. */
-
- uart_init(9600);//藍牙串口初始化
- delay_init(); //延時初始化
- SteerinMotor_Init(); //舵機初始化
- EncodeMotor_Init();//編碼電機初始化
- OLED_Init();//oled初始化
- LED_Init();//led初始化
- TIM1_Int_Init(100,7200);//定時器初始化10ms
- Encodeing_Init();//旋鈕編碼器初始化
- //測試
- printf(" this is Ramp patorl trolley by HUAZUOCHEN! ^_^ \r\n");
- while (1) {
- OLED_update();//更新OLED顯示
- encodeing_scan();//編碼器掃描
- //獲取紅外線傳感器傳回的數(shù)據(jù)
- state = Get_Infrared_Sensor();
- ang = 0;
- switch (state)//循跡轉(zhuǎn)彎設(shè)置
- {
- case 0x00:ang = 0;
- break;
- case 0x01:ang = -55;
- break;
- case 0x03:ang = -35;
- break;
- case 0x02:ang = -10;
- break;
- case 0x06:set_steerMotor_ang(0);//設(shè)置舵機角度 0
- break;
- case 0x04:ang = 10;
- break;
- case 0x0c:ang = 35;
- break;
- case 0x08:ang = 55;
- break;
- case 0x0f: //識別到雜亂信號角度設(shè)置為0
- case 0x09:
- case 0x05:
- case 0x0a:
- case 0x0e:
- case 0x0b:
- run_flag = 0;//停止
- break;
- default:ang = 0;
- break;
- }
- if(ang != 0)
- {
- set_steerMotor_ang(ang);//設(shè)置舵機角度
- delay_ms(100);
- }
- state = 0;
- }
- }
復制代碼
以上代碼51hei附件下載:
32坡道小車代碼.7z
(219.21 KB, 下載次數(shù): 22)
2021-8-1 22:53 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
原理圖自取資源來自網(wǎng)絡(luò)侵刪
|
評分
-
查看全部評分
|