零知两轮小车入门版(零知esp32主控)教程-程序控制电机开跑

本系列教程讲解零知小车套件以零知迷你板为主控,使用零知开源平台进行智能小车开发。

使用的硬件:零知智能小车套件


实现的功能:红外循迹、超声避障、直线运行、手机蓝牙控制等基本功能。

扩展:可以在小车上加入其它传感器模块进行扩展,比如加入摄像头模块进行监控、加入火焰传感器做灭火小车、加入更多超声波模块实现自动跟随...


本系列教程目录

零知两轮小车入门版(ESP32主控)教程1-小车组装


零知两轮小车入门版(ESP32主控)教程2-让小车跑起来


零知两轮小车入门版(ESP32主控)教程3-手机WiFi/蓝牙控制小车


零知两轮小车入门版(ESP32主控)教程4-超声波自动避障


零知两轮小车入门版(ESP32主控)教程5-红外循迹


零知两轮小车入门版(ESP32主控)教程6-使用PID走直线

一、工具材料

(1)组装好的智能小车和零知ESP32

二、程序代码

仅仅是组装好的小车还无法跑起来,要想让其跑起来,就得写程序告诉它怎么跑,什么时候跑。这里我们首先使用串口来试着控制小车,2WD小车代码实现如下:
							
							
/**********************************************************
*    文件: car.ino      by 零知实验室([url=http://www.lingzhilab.com]www.lingzhilab.com[/url])
*    -^^- 零知开源,让电子制作变得更简单! -^^-
*    时间: 2019/11/19 16:35
*    说明:
************************************************************/
 
//设置电机引脚     当前代码使用U6电机驱动 
#define LEFT_MOTO1  32
#define LEFT_MOTO2  33
#define RIGHT_MOTO1 25
#define RIGHT_MOTO2 26
//#define LEFT_MOTO1  27
//#define LEFT_MOTO2  14
//#define RIGHT_MOTO1 12
//#define RIGHT_MOTO2 13

 
int pitch;
 
void setup() {
        Serial.begin(9600);  //打开串口
        pinMode(LEFT_MOTO1,OUTPUT);
        pinMode(LEFT_MOTO2,OUTPUT);
        pinMode(RIGHT_MOTO1,OUTPUT);
        pinMode(RIGHT_MOTO2,OUTPUT);
 
        //设置引脚输出PWM的通道
        ledcAttachPin(LEFT_MOTO1,1);
        ledcAttachPin(LEFT_MOTO2,2);
        ledcAttachPin(RIGHT_MOTO1,3);
        ledcAttachPin(RIGHT_MOTO2,4);
        ledcSetup(1, 12000, 8);
        ledcSetup(2, 12000, 8);
        ledcSetup(3, 12000, 8);
        ledcSetup(4, 12000, 8);
}
 
void loop() {
        //接收串口发送的数据
       //1 前进 2后退 3转弯 4右转弯
        if(Serial.available()>0){
                pitch = Serial.parseInt();
                Serial.print("pitch=");
                Serial.print(pitch);
                motoRun(pitch);
        }
}
 
void motoRun(int type){
	//1 前进 2后退 3右转弯 4左转弯
	if(type==1){
		ledcWrite(1,180);
//		ledcWrite(2,180);
//		ledcWrite(3,180);
		ledcWrite(4,180);
	}else if(type==2){
		ledcWrite(1,0);
		ledcWrite(2,180);
		ledcWrite(3,180);
		ledcWrite(4,0);
	}else if(type==3){
		ledcWrite(1,180);
		ledcWrite(2,0);
		ledcWrite(3,0);
		ledcWrite(4,0);
	}else {
		ledcWrite(1,0);
		ledcWrite(2,0);
		ledcWrite(3,0);
		ledcWrite(4,180);
	}
}
//停车
void motoStop(){
        ledcWrite(1,0);
        ledcWrite(2,0);
        ledcWrite(3,0);
        ledcWrite(4,0);
}
							

注意:由于每个人的接线都会有些不同,所以电机的引脚需要根据自己的小车的情况来更改。

将以上代码验证上传至零知ESP32上,然后通过串口发送数字1,2,3,4控制小车前进,后退.右转弯,左转弯,就可以控制小车,我们可以根据轮子的转动情况来修改代码中电机的引脚或者切换电机接口的位置。