课程目标
- 最简小车的设计
- 双车辆运动
- 小车的多种运动形态实现
电路搭建
所需材料
UNO * 1
L298N驱动模块 * 1
直流 * 2
7~12V外接电源 * 1
杜邦线若干
小车组件
电路连接
程序编写
练习一:小车的循环运动
通过编写程序,循环实现小车的前进一秒、后退一秒、左转一秒、右转一秒、停止一秒功能。
图形化方式:
如果有同学发现,按照下面的程序上传后,小车的运动有问题,那么可以通过改变直流电机的接线或者修改数字输出引脚的高低电平即可。
代码方式:
/* 项目名称:循环控制小车运动
* 项目时间:2022.03.28
* 项目作者:MRX
*/
int IN1 = 4; // IN1连接 D4
int IN2 = 5;
int ENA = 9;
int IN3 = 6; // IN3连接D6
int IN4 = 7;
int ENB = 10;
unsigned long delayme = 1000; //等待时间
int value = 100; // 输出的值
//前进
void fward() {
digitalWri(IN1,HIGH);
digitalWrite(IN2,LOW);
Write(ENA,value);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(ENB,value);
}
//后退
void bk() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,value);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,value);
}
//右转
void right() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,value);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,0);
}
//左转
void left() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,0);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,value);
}
// 停止
void stop() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
analogWrite(ENA,0);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
analogWrite(ENB,0);
}
void setup(){
for (int i = 4;i <= 10;i++){
nMode(i, OUTPUT);
}
}
void loop(){
forward();
delay(delaytime);
forward();
delay(delaytime);
left();
delay(delaytime);
right();
delay(delaytime);
stop();
delay(delaytime);
}
练习二:可调速的小车
通过读取可调的值,来实现车速的变化。
电路接线:
在上图的基础上,增加一个可调电位器连接到UNO的A0脚。
图形化方式:
代码方式:
/* 项目名称:电位器控制小车速度
* 项目时间:2022.03.28
* 项目作者:MRX
*/
int IN1 = 4; // IN1 connected to pin 4
int IN2 = 5;
int ENA = 9;
int IN3 = 6; // IN3 connected to pin 6
int IN4 = 7;
int ENB = 10;
unsigned long delaytime = 1000; //delay time
int value = 0; // the duty cycle
void forward() {
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(ENA,value);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(ENB,value);
}
void back() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,value);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,value);
}
void right() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,100);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,0);
}
void left() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,0);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,100);
}
void stop() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
analogWrite(ENA,0);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
analogWrite(ENB,0);
}
void setup(){
for (int i = 4;i <= 10;i++){
pinMode(i, OUTPUT);
}
pinMode(A0,INPUT);
}
void loop(){
value = (map(analogRe(A0), 0, 1023, 0, 255));
forward();
}
小广播
热门活动
换一批
更多
最新机器人文章
更多开源项目推荐
- LT6656BCS6-2.5、2.5V 精密电流和升压电压基准的典型应用
- 使用 Semtech 的 SC8863 的参考设计
- MC78M12BTG 12V 电流调节器的典型应用
- DC2297A-B,用于 LT8570-1EDD 65V 电源开关的演示板,5V = VIN = 10V,Vout = 12V,125mA
- 用于PDA应用的MIC4826 EL驱动器(3in/2灯)
- 超级电容保护板6串[未验证]
- 用于卫星数字多媒体广播应用的 LNA 使用 BFP640F SiGe 晶体管
- 使用 ROHM Semiconductor 的 BU4230 的参考设计
- NCP612 100 mA CMOS 低 Iq 稳压器在 SC70-5 中的典型应用
- OP297FSZ精密电流泵运算放大器的典型应用
更多精选电路图
更多热门文章
更多每日新闻
更多往期活动
11月13日历史上的今天
厂商技术中心