Skocz do zawartości

Robot z czujnikiem parkowania - problem z obsługą pilota TV


ximot

Pomocna odpowiedź

Cześć, próbuję zbudować swojego pierwszego robota. Jest to robot z kursu budowy robotów wyposażony dodatkowo w czujnik parkowania, który się obraca. Założenie jest takie, że robot jest sterowany poprzez pilot od TV i w momencie wciśnięcia przycisku "8" na pilocie (jazda do tyłu) powinno zacząć obracać się serwo w celu skanowania otoczenia. Ta część projektu wykonuje się poprawnie. Natomiast na tym serwomechnizmie umieściłem czujnik odległości HC-SR04, który w miarę zbliżania się do przeszkody ma uruchamiać Buzzer. Tutaj pojawiają się schody, ponieważ zauważyłem, że kiedy korzystam z biblioteki do obsługi pilota (RC5) i jednocześnie wywołuję funkcję do obsługi czujnika odległości zaczerpniętą z kursu  "Kurs Arduino – #9 – Czujnik odległości HC-SR04, funkcje" program przestaje reagować na wciskane przyciski z pilota.

Głowię się nad tym i próbuję to jakoś obejść już od kilku dobrych wieczorów.... Czy zmagał się już ktoś z podobnym problemem?
Proszę o pomoc.

Edytowano przez ximot
Link do komentarza
Share on other sites

// funkcja do obsługi czujnika odległości zwracająca odległość do przeszkody
int DistanceSensor ()
{

digitalWrite (TRIG, LOW);                                 // zmiana stanu sygnału z wysokiego na niski na wyjściu TRIG powoduje wyzowlenie pomiaru
delayMicroseconds (5);
digitalWrite (TRIG, HIGH);
delayMicroseconds (15);
digitalWrite (TRIG, LOW);

measured_time = pulseIn(ECHO, HIGH);                     // dokonanie pomiaru czasu na wyjściu ECHO
measured_distance = measured_time / 58 ;                 // zmierzony czas podzielony przez 58 daje odległość w centymetrach (wynika z prędkości dźwięku)

return measured_distance;
  
}

// funkcja do wyzwolenia alarmu w zależności od odległości od przeszkody
void Buzzer()
{ 
    if (DistanceSensor() < 15)
    {
    digitalWrite (BZR, HIGH);
    }
  if ((DistanceSensor() > 15) && (DistanceSensor() < 35))
  {
  digitalWrite (BZR, HIGH);
  delay (200);
  digitalWrite (BZR, LOW);
  }
    if (DistanceSensor() > 35) 
    {
    digitalWrite (BZR, LOW); 
    } 
}

void ScanningSurrounding ()
{
  if (command_for_device == 8)
  {
      ServoMechanism.write(10);
      ServoMechanism.write(80);
  }    
}


void Pilot ()
{

 // dokonuje odcztu z pilota po wciśnięciu przycisku
  RC5.read(&toggle, &adress_device, &command_for_device);
  { 
    switch (command_for_device)
    {
   // jazda do prozdu po wciśnięciu przycisku "2"     
      case 2:
      LeftMotor (80);
      RightMotor (80);
      break;
      
   // jazda do tyłu po wciśnięciu przycisku "8"
      case 8:
      LeftMotor (-80);
      RightMotor (-80);
      break;

   // jazda w prawo po wciśnięciu przycisku "6"
      case 6:
      LeftMotor (80);
      RightMotor (-80);
      break;

   // jazda w lewo po wciśnięciu przycisku "4"
      case 4:
      LeftMotor (-80);
      RightMotor (80);
      break;
      
   // zatrzymanie silników po wciśnięciu przycisku "5"
      case 5:
      StopLeftMotor();
      StopRightMotor();
      break;
    }  
  } 
}




 
void loop() 
{
Pilot ();

ScanningSurrounding ();
    
Buzzer ();

}

 

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.