课程目标
- 最简小车的设计
- 双车辆运动
- 小车的多种运动形态实现
电路搭建
所需材料
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();
}
上一篇:基于3D形状重建网络的机器人抓取规划方法
下一篇:机器人视觉伺服控制系统有哪些分类方式?
- 热门资源推荐
- 热门放大器推荐
小广播
热门活动
换一批
更多
最新机器人文章
更多开源项目推荐
- LTC4162IUFD-FADM 9V 至 35V 2 节 3.2A 充电器的典型应用,具有 PowerPath 和 2A 输入限制
- LTC2261-12 演示板,12 位,125Msps ADC,LVDS 输出,5-170MHz
- 使用 Analog Devices 的 LTC1453 的参考设计
- 【训练营】涂鸦智能RGB小彩灯-974688A
- 使用 Analog Devices 的 LT124XCN8 的参考设计
- 双驱动平衡、动量小车
- NCV612 100 mA CMOS 低 Iq 稳压器在 SC70-5 中的典型应用
- LT6656BIDC-5、5V 低功率 ADC 电压基准的典型应用
- AM3GW-2412SZ 12V 3W DC/DC 转换器的典型应用
- AM1/4S-1215SZ 15V 0.25 瓦 DC-DC 转换器的典型应用
更多精选电路图
更多热门文章
更多每日新闻
更多往期活动
11月21日历史上的今天
厂商技术中心