# L04 Underwater Sonar ![](Resources/sensors/L04-5.jpg) [Datasheet](https://cdn-shop.adafruit.com/product-files/4664/4664_datasheet.pdf) ## Cable Descriptions | Color | Name | Description | Remarks | |------------|------------|-------------------|---------| | red | VCC Power | input cable | 3.3V~5V | | black | GND Power | ground cable | // | | white | RX Trigger | input cable | (1) | | yellow | TX UART | output cable | (1) | ## UART Data Frames | Frame data | Instruction | Byte | |--------------|---------------|--------| | Frame header | Fixed to 0xFF | 1 byte | | Data_H High | 8 bits of distance data | 1 byte | Data_L Low | 8 bits of distance data | 1 byte | SUM | Checksum of communication | 1 byte ```c #include unsigned char buffer_RTT[4] = {0}; uint8_t CS; #define COM 0x55 SoftwareSerial mySerial(7, 8); void setup() { Serial.begin(115200); mySerial.begin(115200); } void loop() { mySerial.write(COM); delay(100); if(mySerial.available() > 0){ delay(4); if(mySerial.read() == 0xff){ buffer_RTT[0] = 0xff; for (int i=1; i<4; i++){ buffer_RTT[i] = mySerial.read(); } CS = buffer_RTT[0] + buffer_RTT[1]+ buffer_RTT[2]; if(buffer_RTT[3] == CS) { int distance = (buffer_RTT[1] << 8) + buffer_RTT[2]; Serial.print("Distance:"); Serial.print(distance); Serial.println("mm"); } } } } ```