Skocz do zawartości

Jak sprawdzic czy dziala hc-sr04


Pomocna odpowiedź

Napisano

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?

Czym zasilacie arduino i czujnik? Z tego co pamiętam to zasilanie przy tym czujniku musi być dość czyste a przy samej płytce czujnika spory kondensator.

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

 

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

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

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.

  • 2 tygodnie później...

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