我已经在Arduino和我的Android移动应用之间编程了一个客户端服务器。我正在使用HC-06蓝牙耳机。目前,这是一个非常基本的代码,仅用于打开/关闭LED,调节其电压并接收电池电量。
这是我发送消息时的Android代码(例如,打开LED指示灯,只需按下按钮):
btnOn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event)
{
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
Log.d("MyTag", "Down");
mmHandler.postDelayed(actionOn, 10);
return true;
case MotionEvent.ACTION_UP:
Log.d("MyTag", "Up");
mmHandler.removeCallbacksAndMessages(null);
turnOffLed(); //method to turn off
return true;
default:
return false;
}
}
});
这些是我的方法:
private void turnOnLed()
{
btt_write.write("TO::".toString().getBytes());
msg("Led ON");
}
public void write(byte[] bytes){
try{
Log.i("[THREAD-CT]", "Writting bytes");
mmOutStream.write(bytes);
mmOutStream.flush();
}catch(IOException e){}
}
这是我的Arduino代码,用于接收消息:
#include <SoftwareSerial.h>
#include <TimerOne.h>
SoftwareSerial hc06(2,3);
char command;
String string;
boolean ledon = false;
int BatteryPin = A0; // select the input pin for the potentiometer
int sensorValue = 0; // variable to store the value coming from the sensor
float BatteryCar = 0;
int PercentageBatt = 0;
int intensidad = 0;
#define led 11
void setup()
{
Serial.begin(9600);
hc06.begin(9600);
pinMode(led, OUTPUT);
Timer1.initialize(10000); // set a timer of length 10000 microseconds (or 0.01 sec - or 1Hz => the led will blink 5 times, 5 cycles of on-and-off, per second)
Timer1.attachInterrupt( SendVoltage );
}
void loop()
{
sensorValue = analogRead(BatteryPin);
BatteryCar = sensorValue * (5.0 / 1023.0);
if (hc06.available() > 0)
{
string = "";
}
while(hc06.available() > 0)
{
command = ((byte)hc06.read());
if(command == ':')
{
break;
}
else
{
string += command;
}
delay(20);
}
Serial.println(string);
if(string == "TO")
{
analogWrite(led, intensidad);
delay(10);
}
if(string =="TF")
{
analogWrite(led, 0);
delay(10);
}
if ((string.toInt()>=0)&&(string.toInt()<=255))
{
intensidad = string.toInt();
//Serial.println(intensidad);
analogWrite(led, intensidad);
delay(10);
}
}
void SendVoltage ()
{
PercentageBatt = (BatteryCar * 100)/4;
hc06.println(PercentageBatt);
}
问题是,有时我会收到“ TO”消息,但其他消息会变得混乱。 。我该怎么办?
先谢谢了, 林肯