|
audino蓝牙小车的制作总结^_^ 分享一下
材料:
模块 型号 数量
电机驱动 L298N 1
电池 18650 2
面包板 迷你型,比较小的那种 1
底板 亚克力 1
直流电机 2
万向轮 1
杜邦线 若干
电池充电器 1
电池盒 1
蓝牙模块 HC-05
开关 1
arduino 1
2:蓝牙小车教程,里面附有一个程序:http://tieba.baidu.com/p/3817870670
注意:2中有一教程错误:电机驱动的接5v线换成接12v,这一该法,是电脑供电的,若要一个电源给l295n驱动和arduino供电,看最下面
网站。
蓝牙调试程序:
void setup()
{
Serial.begin(9600);
}
void loop()
{
while(Serial.available())
{
char c=Serial.read();
if(c=='A')
{
Serial.println("HELLO!");
}
}
}
蓝牙小车程序:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
//这里注意,我用这一句函数把arduino的2,3引脚变成了RX和TX。所以蓝牙的TX接引脚2,RX接引脚3(如果你想用原来的引脚0,1也可以)
const int L298nIn1 = 8;//L298N模块信号输入
const int L298nIn2 = 9;
const int L298nIn3 = 10;
const int L298nIn4 = 11;
const String GO = "G";//蓝牙遥控器发送信息代码定义
const String BACK = "B";
const String RIGHT = "R";
const String LEFT = "L";
const String STOP = "S";
const String backleft = "Q";
const String backright = "W";
const String goleft = "N";
const String goright = "M";
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
pinMode(L298nIn1, OUTPUT);
pinMode(L298nIn2, OUTPUT);
pinMode(L298nIn3, OUTPUT);
pinMode(L298nIn4, OUTPUT);
}
void goForward() {//小车前进
digitalWrite(L298nIn1, HIGH);
digitalWrite(L298nIn2, LOW);
digitalWrite(L298nIn3, HIGH);
digitalWrite(L298nIn4, LOW);
}
void goBack() {//小车后退
digitalWrite(L298nIn1, LOW);
digitalWrite(L298nIn2, HIGH);
digitalWrite(L298nIn3, LOW);
digitalWrite(L298nIn4, HIGH);
}
void goStop() {//小车停止
digitalWrite(L298nIn1, LOW);
digitalWrite(L298nIn2, LOW);
digitalWrite(L298nIn3, LOW);
digitalWrite(L298nIn4, LOW);
}
void turnRight() {//小车右转
digitalWrite(L298nIn1, HIGH);
digitalWrite(L298nIn2, LOW);
digitalWrite(L298nIn3, LOW);
digitalWrite(L298nIn4, LOW);
}
void turnLeft() {//小车左转
digitalWrite(L298nIn1, LOW);
digitalWrite(L298nIn2, LOW);
digitalWrite(L298nIn3, HIGH);
digitalWrite(L298nIn4, LOW);
}
void turnbackLeft()
{ digitalWrite(L298nIn1,LOW);
digitalWrite(L298nIn2,LOW);
digitalWrite(L298nIn3,LOW);
digitalWrite(L298nIn4,HIGH);
}
void turnbackRight()
{ digitalWrite(L298nIn1,LOW);
digitalWrite(L298nIn2,HIGH);
digitalWrite(L298nIn3,LOW);
digitalWrite(L298nIn4,LOW);
}
void turnLeftOrigin()
{ digitalWrite(L298nIn1,LOW);
digitalWrite(L298nIn2,HIGH);
digitalWrite(L298nIn3,HIGH);
digitalWrite(L298nIn4,LOW);
}
void turnRightOrigin()
{ digitalWrite(L298nIn1,HIGH);
digitalWrite(L298nIn2,LOW);
digitalWrite(L298nIn3,LOW);
digitalWrite(L298nIn4,HIGH);
}
String readTtl() {
String comdata = "";
while (mySerial.available())
{
comdata += char(mySerial.read());
delay(2);
}
return comdata;
}
void loop() {
String s = readTtl();
if (s == GO ) goForward();//如果按GO键,小车前进,直到按STOP键停止
if (s == LEFT ) turnLeft();
if (s == STOP ) goStop();
if (s == RIGHT ) turnRight();
if (s == BACK ) goBack();
if (s== backleft) turnbackLeft();
if (s== backright) turnbackRight();
if (s==goleft) turnLeftOrigin();
if (s==goright) turnRightOrigin();
}
|
|