嵌入式
返回首页

浅谈Molex的下一代电动汽车电池连接系统

2024-01-26 来源:elecfans

课程目标

  • 学习走迷宫的右手法则的应用

  • 根据算法逻辑实现走迷宫功能

  • 能根据场地实际要求进行车辆调试

相关知识

**机器人迷宫项目:**是常见的机器人竞赛项目,在一个搭建好的迷宫场景内,设计机器人,实现从入口顺利抵达出口,根据完成时间的长短来进行评分。

右手法则: 针对有墙壁的迷宫,只要顺着墙壁走,遇到可以转向的口子始终向右,转向失败再向右转到下一个可以走的方向,这种方法只对树形迷宫有效。对于有循环的迷宫就需要设计更加智能化的机器人才能实现。

**红外接近传感器:**红外接近传感器是一种集发射与接收于一体的光电开关传感器。当发出的红外光碰撞到范围内的目标时,它会反射到光电二极管上,从而实现监测判断。

1.jpg

电路搭建

所需材料

ArduinoUNO * 1
红外接近传感器 * 3
上节课的车辆结构 * 1
LED * 1
杜邦线若干

电路连接

图片

程序编写

练习一:红外接近传感器控制开关灯

手靠近传感器时,LED灯开,离开传感器时,LED灯关。

图形化方式:

读取9号管脚上的信号值为低电平,说明有障碍物靠近,这时候点亮2号管脚上的LED。

图片

代码方式:


/* 项目名称:红外控制开关灯

 * 项目时间:2022.04.07

 * 项目作者:MRX

 */

int SensorPin = 9;

int LedPin = 2;

void setup() {

  pinMode(SensorPin,INPUT);

  pinMode(LedPin,OUTPUT);

}



void loop() {

  if(digitalRead(SensorPin)){

    digitalWrite(LedPin,LOW);

  }

  else{

    digitalWrite(LedPin,HIGH);

  }

}


练习二:沿墙面前进的小车

使用一个传感器,让小车能够沿着墙面前行,效果如下:

图片

原理分析:

右手法则逻辑分析。

图片

电路接线:

图片

图形化方式:

图片

代码方式:


/* 项目名称:小车贴墙走

 * 项目时间:2022.04.07

 * 项目作者:MRX

 */

int IN1 = 2;   // IN1 connected to pin 4

int IN2 = 4;   

int ENA = 3; 

int IN3 = 6;   // IN3 connected to pin 6

int IN4 = 7;   

int ENB = 5;  

int value = 255;   // the duty cycle

const int SensorPin = 10;



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,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(){

  Serial.begin(9600);

  for (int i = 2;i <= 7;i++){

    pinMode(i, OUTPUT);

    }

  pinMode(SensorPin,INPUT);

}


void loop(){

  if (digitalRead(SensorPin) == LOW) {

      Left();

    } else{

      Right();

    } 

}


练习三:走迷宫小车

编程控制小车沿着障碍物行走,效果如下:

图片

图形化方式:

图片



代码方式:


项目所涉及到的延时及电机正反转,都要根据自己的接线来进行调整。


/* 项目名称:走迷宫

 * 项目时间:2022.04.07

 * 项目作者:MRX

 */

int IN1 = 2;   // IN1 connected to pin 4

int IN2 = 4;   

int ENA = 3; 

int IN3 = 6;   // IN3 connected to pin 6

int IN4 = 7;   

int ENB = 5;  

int value = 255;   // 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,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 TurnLeft() {

  digitalWrite(IN1,LOW);

  digitalWrite(IN2,HIGH);

  analogWrite(ENA,100);

  digitalWrite(IN3,HIGH);

  digitalWrite(IN4,LOW);

  analogWrite(ENB,100);

}



void setup(){

  for (int i = 2;i <= 7;i++){

    pinMode(i, OUTPUT);

    }

  for (int i = 8;i <= 10;i++){

    pinMode(i,INPUT);

  }


}


void loop(){

  if (digitalRead(8) == LOW) {

    TurnLeft();

    delay(500);



  } else if (digitalRead(9) == LOW) {

    TurnLeft();

    delay(200);

  } else if (digitalRead(10) == LOW) {

    Left();

  } else {

    Right();

  }

}


进入嵌入式查看更多内容>>
相关视频
  • 5G边缘计算

  • Verilog RTL编程实践

  • FPGA时序约束

  • 领航者ZYNQ开发板视频

  • Verilog HDL数字集成电路设计原理与应用

  • 正点原子领航者ZYNQ视频第一期FPGA设计篇

精选电路图
  • 如何从标准USB插座构建双+5V/-5V电源

  • 基于2N3055的晶体管功率放大器电路

  • 液位报警指示器电路

  • 基于两个小晶体管构建一个的功率放大器

  • 基于LH0032构建的视频放大器电路

  • 超声波运动检测器的电路图

    相关电子头条文章