极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 49663|回复: 19

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

[复制链接]
发表于 2012-11-9 19:17:44 | 显示全部楼层 |阅读模式
这几天,学习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);
}
附件是手机端的蓝牙控制软件,已经测试可用工作。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2012-11-9 20:38:00 | 显示全部楼层
嗯,不错的程序,收藏了,下次试试
回复 支持 反对

使用道具 举报

发表于 2012-11-9 23:41:28 | 显示全部楼层
move_*有点浪费代码,可以整个宏,抽象下~~
回复 支持 反对

使用道具 举报

发表于 2012-11-11 17:26:47 | 显示全部楼层
支持,有详细的注释就更好了{:soso_e100:}
回复 支持 反对

使用道具 举报

发表于 2012-12-15 22:59:41 | 显示全部楼层
楼主,,,为嘛你的软件在我的手机上,蓝牙能配对,但不能连接呢
回复 支持 反对

使用道具 举报

发表于 2012-12-15 23:03:17 | 显示全部楼层
蓝牙模块是不是要选从机模式
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-17 15:06:38 | 显示全部楼层
换一个手机试验下,我的手机是联想A60,也是能配对但连不上,估计是有的手机把系统更改了,我当时下了很多蓝牙串口的软件都不行。
回复 支持 反对

使用道具 举报

发表于 2012-12-17 15:46:37 | 显示全部楼层
這我也有自己做一個
但 藍芽一直沒辦法接收訊號...只能傳送
不知道怎麼了
回复 支持 反对

使用道具 举报

发表于 2013-2-6 15:02:37 | 显示全部楼层
我的也是不能用啊?希望楼主能加注释,和发控制代码?
回复 支持 反对

使用道具 举报

发表于 2013-2-7 10:48:35 | 显示全部楼层
楼主能不能发一下上位机的 工程文件包呢?想参考下上位机的程序
回复 支持 反对

使用道具 举报

发表于 2013-3-29 11:09:18 | 显示全部楼层
楼主,我的是华为手机,完全可用,以前用的是一个需要输入字符的控制端,此控制端现在直接在面板操作非常方便,谢谢。
回复 支持 反对

使用道具 举报

发表于 2013-3-29 11:27:39 | 显示全部楼层
现在正学习平衡车,网上开源的电机控制为串口包输出方式,这种方式的电机控制器非常贵,业余用来学习太贵了,目前程序及平衡模块都准备OK,只是电机控制器贵了没再去搞,不知那位同好有arduino的PWM方式控制的程序共享学习一下。
回复 支持 反对

使用道具 举报

发表于 2013-3-29 22:45:01 | 显示全部楼层
发一个手机蓝牙控制Aarduino小车的程序
回复 支持 反对

使用道具 举报

发表于 2013-9-5 19:32:08 | 显示全部楼层
感謝無私分享{:soso_e102:}
回复 支持 反对

使用道具 举报

发表于 2013-10-11 10:53:43 | 显示全部楼层
mark.不错。后面有机会自己试试
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 09:23 , Processed in 0.044514 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表