Jezdi
Jezdi

Reputation: 21

how to send and divide information into individual textview (Hc 05)

I am trying to make an application that connects to the arduino using the HC 05 module with three ultrasonic sensors. I was able to connect to the application and receive information from a particular sensor. But when I display the distance information of each sensor it is displayed in one text view (I would like three) but I have no idea what I could change in my code. Thanks in advance for your answer. Below I put the code in sequence: from arduino ideas, android studio app, android studio thread

  int LtriggerPin = 13;
  int LechoPin = 12;  
  int RtriggerPin = 11;
  int RechoPin = 10;  

  int CtriggerPin = 9;
  int CechoPin = 8;  

  int info = 0;
  int state = 0;

  void setup() { 

  Serial1.begin(9600);  

  pinMode(LtriggerPin, OUTPUT); 
  pinMode(LechoPin, INPUT);

  pinMode(RtriggerPin, OUTPUT); 
  pinMode(RechoPin, INPUT);

  pinMode(CtriggerPin, OUTPUT); 
  pinMode(CechoPin, INPUT);

  }

  void loop(){ 

  sensor();
  }




  void sensor() { 

  int durationL, distanceL;  
  int durationR, distanceR;   
  int durationC, distanceC;        

  digitalWrite(LtriggerPin, HIGH); 
  delay(10);
  digitalWrite(LtriggerPin, LOW);
  durationL = pulseIn(LechoPin, HIGH); 
  distanceL = (durationL/2) / 29.1; 

  digitalWrite(RtriggerPin, HIGH); 
  delay(10);
  digitalWrite(RtriggerPin, LOW);
  durationR = pulseIn(RechoPin, HIGH); 
  distanceR = (durationR/2) / 29.1; 

  digitalWrite(CtriggerPin, HIGH); 
  delay(10);
  digitalWrite(CtriggerPin, LOW);
  durationC = pulseIn(CechoPin, HIGH); 
  distanceC = (durationC/2) / 29.1; 


  Serial1.print("Left Sensor "); 
  Serial1.print((String) distanceL + " cm" ); 
  delay(500);   
  Serial1.println(" ");  

  Serial1.print("Right Sensor "); 
  Serial1.print((String) distanceR + " cm" ); 
  delay(500);   
  Serial1.println(" ");  

  Serial1.print("Center Sensor "); 
  Serial1.print((String) distanceC + " cm" ); 
  delay(500);   
  Serial1.println(" ");  
  Serial1.println(" "); 
  Serial1.println(" "); 
  }

//android thread

@Override
public void run() {
    byte[] buffer = new byte[1024];  // buffer store for the stream
    int bytes; // bytes returned from read()
    // Keep listening to the InputStream until an exception occurs
    while (true) {
        try {
            // Read from the InputStream
            bytes = mmInStream.available();
            if(bytes != 0) {
                buffer = new byte[1024];
                SystemClock.sleep(100); //pause and wait for rest of data. Adjust this depending on your sending speed.
                bytes = mmInStream.available(); // how many bytes are ready to be read?
                bytes = mmInStream.read(buffer, 0, bytes); // record how many bytes we actually read
                hesler.obtainMessage(MainActivity.MESSAGE_READ, bytes, -1, buffer)
                        .sendToTarget(); // Send the obtained bytes to the UI activity
            }
        } catch (IOException e) {
            e.printStackTrace();

            break;
        }
    }
}

public void write(String input) {
    byte[] bytes = input.getBytes();
    try {
        mmOutStream.write(bytes);
    } catch (IOException e) { }
}

public void cancel() {
    try {
        sok.close();
    } catch (IOException e) { }
}

// android Handler

    handler = new Handler(Looper.getMainLooper()){
        @Override
        public void handleMessage(Message msg){
            if(msg.what == MESSAGE_READ){
                String readMessageL = null;
                readMessageL = new String((byte[]) msg.obj, StandardCharsets.UTF_8);
                TvC.setText(readMessageL);

            }
            if(msg.what == CONNECTING_STATUS){
                char[] sConnected;
                if(msg.arg1 == 1)
                    Tv3.setText(getString(R.string.BTConnected) + msg.obj);
                else
                    Tv3.setText(getString(R.string.BTconnFail));
            }
        }


    };

Upvotes: 1

Views: 28

Answers (0)

Related Questions