使用android发送数据并使用arduino接收

时间:2020-09-21 20:41:20

标签: android-studio sockets arduino bluetooth

我已经在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”消息,但其他消息会变得混乱。 enter image description here。我该怎么办?

先谢谢了, 林肯

0 个答案:

没有答案
相关问题