Skocz do zawartości

Czujnik ultradźwiękowy i robot.


Pomocna odpowiedź

Napisano

Witam. Zająłem się budową robota. Posiadam motor shield i ultradźwiękowy czujnik odległości hc sr04. Czy ktoś mógł by mi sprawdzić kod ponieważ nie działa tak jak należy.

#include <AFMotor.h>

AF_DCMotor tyl(4, MOTOR34_1KHZ); // create motor #2, 64KHz pwm
AF_DCMotor przod(1, MOTOR12_64KHZ);

int impuls = 13;
int sonar = 12;
long czas, cm;



void setup() {
 Serial.begin(9600);           // set up Serial library at 9600 bps
 Serial.println("Motor test!");
 pinMode(impuls, OUTPUT);
 pinMode(sonar, INPUT);
 tyl.setSpeed(240);     // set the speed to 200/255
 przod.setSpeed(255);

}

void loop() 

{
 digitalWrite(impuls, LOW);
 delayMicroseconds(2);
 digitalWrite(impuls, HIGH);
 delayMicroseconds(10);
 digitalWrite(impuls, LOW);
 czas = pulseIn(sonar, HIGH);
 cm = microsecondsToCentimeters(czas);
     tyl.run(FORWARD);
if (cm < 20)
{ tyl.run(RELEASE);
  delay(500);
  tyl.run(BACKWARD);
  delay(500);
  tyl.run(RELEASE);
  delay(200);
  przod.run(FORWARD);
  delay(500);
  tyl.run(FORWARD);
  przod.run(BACKWARD);
  delay(500);
  przod.run(RELEASE);
  }


 Serial.print("Distance: [");
 Serial.print(cm);
 Serial.print("]cm\n");
 delay(100);



}


 long microsecondsToCentimeters(long microseconds)
{return microseconds / 29 / 2;}


Czy ktoś mógł by mi sprawdzić kod ponieważ nie działa tak jak należy.

A jak należy? Napisz, co chciałeś osiągnąć, a co udało Ci się zrobić.

Silniki tył startują i potem nic. Nie zależnie czy czujnik wykrywa przedmiot w odległości większej czy mniejszej od 20. O tym że czujnik działa wiem ponieważ sprawdzam na serial monitor.

Skoro czujnik działa to sprawdź silniki. Nie znam bibliotek, której stosujesz, ale wygląda na to, że silniki powinny być podłączone do ściśle określonych pinów. Jesteś pewien, że podłączyłeś do właściwych?

Napisz krótki program, który będzie w pętli przez 1s kręcił silnikami w przód i przez 1s w tył. Napisz, czy działa.

Sprawdzzłem to juz wczesniej. Działa prawidłowo wszystko ale akurat ten kod nie działa a powinien moim zdaniem i jeśli by była taka możliwość to chcę żeby ktoś sprawdził czy jest poprawny. Ponieważ jak zauważyłem nie wykonuje się dalej funkcja. A jak dodam po if ( cm < 20 ) {tyl.run(RELEASE);} np to jest git. Nie działa wtedy jak jest kilka funkcji w {} po if.

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