基于Arduino的麦克纳姆轮小车的制作

一、简介

Arduino是一款便捷灵活、方便上手的开源电子原型平台。它比较容易入门。但是就在我刚刚接触硬件的时候我不知道如何上手,想要自己开发出一个经过在网上查找资料才知道Arduino对新人比较友好,比较容易上手。

二、材料的准备

小车套件:

网上有很多的小车底盘售卖,都是成套的

驱动模块:

驱动模块我采用的是L298N电机驱动板,

此电机驱动板有以下几个优点:

1.工作电压高,输出电流大,驱动能力强,发热量低,抗干扰能力强

2.可以将高电压转化为5V的稳定电压

3.比较经典,网上有许多介绍

通信模块:

通信模块可选择蓝牙模块,也可以选择wifi模块

在这里我选择的是HC-06蓝牙模块,因为比较的容易使用,不需要配置什么,在手机上随便下载一个蓝牙调试助手连接上就可以通信了

三、制作

我使用的是两个L298N电机驱动模块 一个控制前面两个电机 另外一个控制后面两个电机

L298N使能端都默认的给5V

下面直接上代码(这个代码写的比较的繁琐,但是比较容易看懂)

char serialData; 
char value; 
int in1 = 2;
int in2 = 3;
int in3 = 4; 
int in4 = 5;
int in5 = 6;
int in6 = 7; 
int in7 = 8;
int in8 = 9;
void setup() {  
  Serial.begin(9600);  
  pinMode(in1,OUTPUT);
  pinMode(in2,OUTPUT);
  pinMode(in3,OUTPUT);
  pinMode(in4,OUTPUT);
  pinMode(in5,OUTPUT);
  pinMode(in6,OUTPUT);
  pinMode(in7,OUTPUT);
  pinMode(in8,OUTPUT);
  
}  
 
void loop(){  
 
   
 
  if( Serial.available() > 0 ){   
      
    serialData =  Serial.read();
      
    if(f == serialData) { 
      
      Serial.print(serialData);   
      Serial.println(": 前进");
      digitalWrite(in1,HIGH);
      digitalWrite(in2,LOW);
      digitalWrite(in3,LOW);
      digitalWrite(in4,HIGH);
      digitalWrite(in5,LOW);
      digitalWrite(in6,HIGH);
      digitalWrite(in7,LOW);
      digitalWrite(in8,HIGH);
      
      
    }   
    else if(b == serialData) {  
      Serial.print(serialData);   
      Serial.println(": 后退");
       digitalWrite(in1,LOW);
      digitalWrite(in2,HIGH);
      digitalWrite(in3,HIGH);
      digitalWrite(in4,LOW);
      digitalWrite(in5,HIGH);
      digitalWrite(in6,LOW);
      digitalWrite(in7,HIGH);
      digitalWrite(in8,LOW);
    }   
    else if( r == serialData){  
      Serial.print(serialData);  
      Serial.println(": 右平移");
      digitalWrite(in1,HIGH);
      digitalWrite(in2,LOW);
      digitalWrite(in3,HIGH);
      digitalWrite(in4,LOW);
      digitalWrite(in5,LOW);
      digitalWrite(in6,HIGH);
      digitalWrite(in7,HIGH);
      digitalWrite(in8,LOW);
    }  
    else if(l == serialData){  
      Serial.print(serialData);  
      Serial.println(": 左平移");
      digitalWrite(in1,LOW);
      digitalWrite(in2,HIGH);
      digitalWrite(in3,LOW);
      digitalWrite(in4,HIGH);
     digitalWrite(in5,HIGH);
      digitalWrite(in6,LOW);
      digitalWrite(in7,LOW);
      digitalWrite(in8,HIGH);
    }  
    else if(s == serialData){  
      Serial.print(serialData);  
      Serial.println(": 停止");
      digitalWrite(in1,LOW);
      digitalWrite(in2,LOW);
      digitalWrite(in3,LOW);
      digitalWrite(in4,LOW);
      digitalWrite(in5,LOW);
      digitalWrite(in6,LOW);
      digitalWrite(in7,LOW);
      digitalWrite(in8,LOW);
      }
      else if(R == serialData){  
      Serial.print(serialData);  
      Serial.println(": 原地右旋");
     digitalWrite(in1,HIGH);
      digitalWrite(in2,LOW);
      digitalWrite(in3,HIGH);
      digitalWrite(in4,LOW);
      digitalWrite(in5,HIGH);
      digitalWrite(in6,LOW);
      digitalWrite(in7,LOW);
      digitalWrite(in8,HIGH);
      }
       else if(L == serialData){  
      Serial.print(serialData);  
      Serial.println(": 原地左旋");
     digitalWrite(in1,LOW);
      digitalWrite(in2,HIGH);
      digitalWrite(in3,LOW);
      digitalWrite(in4,HIGH);
      digitalWrite(in5,LOW);
      digitalWrite(in6,HIGH);
      digitalWrite(in7,HIGH);
      digitalWrite(in8,LOW);
      }
    else{  
       
    }  
  }  
}

最后的效果可能根据你的接线不同会有些差异,这个只需要后期调试一下就可以了

经验分享 程序员 微信小程序 职场和发展