My Arduino vol 5 — 面向对象地编写“圆梦小车”程序 -电机
辞职得空,最近主要是看杂七杂八的书为主。前日看到“嵌入式之梦”的BOSS在微博上亮了一下。就想到了随车附送的那段arduino演示程序。我觉得大部分初学者应该都看的好痛苦吧= =。
既然arduino支持c++,我也就以我业余的c++水平写上一段小小的教程望抛砖引雨吧。
?
阅读本文需要的基本知识:H桥电路基本作用,Arduino开发的基本环境。
?
第一章 让马达动起来基本电路及说明小车的动力装置主要是两侧的两个大轮子,分别是用独立的H桥构建出来的。
分别引出3只脚:CT1,CT2,CT3
CT1:PWM信号输入脚,你可以认为这是油门。
CT2,CT3:两路高低输入,可以让电机正转反转和不转,你可以认为这是自动排挡。
我们枚举一下所有信号输入和其对应的行动状态。这里都只先考虑一侧电机的运动状态。
?
表1-控制电路输入值与电机工作状态
Ct1Ct2Ct3状态X00刹车PWM10正转PWM01反转011滑行111刹车通过表格我们得出一侧电机的运动状态也只有4种,刹车,正转,反转,滑行,刹车。
?
建模及分析面向对象中建模很重要的两个概念是“属性”和“行为”。通过上面的分析,现在的电机的属性只有3路输入电路,行为就是4种运动状态。
类名Motor(马达)属性ct1,ct2,ct3行为forward?
转换为C++的代码的类定义为:
#include <Motor.h>//初始化马达//这里使用的是9,8,7三个脚const int L_CT1 = 9;const int L_CT2 = 8;const int L_CT3 = 7;//通过构造函数初始化Motor leftMotor(L_CT1, L_CT2, L_CT3);void setup() {}void loop{//模式改为前进,速度100leftMotor.forward();leftMotor.setSpeed(100);delay(1000);//模式改为停止leftMotor.stop();leftMotor.setSpeed(0);//模式改为后退,速度为50leftMotor.backward();leftMotor.setSpeed(100);delay(1000);}?OK,基本上电机部分已经编码完成。虽然有些地方还可以继续修改。下一篇,我将会将两个电机作为整体来描述小车的动力部分编码。
?