|
本帖最后由 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();//更新显示
- }
- //设置小车前进的固定速度
- void set_PID_speed(int v1,int v2)
- {
- Set_Temp = v1;
- Set_Temp1 = v2;
- }
- //主函数
- int main(void)
- {
- u8 state;
- int ang;
-
-
- //设置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();//编码器扫描
- //获取红外线传感器传回的数据
- state = Get_Infrared_Sensor();
- ang = 0;
- switch (state)//循迹转弯设置
- {
- 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);//设置舵机角度 0
- break;
- case 0x04:ang = 10;
- break;
- case 0x0c:ang = 35;
- break;
- case 0x08:ang = 55;
- break;
- case 0x0f: //识别到杂乱信号角度设置为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);//设置舵机角度
- delay_ms(100);
- }
- state = 0;
- }
- }
复制代码
以上代码51hei附件下载:
32坡道小车代码.7z
(219.21 KB, 下载次数: 22)
原理图自取资源来自网络侵删
|
评分
-
查看全部评分
|