精华内容
下载资源
问答
  • arduino超声波避障小车

    2014-06-28 10:20:54
    arduino超声波避障小车,里面有proteus仿真文件,,,以及写好的文档,,
  • 基于Arduino超声波避障小车

    万次阅读 多人点赞 2019-03-17 12:03:41
    基于Arduino超声波避障小车 利用超声波,判断前方是否有障碍物,如果有小车转向,没有小车直行 所需材料 小车车架及车轮(可以用sw建模然后利用3D打印机打印,也可以在网上直接购买小车地板,用纸板最廉价O...

    基于Arduino的超声波避障小车

    利用超声波,判断前方是否有障碍物,如果有小车转向,没有小车直行

    所需材料

    1. 小车车架及车轮(可以用sw建模然后利用3D打印机打印,也可以在网上直接购买小车地板,用纸板最廉价O(∩_∩)O哈哈~)
    2. Arduino开发板及扩展板
    3. 两个360度舵机(我是以舵机为驱动的,也可以用电机)
    4. 杜邦线若干
    5. 超声波模块
    6. 锂电池

    组装小车及模块调试

    舵机调试利用代码使舵机前传后传停止

    参考代码如下:

    #include <Servo.h>
    Servo servo;  //定义舵机
    void setup()
    {
      servo.attach(2);//舵机串口设为2
    }
    void loop()
    {
        servo.write( 360 );//舵机前转
        delay(1000);
        servo.write( -360 );//舵机后转
        delay(1000);
        servo.write( 90 );//舵机停止
        delay(1000);
    }
    

    超声波模块调试:

    int Ecoh=A6;//Ecoh为回声脚
    int Trig=A7;//Trig为触发脚
    int Distance; 
    void setup()
    {
      Serial.begin(9600);//初始化串口
      pinMode(Ecoh,INPUT);//定义超声波输入脚
      pinMode(Trig,OUTPUT);//定义超声波输出脚 
    }
    void loop()//距离测试
    {
        digitalWrite(Trig,LOW);//给触发脚低电平2微妙
        delayMicroseconds(2);
        digitalWrite(Trig,HIGH);//给触发脚高电平10微妙
        delayMicroseconds(10);
        digitalWrite(Trig,LOW);//给触发脚持续低电平
        float Fdistance=pulseIn(Ecoh,HIGH);//读取高电平时间
        Fdistance=Fdistance/58;//L(m)=t(s)*344/2
        Distance=Fdistance;
        if(Fdistance<400)
        {
          Serial.print("Distance:");//输出距离
          Serial.print(Fdistance);//距离
          Serial.print("cm\n");
        }
        else
          Serial.print("!!!out of range!!!\n");
           
    }
    

    小车避障代码.

    #include <Servo.h>
    Servo servo_pin_right;  //定义右驱动
    Servo servo_pin_left;  //定义左驱动
    int Ecoh=A6;//Ecoh为回声脚
    int Trig=A7;//Trig为触发脚
    int Distance; 
    void setup()
    {
      Serial.begin(9600);//初始化串口
      pinMode(Ecoh,INPUT);//定义超声波输入脚
      pinMode(Trig,OUTPUT);//定义超声波输出脚 
      servo_pin_right.attach(9);//右驱动串口设为9
      servo_pin_left.attach(10);//左驱动串口设为10 
    }
    //===========小车基本运动===============
    //void car_go(int time)//小车直行
    void car_go()
    {
      servo_pin_left.write( 360 );//左轮前进
      servo_pin_right.write( -360);//右轮前进
      //delay( 100*time );//执行时间
    }
    void car_left(int time)//小车左转
    {
      servo_pin_left.write( 90);//左轮后退
      servo_pin_right.write( -360 );//右轮前进
      delay( 100*time );//执行时间
    }
    void car_back(int time)//小车后退
    {
      servo_pin_left.write( -360 );//左轮后退
      servo_pin_right.write(360 );//右轮后退
      delay( 100*time );//执行时间
    }
    void car_right(int time)//小车右转
    {
      servo_pin_left.write( 360 );//左轮前进
      servo_pin_right.write( 90);//右轮后退
      delay( 100*time );//执行时间
    }
    void car_stop(int time)//小车停止
    {
      servo_pin_left.write( 90 );//左轮停止
      servo_pin_right.write(90 );//右轮停止
      delay( 100*time );//执行时间
    }
    void Distance_test()//距离测试
    {
        digitalWrite(Trig,LOW);//给触发脚低电平2微妙
        delayMicroseconds(2);
        digitalWrite(Trig,HIGH);//给触发脚高电平10微妙
        delayMicroseconds(10);
        digitalWrite(Trig,LOW);//给触发脚持续低电平
        float Fdistance=pulseIn(Ecoh,HIGH);//读取高电平时间
        Fdistance=Fdistance/58;//L(m)=t(s)*344/2
        Distance=Fdistance;
        if(Fdistance<400)
        {
          Serial.print("Distance:");//输出距离
          Serial.print(Fdistance);//距离
          Serial.print("cm\n");
        }
        else
          Serial.print("!!!out of range!!!\n");
           
    }
    void loop()
    {
      while(1)
      {
        Distance_test();
        if(Distance<24)
        {
          while(Distance<24)
          {   
            car_right(2);
            car_stop(1);
            Distance_test();
          }
        }
         else
      	  car_go();
      }
       
    }
    

    在这里插入图片描述

    展开全文
  • arduino超声波避障小车代码

    千次阅读 2020-03-19 21:46:24
    // 定义超声波信号发出接口 void setup() { // put your setup code here, to run once: //串口初始化 Serial.begin(9600); //舵机引脚初始化 myServo.attach(9); //测速引脚初始化 pinMode(leftMotor1, OUTPUT); ...
    #include <Servo.h>
     
    #define STOP      0
    #define FORWARD   1
    #define BACKWARD  2
    #define TURNLEFT  3
    #define TURNRIGHT 4
     
    int leftMotor1 = 10;
    int leftMotor2 = 11;
    int rightMotor1 = 12;
    int rightMotor2 = 13;
     
    int leftPWM = 5;
    int rightPWM = 6;
     
    Servo myServo;  //舵机
     
    int inputPin=7;   // 定义超声波信号接收接口
    int outputPin=8;  // 定义超声波信号发出接口
     
    void setup() {
      // put your setup code here, to run once:
      //串口初始化
      Serial.begin(9600);
      //舵机引脚初始化
      myServo.attach(9);
      //测速引脚初始化
      pinMode(leftMotor1, OUTPUT);
      pinMode(leftMotor2, OUTPUT);
      pinMode(rightMotor1, OUTPUT);
      pinMode(rightMotor2, OUTPUT);
      pinMode(leftPWM, OUTPUT);
      pinMode(rightPWM, OUTPUT);
      //超声波控制引脚初始化
      pinMode(inputPin, INPUT);
      pinMode(outputPin, OUTPUT);
    }
     
    void loop() {
      // put your main code here, to run repeatedly:
      avoidance();
    }
    void motorRun(int cmd,int value)
    {
      analogWrite(leftPWM, value);  //设置PWM输出,即设置速度
      analogWrite(rightPWM, value);
      switch(cmd){
        case FORWARD:
          Serial.println("FORWARD"); //输出状态
          digitalWrite(leftMotor1, HIGH);
          digitalWrite(leftMotor2, LOW);
          digitalWrite(rightMotor1, HIGH);
          digitalWrite(rightMotor2, LOW);
          break;
         case BACKWARD:
          Serial.println("BACKWARD"); //输出状态
          digitalWrite(leftMotor1, LOW);
          digitalWrite(leftMotor2, HIGH);
          digitalWrite(rightMotor1, LOW);
          digitalWrite(rightMotor2, HIGH);
          break;
         case TURNLEFT:
          Serial.println("TURN  LEFT"); //输出状态
          digitalWrite(leftMotor1, HIGH);
          digitalWrite(leftMotor2, LOW);
          digitalWrite(rightMotor1, LOW);
          digitalWrite(rightMotor2, HIGH);
          break;
         case TURNRIGHT:
          Serial.println("TURN  RIGHT"); //输出状态
          digitalWrite(leftMotor1, LOW);
          digitalWrite(leftMotor2, HIGH);
          digitalWrite(rightMotor1, HIGH);
          digitalWrite(rightMotor2, LOW);
          break;
         default:
          Serial.println("STOP"); //输出状态
          digitalWrite(leftMotor1, LOW);
          digitalWrite(leftMotor2, LOW);
          digitalWrite(rightMotor1, LOW);
          digitalWrite(rightMotor2, LOW);
      }
    }
    void avoidance()
    {
      int pos;
      int dis[3];//距离
      motorRun(FORWARD,200);
      myServo.write(90);
      dis[1]=getDistance(); //中间
     
      if(dis[1]<30)
      {
        motorRun(STOP,0);
        for (pos = 90; pos <= 150; pos += 1)
        {
          myServo.write(pos);              // tell servo to go to position in variable 'pos'
          delay(15);                       // waits 15ms for the servo to reach the position
        }
        dis[2]=getDistance(); //左边
        for (pos = 150; pos >= 30; pos -= 1)
        {
          myServo.write(pos);              // tell servo to go to position in variable 'pos'
          delay(15);                       // waits 15ms for the servo to reach the position
          if(pos==90)
            dis[1]=getDistance(); //中间
        }
        dis[0]=getDistance();  //右边
        for (pos = 30; pos <= 90; pos += 1)
        {
          myServo.write(pos);              // tell servo to go to position in variable 'pos'
          delay(15);                       // waits 15ms for the servo to reach the position
        }
        if(dis[0]<dis[2]) //右边距离障碍的距离比左边近
        {
          //左转
          motorRun(TURNLEFT,250);
          delay(500);
        }
        else  //右边距离障碍的距离比左边远
        {
          //右转
          motorRun(TURNRIGHT,250);
          delay(500);
        }
      }
    }
    int getDistance()
    {
      digitalWrite(outputPin, LOW); // 使发出发出超声波信号接口低电平2μs
      delayMicroseconds(2);
      digitalWrite(outputPin, HIGH); // 使发出发出超声波信号接口高电平10μs,这里是至少10μs
      delayMicroseconds(10);
      digitalWrite(outputPin, LOW); // 保持发出超声波信号接口低电平
      int distance = pulseIn(inputPin, HIGH); // 读出脉冲时间
      distance= distance/58; // 将脉冲时间转化为距离(单位:厘米)
      Serial.println(distance); //输出距离值
     
      if (distance >=50)
      {
        //如果距离小于50厘米返回数据
        return 50;
      }//如果距离小于50厘米小灯熄灭
      else
        return distance;
    }
    
    展开全文
  • 机器人控制编程综合设计——Arduino超声波避障小车

    千次阅读 多人点赞 2020-01-04 14:27:45
    Arduino开发板一个,L293d驱动板一个,超声波传感器一个,MG90S舵机一个,直流电机两个,载体小车一个,杜邦线若干,电池1.5V x 8个; 二、电路连接 三、代码实现 3.1 主代码设计流程图 3.2 超声波测距原理...

    视频效果展示

    一、前期准备

      Arduino开发板一个,L293d驱动板一个,超声波传感器一个,MG90S舵机一个,直流电机两个,载体小车一个,杜邦线若干,电池1.5V x 8个;在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    二、电路连接

    在这里插入图片描述
    在这里插入图片描述

    三、代码实现

    3.1 主代码设计流程图

    在这里插入图片描述

    3.2 超声波测距原理和代码实现


    在这里插入图片描述
      超声波测距原理是通过超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播时碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。而超声波测距传感器,采用超声波回波测距原理,运用精确的时差测量技术,检测传感器与目标物之间的距离,采用小角度,小盲区超声波传感器,具有测量准确,无接触,防水,防腐蚀,低成本等优点。超声波测距传感器常用的方式是1个放射头对应1个接收头,也是多个发射头对应1个接收头基于超声波测距的简单、易于操作和无损伤等特点所以要测得超声波往返的时间,即可求得距离。这就是超声波测距传感器的工作原理。
      如下图为超声波测距的数据;
    在这里插入图片描述
    超声波测距核心代码实现:

    int TrgPin = A0;
    int EcoPin = A1;
    float dist;
    void setup()
    {
      Serial.begin(9600);
      //设置TrgPin为输出状态
      pinMode(TrgPin, OUTPUT);
      // 设置EcoPin为输入状态
      pinMode(EcoPin, INPUT);
    }
    void loop()
    {
      digitalWrite(TrgPin, LOW);
      delayMicroseconds(8);
      digitalWrite(TrgPin, HIGH);
      // 维持10毫秒高电平用来产生一个脉冲
      delayMicroseconds(10);
      digitalWrite(TrgPin, LOW);
      // 读取脉冲的宽度并换算成距离
      dist = pulseIn(EcoPin, HIGH) / 58.00;
      Serial.print("Distance:");
      Serial.print(dist);
      Serial.println("cm");
      delay(300);
    }
    

    3.3 舵机角度控制原理——PWM控制

      舵机(Servo):它由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统。通过发送信号,指定输出轴旋转角度。舵机一般而言都有最大旋转角度(比如180度)。这里主要介绍怎样控制舵机角度的问题;
    舵机的伺服系统由可变宽度的脉冲来进行控制,控制线是用来传送脉冲的。脉冲的参数有最小值,最大值,和频率。一般而言,舵机的基准信号都是周期为20ms,宽度为1.5ms。这个基准信号定义的位置为中间位置。舵机有最大转动角度,中间位置的定义就是从这个位置到最大角度与最小角度的量完全一样。最重要的一点是,不同舵机的最大转动角度可能不相同,但是其中间位置的脉冲宽度是一定的,那就是1.5ms。
      角度是由来自控制线的持续的脉冲所产生。这种控制方法叫做脉冲调制(PWM)。脉冲的长短决定舵机转动多大角度。当控制系统发出指令,让舵机移动到某一位置,并让他保持这个角度,这时外力的影响不会让他角度产生变化,但是这个是由上限的,上限就是他的最大扭力。除非控制系统不停的发出脉冲稳定舵机的角度,舵机的角度不会一直不变。当舵机接收到一个小于1.5ms的脉冲,输出轴会以中间位置为标准,逆时针旋转一定角度。接收到的脉冲大于1.5ms情况相反。不同品牌,甚至同一品牌的不同舵机,都会有不同的最大值和最小值。一般而言,最小脉冲为1ms,最大脉冲为2ms。如下图:
    在这里插入图片描述
    代码实现:

    //舵机右转
    void servoRight() {
      servopulse(9, 20);
    }
    //舵机左转
    void servoLeft() {
      servopulse(9, 180);
    }
    //舵机回正
    void servoForward() {
      servopulse(9, 90);
    }
    //舵机角度的设定
    void servopulse(int servopin, int myangle) /*定义一个脉冲函数,用来模拟方式产生PWM值*/
    {
      for (int i = 0; i <= 50; i++) //产生PWM个数,等效延时以保证能转到响应角度
      {
        pulsewidth = (myangle * 11) + 500; //将角度转化为500-2480 的脉宽值
        digitalWrite(servopin, HIGH); //将舵机接口电平置高
        delayMicroseconds(pulsewidth);//延时脉宽值的微秒数
        digitalWrite(servopin, LOW); //将舵机接口电平置低
        delay(20 - pulsewidth / 1000); //延时周期内剩余时间
      }
    }
    

    3.4 整体代码实现

    // Adafruit Motor shield library
    // copyright Adafruit Industries LLC, 2009
    // this code is public domain, enjoy!
    
    #include <AFMotor.h>
    #include <Servo.h>
    //超声波
    int TrgPin = A0;
    int EcoPin = A1;
    
    AF_DCMotor motor2(2);
    AF_DCMotor motor3(3);
    Servo servo;
    //初始化距离数据
    float dist;
    
    void forward();
    void backward();
    void turnLeft();
    void turnRight();
    void stopCar();
    void servoRight();
    void servoLeft();
    void servoForward();
    int distance();
    void servopulse(int servopin, int myangle);
    void angle(int val);
    
    int servopin = 9; //设置舵机驱动脚到数字口9
    int myangle;//定义角度变量
    int pulsewidth;//定义脉宽变量
    
    
    void setup() {
      Serial.begin(9600);
      //设定舵机接口为输出接口
      pinMode(servopin, OUTPUT);
      //设置TrgPin为输出状态
      pinMode(TrgPin, OUTPUT);
      // 设置EcoPin为输入状态
      pinMode(EcoPin, INPUT);
    
      motor2.setSpeed(200);
      motor3.setSpeed(200);
    }
    void loop() {
      digitalWrite(TrgPin, LOW);
      delayMicroseconds(8);
      digitalWrite(TrgPin, HIGH);
      // 维持10毫秒高电平用来产生一个脉冲
      delayMicroseconds(10);
      digitalWrite(TrgPin, LOW);  // 读取脉冲的宽度并换算成距离
      dist = pulseIn(EcoPin, HIGH) / 58.00;
      Serial.print("Distance:");
      Serial.print(dist);
      Serial.println("cm");
      delay(300);
    
      if (dist< 35) //危险
      {
        stopCar();//电机停转
        servoLeft();//向左转舵机
        if (dist < 35) //危险
        {
          servoRight();//向右转舵机
          if (dist < 35) //危险
          {
            servoForward();//向中间舵机
            backward();            //后退
          }
          else
          {
            servoForward();//向中间舵机
            turnRight( );        //右转
            delay(30);
            stopCar();//电机停转
            forward();          //前进
          }
        }
        else
        {
          turnLeft( );        //左转
          delay(30);
          stopCar();//电机停转
          forward( );          //前进
        }
      }
      else
      {
        forward();          //前进
      }
    }
    
    
    //前进
    void forward() {
      motor2.run(FORWARD);
      motor3.run(FORWARD);
    }
    //后退
    void backward() {
      motor2.run(BACKWARD);
      motor3.run(BACKWARD);
    }
    
    //左转
    void turnLeft() {
      motor2.run(FORWARD);
      motor3.run(RELEASE);
      delay(50);
    }
    //右转
    void turnRight() {
      motor2.run(RELEASE);
      motor3.run(FORWARD);
      delay(50);
    }
    //停止
    void stopCar() {
      motor2.run(RELEASE);
      motor3.run(RELEASE);
      delay(100);
    }
    //舵机右转
    void servoRight() {
      servopulse(9, 20);
    }
    //舵机左转
    void servoLeft() {
      servopulse(9, 180);
    }
    //舵机回正
    void servoForward() {
      servopulse(9, 90);
    }
    
    //舵机角度的设定
    void servopulse(int servopin, int myangle) /*定义一个脉冲函数,用来模拟方式产生PWM值*/
    {
      for (int i = 0; i <= 50; i++) //产生PWM个数,等效延时以保证能转到响应角度
      {
        pulsewidth = (myangle * 11) + 500; //将角度转化为500-2480 的脉宽值
        digitalWrite(servopin, HIGH); //将舵机接口电平置高
        delayMicroseconds(pulsewidth);//延时脉宽值的微秒数
        digitalWrite(servopin, LOW); //将舵机接口电平置低
        delay(20 - pulsewidth / 1000); //延时周期内剩余时间
      }
    }
    
    展开全文
  • 小车底板,L298N电机驱动模块,arduino板子,两个电机,超声波模块,杜邦线若干(公对公,公对母,母对母都要用到),胶带(用于固定元器件,当然胶水也可以,有螺丝固定最好),5V电池及电池盒(用于板子供电),12...

    1.元器件
    小车底板,L298N电机驱动模块,arduino板子,两个电机,超声波模块,杜邦线若干(公对公,公对母,母对母都要用到),胶带(用于固定元器件,当然胶水也可以,有螺丝固定最好),5V电池及电池盒(用于板子供电),12V电池及电池盒,用于L298N和电机供电,电烙铁及焊锡丝;
    2.安装步骤
    (1)硬件连接
    用L298N模块的out1,2连接一个电机,out2,3连接剩下一个,然后用12V电源给L298N模块供电,用5V给板子供电,当然用L298N的5V给板子供电也可以,但建议分开供电,然后就是L298N和板子连接,以下是我的连接方式:
    ENA:2;ENB:8;
    IN3:5;IN1:9;
    IN4:6;IN2:10;
    每一列控制一个电机;注意连接时要连接在PWM一侧,并且IN1~4连接的端口前要有 ~ 标志,例如 ~ 5,如果没连接到这个上面,电机就不能进行正传及小车后退操作;

    然后就是超声波模块连接,将其trag连接到A0端,其为发射端,Echo连接到A1端,为接收端,VCC,GND,连接电源和接地;
    以上就是硬件的连接;
    (2)代码实现
    
    int i;
    int s;
    
    void setup() {
      for(i=2;i<=10;i++){
        pinMode(i,INPUT);
      }
      pinMode(A1,INPUT);
      pinMode(A0,OUTPUT);
    }
    
    void run(int time){	//前进函数
      digitalWrite(8,HIGH);//ENBzuo
      digitalWrite(9,HIGH);//IN1
      digitalWrite(10,LOW);//IN2
      analogWrite(9,80);
      analogWrite(10,0);
    
      digitalWrite(2,HIGH);//ENAyou
      digitalWrite(5,HIGH);//IN3
      digitalWrite(6,LOW);//IN4
      analogWrite(5,80);
      analogWrite(6,0);
      
      delay(time*100);
    }
    
    void back(int time){ //后退
      digitalWrite(8,HIGH);//ENBzuo
      digitalWrite(10,HIGH);//IN1
      digitalWrite(9,LOW);//IN2
      analogWrite(10,80);
      analogWrite(9,0);
      
      
       digitalWrite(2,HIGH);//ENAyou
      digitalWrite(6,HIGH);//IN3
      digitalWrite(5,LOW);//IN4
      analogWrite(6,80);
      analogWrite(5,0);
    
      delay(time*100);
    }
    void right(int time){	//右转
      digitalWrite(8,HIGH);//ENBzuo
      digitalWrite(9,HIGH);//IN1
      digitalWrite(10,LOW);//IN2
      analogWrite(9,80);
      analogWrite(10,0);
    
      digitalWrite(2,LOW);//ENA
      digitalWrite(5,LOW);//IN3
      digitalWrite(6,LOW);//IN4
      analogWrite(5,0);
      analogWrite(6,0);
     
      delay(time*100);
    }
    
    void left(int time){	//左转
    
      digitalWrite(8,LOW);//ENBzuo
      digitalWrite(9,LOW);//IN1
      digitalWrite(10,LOW);//IN2
      analogWrite(9,0);
      analogWrite(10,0);
      
      digitalWrite(2,HIGH);//ENAyou
      digitalWrite(5,HIGH);//IN3
      digitalWrite(6,LOW);//IN4
      analogWrite(5,80);
      analogWrite(6,0);
    
      delay(time*100);
    }
    
    int distance(){		//测距函数
      digitalWrite(A0,LOW);
      delayMicroseconds(2);
      digitalWrite(A0,HIGH);
      delayMicroseconds(15);
      digitalWrite(A0,LOW);
      
      int m = pulseIn(A1,HIGH);
      s=m/58;
    
      return s;
    }
    
    void loop() {	//主循环
      s=distance();
      if(s>=50){
        run(15);
      }
      else{
        back(10);
        right(5);
      }
      //left(15);
    }
    
    咋说里,这个代码其实差东西,但条件有限,没有舵机,所有只能判断前方是否有障碍物,因此这里的代码左转是没用的,哈哈,望各位见谅见谅,如果有机会的话,啥时候回补充一下舵机连接和代码。
    
    看到这里,能不能给小友点个赞里。
    
    展开全文
  • Arduino超声波智能避障小车 完整代码

    千次阅读 2019-11-22 11:58:13
    // Arduino超声波智能避障小车(不含舵机) #include <LiquidCrystal.h> //申明1602液晶的函数库 LiquidCrystal lcd(11,2,3,4,7,8); //4数据口模式连线声明, //==========================================...
  • //===================================...//arduino超声波智能避障小车源码(含舵机) // 本实验控制速度的pwm值和延时均有调节,自己视实际情况调节。 //=========================================================...
  • 超声波自动避障小车 #include <Servo.h> #define Trig 2 //引脚控制超声波发出声波 #define Echo 3 //引脚反应接收到返回声波 #define LIN1 7 //左侧轮子 #define LIN2 6 #define RIN1 5 //右侧轮子 #define ...
  • Arduino学习笔记 超声波避障小车

    千次阅读 多人点赞 2019-05-23 22:43:44
    学习完了诸多模块,终于可以把它们凑在一起撺一台超声笔避障寻迹小车了 那咱们就先将超声波避障和红外线寻迹分成两个部分来讲! 先讲超声波避障部分吧! 超声波避障,自然少不了超声波模块和舵机模块还有TB6612FNG的...
  • 基于arduino避障小车

    2019-04-11 16:39:59
    避障小车的制作方法大概有两种:一个是利用超声波制作,一个是光电开关(避障模块),而跟随小车便一个是利用超声波和光电开关配合制作,一个是光电开关(避障模块)制作。
  • Arduino智能小车——超声波避障

    万次阅读 多人点赞 2017-09-01 21:17:36
    Arduino智能小车——超声波避障  经过这几篇的测试大家应该对小车有一定的认识了,在实际的操作过程中经常会由于操作不当各种碰壁吧?那这次我们将给小车装上一只“眼睛”,让小车看到障碍,躲避障碍。准备材料...
  • 基于arduino单片机智能避障小车

    千次阅读 2020-06-18 14:17:52
    基于arduino单片机智能避障小车 思路简介 本文简要介绍了基于arduino单片机智能小车可以通过手机端蓝牙助手对其进行遥控操作‘可以切换手动操作和自动避障两个模式,避障基于蝙蝠超声波测距的原理,利用超声波传感器...
  • arduino避障小车

    2018-05-22 10:57:47
    基于arduino超声波避障代码,实现智能小车避障功能
  • 基于arduino的智能小车超声波避障小车实验,适合初学arduino的新手,使用了超声波模块,蜂鸣器,液晶屏,代码注释非常清楚。
  • Arduino避障小车 電路連接: D3、D4和D6、D7分别连接左右电机,控制电机 超聲連接: VCC ---- +5V;Trig ---- A2;Echo ---- A3;GND ---- GND; 舵機控制:D13 LCD12864引脚连接: RS ---- D2;R/W ---- D8;E ---- ...
  • 基于Arduino的智能避障小车

    千次阅读 多人点赞 2019-06-27 23:31:22
    基于Arduino避障小车现在已经有了很多的帖子和教程,但本篇文章为避障小车添加了更多的实用的功能,比如:拍照、人体感应、蜂鸣器响应、蓝牙控制、自动模式和手动模式之间的切换。这篇文章的避障小车使用的是 ...
  • 基于arduino开发板的智能避障小车, 可自动识别障碍物并完成转向, 代码可以直接使用。
  • 基于Arduino超声波智能避障小车

    万次阅读 多人点赞 2019-06-05 00:20:49
    依赖库的安装方法,如不清楚,可以参考官方文档《安装其他的Arduino库》 实物图: 程序如下: #include <Servo.h> #include <stdlib.h> #define speed1 5 //定义EA(PWM调速)接口 #define IN1 6 #...
  • 基于arduino的智能小车超声波避障实验,带舵机,舵机可以控制超声波模块旋转,从而扫描小车周围环境,代码注释清晰,很适合新手。
  • 避障小车的制作方法大概有两种:一个是利用超声波制作,一个是光电开关(避障模块),而跟随小车便一个是利用超声波和光电开关配合制作,一个是光电开关(避障模块)制作。所以本篇博客,最终决定:用超声波模块制作避障...
  • 四驱arduino超声波+红外线避障小车。 有兴趣可以点击**我的店铺**看看小车硬件。提供安装说明。 以下是我优化后的代码 #include <Servo.h> int pinLB = 5; //左退 int pinLF = 4; //左前 int pinRB = 3; //右...
  • 蓝牙语音键控智能机器人超声波避障小车制作测试视频演示。智能小车采用Mixly图形编程,主板采用Arduino单片机。
  • 带调速功能的arduino摇头避障小车

    千次阅读 2019-02-19 00:58:13
    一、材料同上篇文章; 二、接线同上篇文章。 L298N arduino 外接电源(两节18650) 12v 正极 GND GND ...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 260
精华内容 104
关键字:

arduino超声波避障小车