// Даём понятное имя пину левого датчика линии #define PIN_LINE_L A0 // Даём понятное имя пину правого датчика линии #define PIN_LINE_R A1 // Даём понятное имя пину ИК-дальномера #define PIN_IRR A2 // Даём понятные имена пинам УЗ-дальномера TRIG и ECHO #define PIN_USR_T 11 #define PIN_USR_E 10 void setup() { // Открываем COM-порт на работу со скоростью 9600 бит/сек Serial.begin(9600); } void loop() { // Считываем показание левого датчика линии int senLineL = map(analogRead(PIN_LINE_L), 0, 1024, 100, 0);; // Считываем показание правого датчика линии int senLineR = map(analogRead(PIN_LINE_R), 0, 1024, 100, 0);; // Считываем расстояние с ИК-дальномера int senIRR = readDistIRR(); // Считываем расстояние с УЗ-дальномера int senUSR = readDistUSR(); // Выводим показания датчиков в монитор порта Serial.print("L = "); Serial.print(senLineL); Serial.print("\tR = "); Serial.print(senLineR); Serial.print("\tIRR = "); Serial.print(senIRR); Serial.print("\tUSR ="); Serial.println(senUSR); // Ждём 100 мс delay(100); } // Получение показаний с ИК-дальномера int readDistIRR() { // Считываем показания с ИК-дальномера в отчётах АЦП int value = analogRead(PIN_IRR); // Конвертируем показания в напряжение float voltage = value * (5.0 / 1024.0); // Конвертируем напряжение в расстояние в см float distance = 29.988 * pow(v, -1.173); // Возвращаем полученное значение return int(distance); } // Получение показаний с УЗ-дальномера int readDistUSR() { // Формируем импульс длительностью 10 мкс на пине TRIG digitalWrite(PIN_USR_T, LOW); delayMicroseconds(5); digitalWrite(PIN_USR_T, HIGH); delayMicroseconds(10); digitalWrite(PIN_USR_T, LOW); // Измеряем длительность импульса на пине ECHO int duration = pulseIn(PIN_USR_E, HIGH); // Переводим время прохождения сигнала в расстояние в см int distance = abs(duration / 58); // Возвращаем измеренное расстояние return distance; }