首页 > 其他分享 >Arduino小车感应跟随

Arduino小车感应跟随

时间:2024-07-10 22:41:04浏览次数:7  
标签:Arduino 小车 void 感应 len HIGH LOW digitalWrite pinMode

//前进
void Forward(){
  digitalWrite(2,LOW);
  digitalWrite(3,HIGH);
  digitalWrite(4,HIGH);
  digitalWrite(5,LOW);
}
//后退
void BackOff(){
  digitalWrite(2,HIGH);
  digitalWrite(3,LOW);
  digitalWrite(4,LOW);
  digitalWrite(5,HIGH);
}
//左转
void TurnLeft(){
  //小车左转(左轮后退)
  digitalWrite(2,HIGH);
  digitalWrite(3,LOW);
  //小车左转(右轮前进)
  digitalWrite(4,HIGH);
  digitalWrite(5,LOW);
}
//右转
void TurnRight(){
  //小车右转(右轮后退)
  digitalWrite(4,LOW);
  digitalWrite(5,HIGH);
  //小车右转(左轮前进)
  digitalWrite(2,LOW);
  digitalWrite(3,HIGH);
}

//停止
void Stop(){
  digitalWrite(2,LOW);
  digitalWrite(3,LOW);
  digitalWrite(4,LOW);
  digitalWrite(5,LOW);
}

//获取距离
long getLen(){
  //发送一个10us的信号给超声波
  digitalWrite(9,LOW);
  delayMicroseconds(2);
  digitalWrite(9,HIGH);
  delayMicroseconds(10);
  digitalWrite(9,LOW);//超声波内部开始震荡,准备发送波
  long time;
  long length;
  //关注Echo高电平维持的时间,代表超声波发送到返回的时间
  time = pulseIn(8,HIGH);
  //距离= 时间(us) * 速度(340m/s)=》 微秒 * 厘米 / 往返 2
  // 微秒转秒;米转厘米;=》(time/1000000) * (340*100) / 2
  length = time * 0.017000;
  return length;
}

void Init(){
  // put your setup code here, to run once:
  //串口初始化
  //配置2,3口为输出引脚(左轮初始化)
  pinMode(2,OUTPUT);
  pinMode(3,OUTPUT);
  //配置4,5口为输出引脚(右轮初始化)
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  //Trig接9,通过9发送一个触发信号给超声波
  pinMode(9,OUTPUT);
  //Echo接8,通过读取8高电平维持的实践,确认超声波哦在空气中传播的时间
  pinMode(8,INPUT);
  //pinMode(LED_BUILTIN,OUTPUT);
  //串口
  //Serial.begin(9600);
}

void setup() {
  // put your setup code here, to run once:
  //初始化
  Init();
}

void loop() {
  // put your main code here, to run repeatedly:
  delay(20); //延迟一下,放缓超声波交互速度,比较不卡顿(加强体验)
  long len = getLen();
  //距离大于3且小于13,后退
  if(len > 3 && len < 13){
    BackOff();
  }
  //距离大于14且小于40,前进
  if(len > 14 && len < 40){
    Forward();
  }
  //距离大于50,停下来
  if(len > 50){
    Stop();
  }
  //Serial.println(len);
  //Serial.println("cm");
}

 

标签:Arduino,小车,void,感应,len,HIGH,LOW,digitalWrite,pinMode
From: https://www.cnblogs.com/dzw159/p/18295158

相关文章

  • INA186-Q电流感应放大器
    一、主要特征符合面向汽车应用的AEC-Q100标准,温度等级1:-40℃~125℃宽共模电压VCM:-0.2V~40V,最高可承受42V的电压低输入偏置电流Iib:500pA(典型值)低电压电压VS:1.7V~5.5V低静态电流Iq:48uA(典型值)共模抑制比:120dB(最小值)增益误差Eg:±1%(最大值)增益便宜:10ppm/℃(最大值)......
  • 松灵机器人scout mini小车 自主导航(2)——仿真指南
    松灵机器人Scoutmini小车仿真指南之前介绍了如何通过CANTOUSB串口实现用键盘控制小车移动。但是一直用小车测试缺乏安全性。而松灵官方贴心的为我们准备了gazebo仿真环境,提供了完整的仿真支持库,本文将介绍如何上手使用仿真。官方仓库地址:https://github.com/agilexrobotics/u......
  • 松灵机器人scout mini小车 自主导航(1)
    松灵机器人scoutmini小车自主导航最近实验室来了个松灵机器人scoutmini的底座。本着学习的目的对其进行了研究,从最基础的连接开始。1.硬件连接准备松灵scoutmini提供了航空插头用于can串口转USB的操作。将通讯航空插头连接到小车对应插口。然后将CAN线引出,将CAN线中的C......
  • 强化学习-表格型算法Q学习稳定倒立摆小车
    [[Q学习]]是表格型算法的一种,主要维护了一个Q-table,里面是状态-动作对的价值,分别由一个状态和一个动作来索引。这里以一个经典的道理摆小车问题来说明如何使用[[Q学习]]算法。这里会用到两个类,agent和brain。brain类中来维护[[强化学习的基本概念|强化学习]]算法的......
  • Arduino 驱动红外(IR)接收模块
    以下是使用ArduinoUnoR3驱动红外(IR)接收模块的详细说明、接线图和代码示例。所需材料ArduinoUnoR3红外接收模块(例如红外接收头,例如1838B)面包板和连接线接线步骤连接红外接收模块:将红外接收模块的OUT引脚连接到ArduinoUno的数字引脚(例如D2)。将红外接收模块的GND引......
  • Arduino 驱动红外避障模块
    以下是使用ArduinoUnoR3驱动红外避障模块的详细说明、接线图和代码示例。所需材料ArduinoUnoR3红外避障模块(例如TCRT5000)面包板和连接线接线步骤连接红外避障模块:红外避障模块通常有一个发射器和一个接收器。将红外避障模块的VCC引脚连接到ArduinoUno的5V引脚。......
  • Arduino 驱动360度旋转传感器(如旋转编码器)
    以下是使用ArduinoUnoR3驱动一个360度旋转传感器(如旋转编码器)的详细说明、接线图和代码示例,其中传感器引脚为CLK、DT、SW、+、GND。所需材料ArduinoUnoR3360度旋转传感器(旋转编码器)面包板和连接线接线步骤连接旋转传感器:将旋转编码器的CLK引脚连接到ArduinoUno的......
  • Arduino 驱动激光传感器模块
    以下是使用ArduinoUnoR3驱动激光传感器模块的详细说明、接线图和代码示例。激光检测模块所需材料ArduinoUnoR3激光传感器模块(例如KY-008激光发射模块)面包板和连接线接线步骤连接激光传感器:将激光传感器模块的S引脚(信号引脚)连接到ArduinoUno的数字引脚(例如D2)。将......
  • Arduino 驱动U型光电传感器模块
    以下是使用ArduinoUnoR3驱动U型光电传感器模块的详细说明、接线图和代码示例。检测物品所需材料ArduinoUnoR3U型光电传感器模块面包板和连接线接线步骤连接U型光电传感器:U型光电传感器一般有发射管和接收管两个部分。将U型光电传感器的输出引脚(通常标记为OUT或DO......
  • Arduino 驱动红外寻迹模块
    以下是使用ArduinoUnoR3驱动红外寻迹模块的详细说明、接线图和代码示例。所需材料ArduinoUnoR3红外寻迹模块(例如TCRT5000)面包板和连接线接线步骤连接红外寻迹模块:红外寻迹模块通常有一个发射器和一个接收器。将红外寻迹模块的VCC引脚连接到ArduinoUno的5V引脚。......