STC89C51基础及项目第13天:小车go、软件调速

1. 小车散件组装_推荐相同接线(259.104)

2. L9110s电机控制器接线(260.105)

L9110s电机模块开发

  • 接通VCC,GND 模块电源指示灯亮, 以下资料来源官方,但是不对,根据下节课实际调试
    • IA1输入高电平,IA1输入低电平,【OA1 OB1】电机正转;
    • IA1输入低电平,IA1输入高电平,【OA1 OB1】电机反转;
    • IA2输入高电平,IA2输入低电平,【OA2 OB2】电机正转;
    • IA2输入低电平,IA2输入高电平,【OA2 OB2】电机反转。
      STC89C51基础及项目第13天:小车go、软件调速_第1张图片
  • 和上官一号的接线(外加一根gnd-gnd的线:接地线,否则信号传输会有问题)
    STC89C51基础及项目第13天:小车go、软件调速_第2张图片

3. L9110前后左右控制小车(261.106)

  • 代码(20./01. 小车L9110s电机驱动)
#include "reg52.h"
#include "intrins.h"

sbit RightCtrlA = P3^2;
sbit RightCtrlB = P3^3;

sbit LeftCtrlA  = P3^4;
sbit LeftCtrlB  = P3^5;

void Delay1000ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	i = 8;
	j = 1;
	k = 243;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void goForward(){	
	LeftCtrlA  = 0;
	LeftCtrlB  = 1;
	
	RightCtrlA = 0;
	RightCtrlB = 1;
}
void goLeft(){
	LeftCtrlA  = 0;
	LeftCtrlB  = 0;
	
	RightCtrlA = 0;
	RightCtrlB = 1;
}
void goRight(){
	LeftCtrlA  = 0;
	LeftCtrlB  = 1;
	
	RightCtrlA = 0;
	RightCtrlB = 0;
}
void goBack(){
	LeftCtrlA  = 1;
	LeftCtrlB  = 0;
	
	RightCtrlA = 1;
	RightCtrlB = 0;
}

void main(){
	while(1){
		goForward();
		Delay1000ms();
		Delay1000ms();
		goBack();
		Delay1000ms();
		Delay1000ms();
		goLeft();
		Delay1000ms();
		Delay1000ms();
		goRight();
		Delay1000ms();
		Delay1000ms();
	}
}

4. 电机相关代码封装_分文件编程(262.107)

  • 代码(20./02. 小车L9110s电机驱动分文件函数封装)

5. 串口控制小车(方向)(263.108)

  1. 串口分文件编程进行代码整合——具体过程看课程,主要考验C语言功底和代码调试能力,通过现象来改代码;
  2. 接入蓝牙模块,通过蓝牙控制小车,实现6.6.1的课程需求,蓝牙透传太容易了;
  3. 添加点动控制,如果APP支持按下一直发数据、松开就停止发数据(蓝牙调试助手的自定义按键不能实现),就能实现前进按键按下后小车一直往前走的功能。
  • 若出现项目中找不到某个c文件,解决办法:

    1. 右键点击“”(已存在的文件添加至工程资料1)
      STC89C51基础及项目第13天:小车go、软件调速_第3张图片
    2. 点击丢失的文件名、Add、Close
      STC89C51基础及项目第13天:小车go、软件调速_第4张图片
    3. 成功
      STC89C51基础及项目第13天:小车go、软件调速_第5张图片
  • 代码(20./03. 串口控制小车)

6. 手机通过蓝牙控制小车_自定义按键(264.109)

  • 再接一根线 5V-VCC,开发板的 5V-面包板的正极,即可让小车脱离电脑供电开发板的束缚,自由的跑起来
  • 自定义按键
    1. 点击“设置方向按钮”
      STC89C51基础及项目第13天:小车go、软件调速_第6张图片
    2. 点击“top”
      STC89C51基础及项目第13天:小车go、软件调速_第7张图片
    3. 如下设置,确认
      STC89C51基础及项目第13天:小车go、软件调速_第8张图片
    4. 设置成功,其他按钮同理
      STC89C51基础及项目第13天:小车go、软件调速_第9张图片
    5. 取消勾选“设置方向按钮”,即可方向控制
      STC89C51基础及项目第13天:小车go、软件调速_第10张图片

7. 蓝牙小车的点动控制(265.110)

  • 思路:main函数:while(1){stop()}
  • 代码(20./04. 蓝牙小车点动)
#include "motor.h"
#include "delay.h"
#include "uart.h"

void main(){
	UartInit();
	
	while(1){
		stop();
	}
}

8. 串口自动发送数据测试上节课效果(266.111)

9. 软件调速(267.112)

  • 原理: 全速前进是 LeftCon1A = 0 LeftCon1B = 1;完全停止是 LeftCon1A = 0 LeftCon1B = 0;
    那么单位时间内,比如20ms,有15ms是前进 5ms是停止,速度就会比5ms前进 15ms停止获得的功率多,相应的速度更快
  • 开发: 借用 PWM 的舵机控制代码
    STC89C51基础及项目第13天:小车go、软件调速_第11张图片
  • 代码(20./05. PWM小车调速)

10. 左右电机的各自调速管理(268.113)

  • 原理: 左轮定时器0调速,右轮定时器1调速,那么左转就是右轮速度大于左轮、右转就是左轮速度大于右轮
  • 开发: 有手就行
  • 代码(20./06. PWM小车差速转弯)

你可能感兴趣的:(单片机)