Skocz do zawartości

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


Komentator

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 do komentarza
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 do komentarza
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

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

}
  • Lubię! 1
Link do komentarza
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 do komentarza
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 do komentarza
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 do komentarza
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 do komentarza
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 do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.