Skocz do zawartości
Komentator

Kurs Arduino - #9 - Czujnik odległości HC-SR04, funkcje

Pomocna odpowiedź

r-tea, pokaż kod, w ciemno nic nie da się doradzić.

Udostępnij ten post


Link to post
Share on other sites

Zauważyłem, że program zaczyna działać prawidłowo gdy zasilanie Arduino idzie wyłącznie z USB komputera. Gdy podłączam pakiet LiPo 11V jako zasilanie (piny VIN i GND w części POWER), to LED świeci stale.

Gdy podłączone jest i LiPo i USB jednocześnie, to też działa prawidłowo.

przewód żółty: trigger - pin 13

przewód zielony: echo - pin 12

przewód pomarańczowy: anoda LED - pin 8

Udostępnij ten post


Link to post
Share on other sites

Zasilanie Arduino z pakietu 3S, który po naładowaniu ma 12.6V to dość dużo. Straty mocy są całkiem spore, nie grzeje Ci się stabilizator?

Udostępnij ten post


Link to post
Share on other sites
Zasilanie Arduino z pakietu 3S, który po naładowaniu ma 12.6V to dość dużo. Straty mocy są całkiem spore, nie grzeje Ci się stabilizator?

Już sprawa jasna. Sprawdziłem napięcie na pinach zasilania czujnika. Jest tam 3,3V podczas gdy teoretycznie powinno być 5V, bo podłączam czujnik pod pin 5V w Arduino. Gdy zasilanie idzie tylko z USB, to na pinach zasilających czujnik mam te 5V. Wygląda na to, że gdzieś po drodze musiałem uszkodzić Arduino w ten sposób, że gdy dostaje zasilanie na pin Vin to nie przetwarza go na 5V.

Udostępnij ten post


Link to post
Share on other sites

Dziwne uszkodzenie... A masz możliwość sprawdzenia dla mniejszego napięcia wejściowego?

Udostępnij ten post


Link to post
Share on other sites
Dziwne uszkodzenie... A masz możliwość sprawdzenia dla mniejszego napięcia wejściowego?

Tak. Podłączyłem szeregowo 6 akumulatorków 1,2v NiMH. Na zaciskach zasilania miałem 7,7V. I dalej było to samo tyle, że napięcie na pinach zasilania czujnika spadło do 2.7 (przy świecącum LED).

Później wypróbowałem jeszcze normalny zasilacz stabilizowany 12V podłączony do czarnego, okrągłego gniazda zasilania na Arduino. Nie poprawiło to sytuacji.

Układ działa normalnie jedynie przy zasilaniu z USB. - czyli 5V.

Udostępnij ten post


Link to post
Share on other sites

r-tea, czyli wygląda jakby faktycznie został jakoś dziwnie uszkodzony regulator napięcia 🙁

Udostępnij ten post


Link to post
Share on other sites

Super odcinek 🙂

Zadanie 9.3

Oprócz diod dodałem jeszcze buzzer. Skorzystałem też z funkcji tone( , , ,), która pozwala sterować głośnością i czasem trwania dźwięku na buzzerze. Dzięki temu im bliżej przeszkoda tym głośniej i szybciej brzęczy buzzer. przykład użycia:

tone(buzz, 2000, 100);
delay(100);

buzz to zdefiniowana wcześniej nazwa pinu.

Kod:

#define trigg 12
#define echo 13
#define buzz 11

void setup() {
 pinMode(2, OUTPUT); digitalWrite(2, LOW);
 pinMode(3, OUTPUT); digitalWrite(3, LOW);
 pinMode(4, OUTPUT); digitalWrite(4, LOW);
 pinMode(5, OUTPUT); digitalWrite(5, LOW);
 pinMode(6, OUTPUT); digitalWrite(6, LOW);
 pinMode(7, OUTPUT); digitalWrite(7, LOW);

 pinMode(trigg, OUTPUT);
 pinMode(echo, INPUT);

}

void loop() {
 int d=odleglosc();
 sygnal(d);

}

int odleglosc(){
  long czas, dist;

 digitalWrite(trigg, LOW);
 delayMicroseconds(2);
 digitalWrite(trigg, HIGH);
 delayMicroseconds(10);
 digitalWrite(trigg, LOW);

 czas=pulseIn(echo, HIGH);
 dist=(czas/2)/29.1;

 return dist;
}

