// 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_TX_PIN 2 #define SENSOR_RX_PIN 3 // Deklaracja obiektu programowej komunikacji szeregowej SoftwareSerial sensor_serial = SoftwareSerial(SENSOR_TX_PIN, SENSOR_RX_PIN); // 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.nread(); // Odczyt poszczególnych cyfr odległości for (byte i = 0; i < 3; i++) data[i] = sensor_serial.nread(); // Sprawdzenie poprawności zakończenia pakietu danych (znak '\r') header = sensor_serial.nread(); if (header != 13) return -1; // Wartość zwracana jeśli pakiet danych nie jest poprawny return atoi(data); // Konwersja ciągu tekstowego na liczbe typu int } void setup() { Serial.begin(9600); pinMode(SENSOR_PIN, INPUT); pinMode(3, OUTPUT); digitalWrite(3, LOW); sensor_serial.begin(9600); } void loop() { Serial.println(get_distance()); delay(100); }