蓝牙模块之一

2015-12-2 二赛君 学习笔记

最简单的蓝牙测试程序:

    //手机控制灯亮灭

const int ledPin =  13; 
void setup() {
  pinMode(ledPin, OUTPUT);  
  Serial.begin(9600);  
  
}
void loop()
{
  while(Serial.available())
  {
  char c=Serial.read();
  if(c=='A'){
  digitalWrite(ledPin,HIGH);
  }else{
   digitalWrite(ledPin,LOW);
  }
  delay(500);
  }
 }

使用板子上的RX0/TX0,每次上传下载的时候都需要拔掉蓝牙,十分麻烦。而且在实际使用中可能用到多个无限传输,
所以必须得用其他端口发送和接收数据。可使用库SoftwareSerial Library


现有的Arduino硬件支持引脚0和1(通过USB连接到到电脑)进行串行通信。串行通过一个称为 UART 的硬件(芯片内置)进行。这个硬件允许ATMEGA芯片接收串行通信,即使芯片在进行其他工作,只要有64个字节的串行缓冲器的储存空间即可。

使用软件的复制功能(因此称为“SoftwareSerial”),现有的SoftwareSerial 库,以允许其他的Arduino数字引脚的串行通信,这可能有多个软件串口速度高达115200bps。一个参数使反转信号要求该协议的设备。

例子

/* Software serial multple serial test 从硬件串口接收,发送到软件的序列。 软件串行接收,发送到硬件序列。 * RX是数字引脚2(连接到其他设备的TX) * TX是数字引脚3(连接到其他设备的RX) */ #include <SoftwareSerial.h> SoftwareSerial mySerial(2, 3); // RX, TX void setup() { //打开串行通信,等待端口打开: Serial.begin(57600); while (!Serial) { ; // 等待串口连接。Needed for Leonardo only } Serial.println("Goodnight moon!"); // 设置串口通讯的速率 mySerial.begin(4800); mySerial.println("Hello, world?"); } void loop() // 循环 { if (mySerial.available()) Serial.write(mySerial.read()); if (Serial.available()) mySerial.write(Serial.read()); }
关于乱码问题:可能是端口波特率的问题。
 

标签: Arduino 蓝牙

发表评论:

Copyright 2011-2017 | Powered by emlog | Redesigned by Kaspar.s
京ICP备13003113号 sitemap