课程目标
最简单的汽车设计。双电机控制车辆的运动。汽车的各种运动形式都是通过电路构造来实现的。
所需材料
ArduinoUNO*1
L298N驱动模块*1
直流电机*2
7~12V外接电源*1
一些杜邦线
推车组件
电路连接
编程
练习1:小车做圆周运动
通过编写程序,小车可以向前循环一秒,后退一秒,左转一秒,右转一秒,停止一秒。
以图形方式:
如果有同学按照以下流程上传后发现小车运动有问题,可以更改直流电机的接线或者修改数字输出引脚的高低电平。
代码方法:
/* 项目名称: 循环控制小车运动* 项目时间:2022.03.28 * 项目作者:MRX */int IN1=4; //IN1 连接到D4int IN2=5;整数ENA=9;整数IN3=6; //IN3 连接到D6int IN4=7;整数ENB=10;无符号长延迟时间=1000; //等待时间int value=100; //模拟输出的值//forward voidforward() { digitalWrite(IN1,HIGH);数字写入(IN2,低);模拟写入(ENA,值);数字写入(IN3,高);数字写入(IN4,低); AnalogWrite(ENB,value);}//返回void back() { digitalWrite(IN1,LOW);数字写入(IN2,高);模拟写入(ENA,值);数字写入(IN3,低);数字写入(IN4,高); AnalogWrite(ENB,value);}//void right() { digitalWrite(IN1,LOW);数字写入(IN2,高);模拟写入(ENA,值);数字写入(IN3,低);数字写入(IN4,高); AnalogWrite(ENB,0);}//左转void left() { digitalWrite(IN1,LOW);数字写入(IN2,高);模拟写入(ENA,0);数字写入(IN3,低);数字写入(IN4,高); AnalogWrite(ENB,value);}//停止void stop() { digitalWrite(IN1,LOW) ;数字写入(IN2,低);模拟写入(ENA,0);数字写入(IN3,低);数字写入(IN4,低); AnalogWrite(ENB,0);}void setup(){ for (int i=4;i=10;i++){ pinMode(i, OUTPUT); } }}无效循环(){转发();延迟(延迟时间);向前();延迟(延迟时间);左边();延迟(延迟时间);正确的() ;延迟(延迟时间);停止(); delay(delaytime);} 练习2:可调速小车
通过读取可调电位器的值,车速发生变化。
电路接线:
根据上图,添加一个可调电位器连接到UNO的A0引脚。
以图形方式:
代码方法:
/* 项目名称: 电位器控制小车速度* 项目时间:2022.03.28 * 项目作者:MRX */int IN1=4; //IN1 连接到引脚4int IN2=5;整数ENA=9;整数IN3=6; //IN3 连接到引脚6int IN4=7;整数ENB=10;无符号长延迟时间=1000; //延迟时间int值=0; //占空比voidforward() { digitalWrite(IN1,HIGH);数字写入(IN2,低);模拟写入(ENA,值);数字写入(IN3,高);数字写入(IN4,低); AnalogWrite(ENB,值);}void back() { digitalWrite(IN1,LOW);数字写入(IN2,高);模拟写入(ENA,值);数字写入(IN3,低);数字写入(IN4,高); AnalogWrite(ENB,值);}void right() { digitalWrite(IN1,LOW);数字写入(IN2,高);模拟写入(ENA,100);数字写入(IN3,低);数字写入(IN4,高); AnalogWrite(ENB,0);}void left() { digitalWrite(IN1,LOW);数字写入(IN2,高);模拟写入(ENA,0);数字写入(IN3,低);数字写入(IN4,高); AnalogWrite(ENB,100);}void stop() { digitalWrite(IN1,LOW);数字写入(IN2,低);模拟写入(ENA,0);数字写入(IN3,低);数字写入(IN4,低); AnalogWrite(ENB,0);}void setup(){ for (int i=4;i=10;i++){ pinMode(i, OUTPUT); } } pinMode (A0,INPUT);}void循环(){ value=(map(analogRead(A0), 0, 1023, 0, 255));向前();}