jakuba-93 Napisano Maj 7, 2018 Udostępnij Napisano Maj 7, 2018 Witam Mam problem z ultradźwiękowym czujnikiem odległości(2-400cm). Wyświetla on zawsze wartości z przedziału od 8 do 9. (Zmieniają się nawet gdy odległość pozostaje taka sama). Dodam że pracuję na Arduino Uno R3. KOD: #define TRIG 12 #define ECHO 11 void setup() { pinMode(TRIG,OUTPUT); pinMode(ECHO,INPUT); Serial.begin(9600); } float pomiar() { unsigned czas; digitalWrite(TRIG,HIGH); delayMicroseconds(10); digitalWrite(TRIG,LOW); czas=pulseIn(ECHO,HIGH); return czas/58.00; } void loop() { Serial.println(pomiar()); delay(800); } Cytuj Link do komentarza Share on other sites More sharing options...
Zero Maj 7, 2018 Udostępnij Maj 7, 2018 Wydaje mi się, że problem jest, że dzielisz liczbę typu unsigned (czas) przez float (58.00). i funkcja też powinna zawracać wartości typu float. Może spróbuj zmienić funkcję na unsigned pomiar() i zadeklarować dzielnik by był tego samego typu (unsigned). Może to głupie, ale jedyne co przychodzi mi w tej chwili do głowy. Cytuj Link do komentarza Share on other sites More sharing options...
jakuba-93 Maj 7, 2018 Autor tematu Udostępnij Maj 7, 2018 Po zmienieniu wszystkich zmiennych na int, i dodatkowo okrojenia przelicznika(na cm),dalej pokazuje wartości losowe oscylujące między 450 a 550, pomimo zmian odległości. Może to być wina czujnika (kupiłem go kilka dni temu)?😕 #define NADAJNIK 3 #define ODBIORNIK 4 void setup() { pinMode(NADAJNIK,OUTPUT); pinMode(ODBIORNIK,INPUT); Serial.begin(115200); digitalWrite(NADAJNIK,LOW); } int CZUJNIK() { int czas=0; delay(800); digitalWrite(NADAJNIK,HIGH); delayMicroseconds(10); digitalWrite(NADAJNIK,LOW); czas=pulseIn(ODBIORNIK,HIGH); return czas; } void loop() { Serial.println(CZUJNIK()); } Cytuj Link do komentarza Share on other sites More sharing options...
Zero Maj 7, 2018 Udostępnij Maj 7, 2018 A dobrze podłączyłeś? Może podeślij zdjęcie. Próbowałeś może skorzystać z tego przykładu: https://botland.com.pl/content/144-pomiar-odleglosci-z-wykorzystaniem-arduino-i-czujnika-hc-sr04-lub-us-015 Ten mój pierwszy post to był taki "strzał", bo miałem kiedyś podobny problem z przeliczaniem wartości, gdy jedna była typu int a druga typu float. Przykład w linku jest bardzo podobny, więc może jednak podłączenie (może sprawdź na innych przewodach)? Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
jakuba-93 Maj 7, 2018 Autor tematu Udostępnij Maj 7, 2018 Przekleiłem kod, zamieniłem piny i wyświetla tylko 7, czasem 8 centymetrów. Raczej nie jest to kwestia podlączenia(obwód jest prosty i sprawdzałem juz go kilka razy). Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!