Skocz do zawartości

Jak sprawdzic czy dziala hc-sr04


stachu4ever

Pomocna odpowiedź

witam, syn robi prostego robota ktory ma dojezdzajac do przeszkody zmienic kierunek jazdy, jednak pojazd caly czas jezdzi w kolo. zachowuje sie jakby stal przed przeszkoda. wgrywam kody na hc-sr04 ale w zwrocie dostaje 0cm. czujnik walniete czy cos robimy zle? moze ktos podac kod i schemat aby sprawdzic dzialanie czujnika?

Link do komentarza
Share on other sites

jedziemy wg arduino dla dzieci z pwn https://www.empik.com/arduino-dla-dzieci-poznaj-swiat-elektroniki-i-programowania-zarowska-mazur-alicja-mazur-dawid,p1119300467,ksiazka-p?gclid=CjwKCAjwqLblBRBYEiwAV3pCJkDbVHYKmob_R6jh7RjaOJjzQ4b_p5qBzzla5t6CiaRtQOrHzoHeOBoChMUQAvD_BwE&gclsrc=aw.ds

schemat i kod raczej ok ale pozniej wgralismy inne kody aby odczytac pomiar ale same zera. zasilamy z usb lub baterii 9v. bez kondensatora

 

Link do komentarza
Share on other sites

Zgaduję, że może być problem z zasilaniem, 9V bateria nie nadaje się do zasilania czegokolwiek co pobiera powyżej 100mA, a na pewno cały taki robocik pobiera dużo więcej prądu. Spróbuj zasilić z czegoś o większej wydajności prądowej, np. z jakiegoś lepszego zasilacza. Ewentualnie zrób test samego czujnika i arduino bez zasilania czegokolwiek więcej, czyli bez silników i innych wodotrysków.

  • Lubię! 1
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

int trig = 13;
int echo = 12;
int czas;
int odleglosc;

int enablePin1 = 11;
int input1A = 10;
int input2A = 7;

int enablePin2 = 6;
int input1B = 5;
int input2B = 4;

void setup() {
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
  Serial.begin(9600);

  pinMode(enablePin1, OUTPUT);
  pinMode(input1A, OUTPUT);
  pinMode(input2A, OUTPUT);
  digitalWrite(enablePin1, LOW);

  pinMode(enablePin2, OUTPUT);
  pinMode(input1B, OUTPUT);
  pinMode(input2B, OUTPUT);
  digitalWrite(enablePin2, LOW);
}
void loop() {
  digitalWrite(trig, HIGH);
  delayMicroseconds(1000);
  digitalWrite(trig, LOW);
  czas = pulseIn(echo, HIGH);
  odleglosc = (czas / 2) / 29.1;
  Serial.print(odleglosc);
  Serial.print(" cm");
  Serial.println();
  delay(20);
  
  digitalWrite(input1A, HIGH);
  digitalWrite(input2A, LOW);
  analogWrite(enablePin1, 255);
  digitalWrite(input1B, HIGH);
  digitalWrite(input2B, LOW);
  analogWrite(enablePin2, 255);

  if (odleglosc > 40 ){
    digitalWrite(input1A, HIGH);
    digitalWrite(input2A, LOW);
    analogWrite(enablePin1, 255);
    digitalWrite(input1B, HIGH);
    digitalWrite(input2B, LOW);
    analogWrite(enablePin2, 255);
 }
  else {
    digitalWrite(enablePin1, LOW);
    delay(500);
    digitalWrite(input1A, LOW);
    digitalWrite(input2B, HIGH); 
    analogWrite(enablePin1, 255);
    digitalWrite(input1B, HIGH);
    digitalWrite(input2B, LOW);
    analogWrite(enablePin2, 255);
  }
}

ten jest z poradnika

int trig = 13;
int echo = 12;
int czas;
int odleglosc;

void setup () {
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
  Serial.begin(9600);
}
void loop() {
  digitalWrite(trig, HIGH);
  delayMicroseconds(1000);
  digitalWrite(trig, LOW);
  czas = pulseIn(echo, HIGH);
  odleglosc = (czas / 2) / 29.1;
  Serial.print(odleglosc);
  Serial.print(" cm");
  Serial.println();
  delay(20);
}

a tym testowalismy odczyt

Link do komentarza
Share on other sites

@jugan1 masz pewność, że to kwestia błędnych pinów, a nie jakieś inne problemy? Nie słyszałem jeszcze o czymś takim, nie mam też żadnego pomysłu co miałoby "utrudniać" działanie czujnika na konkretnym pinie. Może zwyczajnie coś nie stykało, a zmieniając pin "przypadkiem" naprawiłeś dany problem.

Link do komentarza
Share on other sites

Tak z czystej ciekawości podpiołem hc-sr04 do arduino nano na płytce stykowej. Piny tak jak w kodzie czli trig 13 echo 12. Zasilanie czujnika z arduino 5V ,gnd czujnika do masy arduino. Kod z postu (ze zmianami, które zaproponowałem) działa ok. Najlepiej wklej foto jak to podłączyłeś.

Nie napisałeś z jakiego arduino korzystasz bo to może być istotne. Natomiast co do ograniczeń to na pinie 13 jest dioda led co czasem ma pewne znaczenie.

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.