void sygnal(int d){

 d=map(d, 0, 100, 1, 6);

 switch(d){

 case 1:
   digitalWrite(2, HIGH);
   digitalWrite(3, 1);
   digitalWrite(4, 1);
   digitalWrite(5, 1);
   digitalWrite(6, 1);
   digitalWrite(7, 1);
   tone(buzz, 3000, 100);
   delay(100);
   break;

 case 2:
   digitalWrite(2, HIGH);
   digitalWrite(3, 1);
   digitalWrite(4, 1);
   digitalWrite(5, 1);
   digitalWrite(6, 1);
   digitalWrite(7, 0);
   tone(buzz, 2000, 100);
   delay(150);
   break;

  case 3:
   digitalWrite(2, HIGH);
   digitalWrite(3, 1);
   digitalWrite(4, 1);
   digitalWrite(5, 1);
   digitalWrite(6, 0);
   digitalWrite(7, 0);
   tone(buzz, 1500, 100);
   delay(200);
   break;

  case 4:
   digitalWrite(2, HIGH);
   digitalWrite(3, 1);
   digitalWrite(4, 1);
   digitalWrite(5, 0);
   digitalWrite(6, 0);
   digitalWrite(7, 0);
   tone(buzz, 1500, 100);
   delay(250);
  break;

  case 5:
   digitalWrite(2, HIGH);
   digitalWrite(3, 1);
   digitalWrite(4, 0);
   digitalWrite(5, 0);
   digitalWrite(6, 0);
   digitalWrite(7, 0);
   break;

  case 6:
   digitalWrite(2, HIGH);
   digitalWrite(3, 0);
   digitalWrite(4, 0);
   digitalWrite(5, 0);
   digitalWrite(6, 0);
   digitalWrite(7, 0);
   break;

  default:
   digitalWrite(2, 0);
   digitalWrite(3, 0);
   digitalWrite(4, 0);
   digitalWrite(5, 0);
   digitalWrite(6, 0);
   digitalWrite(7, 0);
   break;
 }

}

Udostępnij ten post


Link to post
Share on other sites
Super odcinek

Dzięki 🙂

Kod bardzo ładny, tylko pamiętaj o komentarzach - warto od początku wyrabiać sobie taki nawyk.

Udostępnij ten post


Link to post
Share on other sites

Panie Damianie 😉 Treker,
Szacunek za wszystkie 9 czesci kursu. W sporej mierze dzieki niemu zainteresowalem sie tematem, zakupilem Arduino Uno R3 i zaprogramowalem / zbudowalem 1 proste uklady. Mam nadzieje ze pojawi sie nowy cykl dla Sredniozaawansowanych. Po miesiecznej przerwie w zwiazku ze sluzbowym wyjazdem wracam do Plytki i nadrabiam zaleglosci.

Jeszecze raz gratuluje pomyslu, realizacji i zaszczepiania optymizmu do programowania w tym kursie!

Andre

Udostępnij ten post


Link to post
Share on other sites

Andre, dzięki wielkie! Miło, że kurs się przydaje 🙂

Udostępnij ten post


Link to post
Share on other sites

Co prawda do przerobienia został mi jeszcze "czujnik odległości HC-SR04" Ale już chciałbym zapytać kiedy mniej więcej można się spodziewać pierwszej części kursu (z opisem potrzebnych elementów) dla średnio zaawansowanych, pytam bo mam zamiar zamówić zestaw do kursu elektroniki z Botland'u i chciałbym zamówić oba zestawy na raz, żeby zaoszczędzić na przesyłce 😉

Udostępnij ten post


Link to post
Share on other sites

Stworzenie nowego kursu niestety zawiera zawsze dużo czasu. W ciągu najbliższych tygodni pojawią się dodatkowe dwa artykuły do aktualnego kursu. Kolejny poziom wtajemniczenia zacznie być publikowany za 2-3 miesiące, więc raczej nie warto czekać, aby połączyć zamówienia 🙂

Udostępnij ten post


Link to post
Share on other sites

Witam. Często otrzymuję wyniki ~3250(+/-10)cm, najczęściej przy dużej zmianie odległości, to normalne czy coś źle działa.(po kilku próbach większość(nie wszystkie) z tych wyników jest spowodowana pochłanianiem dzwięku przez miękie materiały) Zauważyłem że na obu zdjęciach triger jest połączony z masą, a masa z pinem 11, w przeciwieństwie do schematów. Dzięki za świetny kurs.

Udostępnij ten post


Link to post
Share on other sites

Fenar, co to znaczy często? Jeśli szybko machasz przeszkodą przed czujnikiem, to jest to możliwe. Pamiętaj, że czasami wiązka ultradźwięków może nie trafiać w Twój przedmiot od razu. Najlepiej będzie jeśli rozbudujesz program, aby zamiast jednego pomiaru wykonywał ich kilka i zwracał średnią odległość.

Możliwe, że źle odtworzyłem układ do zdjęć, sugeruj się schematami - one są ważniejsze.

Udostępnij ten post


Link to post
Share on other sites

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!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...