Skocz do zawartości

Jak sprawdzic czy dziala hc-sr04


stachu4ever

Pomocna odpowiedź

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

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.