Skocz do zawartości

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


Pomocna odpowiedź

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

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?

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.

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.

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;
 }

}
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

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 😉

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 🙂

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.

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.

Link to post
Share on other sites
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

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

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!

Anonim
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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.