/* *@File : DFRobot_Distance_A02.ino *@Brief : This example use A02YYUW ultrasonic sensor to measure distance * With initialization completed, We can get distance value *@Copyright [DFRobot](http://www.dfrobot.com),2016 * GUN Lesser General Pulic License *@version V1.0 *@data 2019-8-28 */ #include "wiring_private.h" //Uart Serial2(&sercom1, 12, 10, SERCOM_RX_PAD_3, UART_TX_PAD_2); unsigned char data[4]={}; float distance; void setup() { Serial.begin(57600); // Serial2.begin(9600); Serial1.begin(9600); // pinPeripheral(12, PIO_SERCOM); //Assign RX function to pin 12 // pinPeripheral(10, PIO_SERCOM); //Assign TX function to pin 10 } void loop() { do{ for(int i=0;i<4;i++) { data[i]=Serial1.read(); } }while(Serial1.read()==0xff); Serial1.flush(); if(data[0]==0xff) { int sum; sum=(data[0]+data[1]+data[2])&0x00FF; if(sum==data[3]) { distance=(data[1]<<8)+data[2]; if(distance>30) { //Serial.print("distance="); Serial.println(distance/10); //Serial.println("cm"); }else { Serial.println("Below the lower limit"); } }else Serial.println("ERROR"); } delay(100); } ////// Attach the interrupt handler to the SERCOM //void SERCOM1_Handler() //{ // Serial2.IrqHandler(); //}