// Przykład użycia szeregowego wyjścia czujnika odległości LV-EZ1 #include // Cyfrowe piny do których podłączyłeś czujnik #define SENSOR_PIN_TX 2 #define SENSOR_PIN_RX 3 // Deklaracja obiektu programowej komunikacji szeregowej NewSoftSerial sensor_serial(SENSOR_PIN, SENSOR_PIN_RX, true); // Funkcja zwracająca odległość w calach int get_distance() { char data[4] = "000"; char header = ' '; // Oczekiwanie na pojawienie się nagłówka danych (litery "R") while (header != 'R') header = sensor_serial.read(); // Oczekiwanie na pojawienie sie w buforze 3 bajtów danych while (sensor_serial.available() < 4); // Odczyt cyfr odległości for (byte i = 0; i < 3; i++) data[i] = sensor_serial.read(); // Sprawdzenie poprawności zakończenia pakietu danych (znak '\r') header = sensor_serial.read(); if (header != 13) return -1; // Wartość zwracana jeśli pakiet danych nie jest poprawny return atoi(data); } void setup() { Serial.begin(9600); pinMode(SENSOR_PIN, INPUT); pinMode(3, OUTPUT); digitalWrite(3, LOW); sensor_serial.begin(9600); } void loop() { int distance = 0; // Sprawdzenie czy w buforze są jakieś dane while (sensor_serial.available()) { distance = get_distance(); if (distance > 0) // Sprawdzenie poprawności pakietu Serial.println(distance, DEC); } }