Здравствуйте, недавно купил ардуино мега 2560, а так же несколько датчиков к нему, возникла проблема с ультразвуковым датчиком, а именно: загрузил скетч #include "Ultrasonic.h" // sensor connected to: // Trig - 22, Echo - 24 Ultrasonic ultrasonic(22, 24); void setup() { Serial.begin(9600); // start the serial port } void loop() { float dist_cm = ultrasonic.Ranging(CM); // get distance Serial.println(dist_cm); // print the distance delay(100); // arbitary wait time. } При прослушивании всё работает достаточно стабильно, НО иногда при изменении расстояния проскакивает необъяснимо большое число (так же заметно небольшое подвисание): 12.00 28.00 139.00 16.00 140.00 3644.00 6.00 10.00 9.00 8.00 То же самое и у друга на другой ардуине и другом ультразвуковом датчике. Подскажите что я делаю не так?=)
Я тоже с таким датчиком бодался, наблюдал примерно ту же самую картину. Выход - фильтровать показания датчика, выбрасывать аномально большие (или маленькие) значения. Но тогда результирующая частота опроса датчика становится совсем печальной. Я надеялся получить 10 измерений в секунду и в итоге пришел к выводу, что данный датчик такого обеспечить просто не в состоянии.
привет всем. Вот рабочий скетч для этого датчика, у меня все с ним норм))) 10 из 10 значений верны. Код (Text): int inputPin=9; // Echo1 int outputPin=8; // Trig1 int distance; void setup() { Serial.begin(9600); pinMode(inputPin, INPUT); pinMode(outputPin, OUTPUT); } void loop() { digitalWrite(outputPin, LOW); delayMicroseconds(2); digitalWrite(outputPin, HIGH); delayMicroseconds(10); digitalWrite(outputPin, LOW); int distance = pulseIn(inputPin, HIGH); distance= distance/58; Serial.print(distance); Serial.print("cm"); Serial.println(" "); delay(50); } И измерения проводятся примерно 20 раз в секунду, так что Megakoteyka немного ошибся.
Количество измерений в секунду имеет прямую зависимость от растояния до препятствия. При расстоянии 20 см будет одна частота, при 2 м - совсем другая. Это непосредственно следует из скорости распространения звука. Такой код я тоже пробовал и наблюдал ту же картину, что описал выше. У датчика, который я пробовал, одна из металлических "банок" имела небольшой люфт. Возможно, ошибки измерений происходили из-за этого, но физику данного явления (ошибочного измерения) мне понять не удалось. Дальномер, с которым я экспериментировал, приобретался знакомым в Китае. Возможно, попался брак либо дальномер долбанули при транспортировке либо что-то еще. Других таких же дальномеров для сравнения у меня не было, так что сложно делать выводы.