dgw123 发表于 2012-11-9 19:17:44

发一个手机蓝牙控制Aarduino小车的程序

这几天,学习Arduino,买了一块L298N的驱动板,加上先前就有的蓝牙模块,做了一个三轮玩具车,左右后轮被一个L298模块控制实现正、反转。然后,用IDE例子模拟串口通信程序,接收蓝牙串口信息。下面是Arduino端程序。
#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX
int option;
int parameter;

int LED1 = 10;
int LED2 = 9;
int LED3 = 8;
int LED4 = 11;
int LED5 = 12;
int LED6 = 13;

void setup()
{
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
pinMode(LED6, OUTPUT);
// Open serial communications and wait for port to open:
Serial.begin(57600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
}


Serial.println("Goodnight moon!");

// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
Serial.println("Hello, world?");
}

void loop()
{
while (mySerial.available() ) {
    if (mySerial.read() == 147) {
      delay(50);
      option = mySerial.read();
      delay(50);
      parameter = mySerial.read();
    }
      #ifdef DEBUG
      Serial.println(option);
      Serial.println(parameter);
      #endif
}
switch (option) {
      case 1:
       Serial.println("ok");
      break;
       case 55:
      move_for();
      break;
         case 57:
      move_for();
      break;
      case 56:
       move_back();
      break;
         case 58:
       move_back();
      break;
      case 52:
      move_left();
      break;
      case 54:
      move_left1();
      break;
          case 51:
      move_right();
      break;
      case 53:
      move_right1();
      break;
      case 100:
      move_stop() ;
      break;
}
   
}

void move_for() {
       digitalWrite(LED1, HIGH);
       digitalWrite(LED2, HIGH);
       digitalWrite(LED3, LOW);
       digitalWrite(LED4, HIGH);
       digitalWrite(LED5, LOW);
       digitalWrite(LED6, HIGH);
}

void move_back() {
       digitalWrite(LED1, HIGH);
       digitalWrite(LED2, HIGH);
       digitalWrite(LED4, LOW);
       digitalWrite(LED3, HIGH);
       digitalWrite(LED6, LOW);
       digitalWrite(LED5, HIGH);
}

void move_right() {
       digitalWrite(LED1, HIGH);
       digitalWrite(LED2, HIGH);
       digitalWrite(LED3, HIGH);
       digitalWrite(LED4, HIGH);
       digitalWrite(LED5, LOW);
       digitalWrite(LED6, HIGH);
}

void move_left() {
       digitalWrite(LED1, HIGH);
       digitalWrite(LED2, HIGH);
       digitalWrite(LED3, HIGH);
       digitalWrite(LED4, HIGH);
       digitalWrite(LED5, HIGH);
       digitalWrite(LED6, LOW);
}

void move_stop() {
       digitalWrite(LED1, LOW);
       digitalWrite(LED2, LOW);
       digitalWrite(LED3, HIGH);
       digitalWrite(LED4, HIGH);
       digitalWrite(LED5, HIGH);
       digitalWrite(LED6, HIGH);
}

void move_right1() {
       digitalWrite(LED1, HIGH);
       digitalWrite(LED2, HIGH);
       digitalWrite(LED3, HIGH);
       digitalWrite(LED4, LOW);
       digitalWrite(LED5, LOW);
       digitalWrite(LED6, HIGH);
}

void move_left1() {
       digitalWrite(LED1, HIGH);
       digitalWrite(LED2, HIGH);
       digitalWrite(LED3, LOW);
       digitalWrite(LED4, HIGH);
       digitalWrite(LED5, HIGH);
       digitalWrite(LED6, LOW);
}
附件是手机端的蓝牙控制软件,已经测试可用工作。

ttyp 发表于 2012-11-9 20:38:00

嗯,不错的程序,收藏了,下次试试

apache 发表于 2012-11-9 23:41:28

move_*有点浪费代码,可以整个宏,抽象下~~

xpaul 发表于 2012-11-11 17:26:47

支持,有详细的注释就更好了{:soso_e100:}

无趣 发表于 2012-12-15 22:59:41

楼主,,,为嘛你的软件在我的手机上,蓝牙能配对,但不能连接呢

无趣 发表于 2012-12-15 23:03:17

蓝牙模块是不是要选从机模式

dgw123 发表于 2012-12-17 15:06:38

换一个手机试验下,我的手机是联想A60,也是能配对但连不上,估计是有的手机把系统更改了,我当时下了很多蓝牙串口的软件都不行。

ff320232 发表于 2012-12-17 15:46:37

這我也有自己做一個
但 藍芽一直沒辦法接收訊號...只能傳送
不知道怎麼了

wsy0315 发表于 2013-2-6 15:02:37

我的也是不能用啊?希望楼主能加注释,和发控制代码?

恺之 发表于 2013-2-7 10:48:35

楼主能不能发一下上位机的 工程文件包呢?想参考下上位机的程序:)

rockliu 发表于 2013-3-29 11:09:18

楼主,我的是华为手机,完全可用,以前用的是一个需要输入字符的控制端,此控制端现在直接在面板操作非常方便,谢谢。

rockliu 发表于 2013-3-29 11:27:39

现在正学习平衡车,网上开源的电机控制为串口包输出方式,这种方式的电机控制器非常贵,业余用来学习太贵了,目前程序及平衡模块都准备OK,只是电机控制器贵了没再去搞,不知那位同好有arduino的PWM方式控制的程序共享学习一下。

xjcjzpg 发表于 2013-3-29 22:45:01

发一个手机蓝牙控制Aarduino小车的程序

sj61ha94 发表于 2013-9-5 19:32:08

感謝無私分享{:soso_e102:}

zhangzhenggui 发表于 2013-10-11 10:53:43

mark.不错。后面有机会自己试试
页: [1] 2
查看完整版本: 发一个手机蓝牙控制Aarduino小车的程序