radziopoke 12 Marzec 1, 2020 Udostępnij Marzec 1, 2020 (edytowany) Próbuję zrobić przykład z buzzerem (z zestawu), ale albo robię coś źle, albo mój buzzer nie działa. Do funkcji dodałem dla pewności Serial.print, który wskazuje poprawnie i wyświetla odległość wraz z napisem HIGH gdy odległość jest w przedziale. Upewniłem się wiele razy czy buzzer na pewno jest podłączony poprawnie, GND (krótsza nóżka) pod GND na płytce, a (+) pod 2 pin digital (nawet podmieniałem kabelki by upewnić się,że nie są uszkodzone). Choć już przy wyjmowaniu jego coś mnie zdziwiło... Nie miał naklejki... #define trigPin 12 #define echoPin 11 void setup() { Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { zakres(10, 25); delay(100); } int zmierzOdleglosc() { long czas; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); czas = pulseIn(echoPin, HIGH); return czas / 58; } void zakres(int a, int b) { int odleglosc = zmierzOdleglosc(); Serial.print(odleglosc); if ((odleglosc > a) && (odleglosc < b)) { Serial.println(" HIGH"); digitalWrite(2, HIGH); } else { Serial.println(" LOW"); digitalWrite(2, LOW); } } Edit: chyba znam już powód nie działania buzzer-a. Odpowiedz znalazłem w kursie "Arduino - Poziom 2". Mój buzzer do pierwszego zestawu najprawdopodobniej otrzymałem bez generatora. Działa z przykładami z lekcji 3 kursu "Arduino - Poziom 2". Edytowano Marzec 1, 2020 przez radziopoke Znalazłem sam odpowiedź Cytuj Link to post Share on other sites
radziopoke 12 Marzec 1, 2020 Udostępnij Marzec 1, 2020 (edytowany) A tu moje rozwiązanie do zadania 9.3 (działa ) : #define trigPin 12 #define echoPin 11 #define minPinDiod 2 #define maxPinDiod 7 #define maxOdleglosc 210 void setup() { Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); //ustawienie pinów dla diot for (int i = minPinDiod; i <= maxPinDiod; i++) { pinMode(i, OUTPUT); } } void loop() { int odleglosc, maxPin; odleglosc = zmierzOdleglosc(); Serial.print(odleglosc); // Maksymalny pin diody, który ma się zaświecić, gdy maxPin == 1 to wszystkie diody będą zgaszone :) maxPin = map(odleglosc, 1, maxOdleglosc, maxPinDiod, minPinDiod - 1); Serial.print(" "); Serial.println(maxPin); zapalDiody(maxPin); delay(100); } int zmierzOdleglosc() { long czas, odleglosc; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); czas = pulseIn(echoPin, HIGH); odleglosc = czas / 58; //zabezpieczenie przed wyjściem z zakresu; if (odleglosc > maxOdleglosc) { odleglosc = maxOdleglosc; } else if (odleglosc < 1) { odleglosc = 1; } return odleglosc; } void zapalDiody(int maxPin) { for (int i = minPinDiod; i <= maxPinDiod; i++) { if (i <= maxPin) { digitalWrite(i, HIGH); } else { digitalWrite(i, LOW); //Pozostałe diody należy zgasić } } } Edytowano Marzec 1, 2020 przez radziopoke Cytuj Link to post Share on other sites
Gieneq 1 794 Marzec 2, 2020 Udostępnij Marzec 2, 2020 21 godzin temu, radziopoke napisał: Edit: chyba znam już powód nie działania buzzer-a. Odpowiedz znalazłem w kursie "Arduino - Poziom 2". Mój buzzer do pierwszego zestawu najprawdopodobniej otrzymałem bez generatora. Działa z przykładami z lekcji 3 kursu "Arduino - Poziom 2". Cieszę się, że problem się rozwiązał. Buzzery obojętnie jakie przy podłączeniu do zasilania powinny wydać z siebie jakiś dźwięk - te bez generatora chociażby powinny piknąć. 19 godzin temu, radziopoke napisał: A tu moje rozwiązanie do zadania 9.3 (działa ) : Super! Tak trzymaj Cytuj Link to post Share on other sites
Szatanak 2 Marzec 4, 2020 Udostępnij Marzec 4, 2020 Witam, mam taki problem, że gdy mam już cały, układ zbudowany i program napisany z ultradźwiękowym czujnikiem odległości bez buzzera, to ciągle mi pokazuje 1208 cm, nawet jak przesuwam czujnikiem mam podobnie w przykładzie z buzzerem. Cytuj Link to post Share on other sites
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
radziopoke 12 Marzec 6, 2020 Udostępnij Marzec 6, 2020 @Szatanak Przydał by się kod, który napisałeś i może jakieś zdjęcia połączeń. Bez tego ciężko ustalić co może być nie tak. Cytuj Link to post Share on other sites
Szatanak 2 Marzec 8, 2020 Udostępnij Marzec 8, 2020 (edytowany) Dnia 6.03.2020 o 07:58, radziopoke napisał: @Szatanak Przydał by się kod, który napisałeś i może jakieś zdjęcia połączeń. Bez tego ciężko ustalić co może być nie tak. Zawsze jak coś mi nie wychodzi to kopiuję. A tutaj masz zdjęcia: Edytowano Marzec 9, 2020 przez Gieneq 1 Cytuj Link to post Share on other sites
Gieneq 1 794 Marzec 9, 2020 Udostępnij Marzec 9, 2020 (edytowany) @Szatanak Jeżeli kopiujesz kod z kursu to zamień kabelki sygnałowe trig i echo, masz je zamienione Edytowano Marzec 9, 2020 przez Gieneq Cytuj Link to post Share on other sites
Szatanak 2 Marzec 9, 2020 Udostępnij Marzec 9, 2020 8 godzin temu, Gieneq napisał: @Szatanak Jeżeli kopiujesz kod z kursu to zamień kabelki sygnałowe trig i echo, masz je zamienione no właśnie jak je zamieniam to mi pokazuje 0 cm Cytuj Link to post Share on other sites
radziopoke 12 Marzec 9, 2020 Udostępnij Marzec 9, 2020 Na tym drugim zdjęciu wygląda jakby atmega powoli próbowała uciekać z płytki Adruino Podaj jeszcze kod programu, którego używasz. Nawet drobny błąd może powodować źle działający program. 1 Cytuj Link to post Share on other sites
Szatanak 2 Marzec 12, 2020 Udostępnij Marzec 12, 2020 (edytowany) Dnia 9.03.2020 o 20:01, radziopoke napisał: Na tym drugim zdjęciu wygląda jakby atmega powoli próbowała uciekać z płytki Adruino Podaj jeszcze kod programu, którego używasz. Nawet drobny błąd może powodować źle działający program. #define trigPin 12 #define echoPin 11 void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); //Pin, do którego podłączymy trig jako wyjście pinMode(echoPin, INPUT); //a echo, jako wejście } void loop() { Serial.print(zmierzOdleglosc()); Serial.println(" cm"); delay(500); } int zmierzOdleglosc() { long czas, dystans; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); czas = pulseIn(echoPin, HIGH); dystans = czas / 58; return dystans; } Edytowano Marzec 13, 2020 przez Gieneq Zachęcam do używania bloku kodu Cytuj Link to post Share on other sites
Szatanak 2 Marzec 14, 2020 Udostępnij Marzec 14, 2020 Dnia 12.03.2020 o 16:27, Szatanak napisał: #define trigPin 12 #define echoPin 11 void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); //Pin, do którego podłączymy trig jako wyjście pinMode(echoPin, INPUT); //a echo, jako wejście } void loop() { Serial.print(zmierzOdleglosc()); Serial.println(" cm"); delay(500); } int zmierzOdleglosc() { long czas, dystans; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); czas = pulseIn(echoPin, HIGH); dystans = czas / 58; return dystans; } Czyli mam zareklamować czujnik odległościowy? Cytuj Link to post Share on other sites
radziopoke 12 Marzec 14, 2020 Udostępnij Marzec 14, 2020 (edytowany) Kod wygląda na ok. Ja bym jeszcze spróbował podłączyć czujnik w innym miejscu płytki stykowej, innymi przewodami, i pod inne piny (np. echo pod pin 6, trigger pod pin 7). Oczywiście wtedy też musisz poprawić to w programie. Jeżeli to nie pomoże, to jest duże prawdopodobieństwo, że czujnik jest uszkodzony. Edytowano Marzec 14, 2020 przez radziopoke 1 Cytuj Link to post Share on other sites
Radoslaw3 2 Marzec 22, 2020 Udostępnij Marzec 22, 2020 (edytowany) Dzięki za kurs. Bardzo owocnie spędzony czas! Teoria + praktyka = super zabawa Edytowano Marzec 22, 2020 przez Treker Literówka. 1 Cytuj Link to post Share on other sites
Treker 3 074 Marzec 22, 2020 Udostępnij Marzec 22, 2020 @Radoslaw3 witam na forum i bardzo dziękuję za pozytywną opinię. Cieszę się, że kurs był ciekawy i zachęcam do dalszej nauki z naszych poradników Cytuj Link to post Share on other sites
sliskii 3 Marzec 29, 2020 Udostępnij Marzec 29, 2020 Miał ktoś może problem z tym, że co kilka-kilkanaście (pomiar co 500 ms) pomiarów pojawia się dziwna wartość, u mnie dla przykładu czujnik mierzy wartości około 180 i nagle pojawia się wartość 100, a czujnik jest w miejscu cały czas, a sygnał odbija się od takiej ciemnej, grubej kurtyny. Da się to jakoś zniwelować w kodzie? Cytuj Link to post Share on other sites
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!