Problem z kodem Arduino

Odpowiedz Nowy wątek
2018-12-07 18:29
0

Witam. Wgrałem dość prosty kod do mojego Arduino RedBot i mam problem. Jest to samochodzik z czujnikiem odległości, gdy zobaczy przeszkodę która jest bliżej niż 10cm to ma wycofać i skręcić, w każdym innym wypadku ma jechać prosto. Użyłem w nim czujnika odległości HC-SR04, podpiąłem go do 5V i pokazuje w miarę poprawne wyniki. Ale gdy odepnę płytkę od PC to wykonuje się niewłaściwy warunek. Ciągle cofa i skręca. Wszystko działa idealnie kiedy płytka jest wpięta do PC albo gdy wyłączę silniki (słychać po brzęczeniu czujnika). Spotkał się ktoś z czymś takim? Niżej podaje kod. Pozdrawiam.

#include <RedBot.h>
#include <RedBotSoftwareSerial.h>
RedBotAccel accel;      
RedBotMotors motors;
int CM;        
long CZAS;     

void setup() {

  Serial.begin(9600);
  pinMode(A2, OUTPUT);  //Trig
  pinMode(A3, INPUT);   //Echo

}

void pomiar_odleglosci()
{
  digitalWrite(A2, HIGH);      
  delayMicroseconds(10);
  digitalWrite(A2, LOW);
  CZAS = pulseIn(A3, HIGH);
  CM = CZAS / 58;                
}

void loop(){
  pomiar_odleglosci();               
   Serial.print("Odleglosc: ");      
   Serial.print(CM);
  Serial.println(" cm");

  if(CM>10)                 
 {
  motors.drive(100);
 }
 else     
 {
  motors.drive(-100);
  delay(400);
  motors.stop();

  delay(400);

  motors.rightMotor(100);
  delay(700);
  motors.stop();

  motors.drive(100);
 }
}
edytowany 1x, ostatnio: furious programming, 2018-12-07 20:58

Pozostało 580 znaków

2018-12-09 10:30
0

Problem może leżeć w tym, że te czujniki mają zakres do ok. 200 cm, więc jak masz robota, który patrzy gdzieś w siną dal (tzn. przed sobą ma dwa metry bez przeszkód), to funkcja pulseIn nie dostawszy z powrotem impulsu poddaje się domyślnie po sekundzie i zwraca 0. Wtedy warunek CM > 10 nie jest spełniony i robot głupieje.

Pozostało 580 znaków

2018-12-10 00:01
1

A może problem nie jest z oprogramowaniem tylko zasilaniem układu?

Pozostało 580 znaków

2018-12-10 15:01
2
P C (PIOTRUSIO) napisał(a):

Wszystko działa idealnie kiedy płytka jest wpięta do PC albo gdy wyłączę silniki (słychać po brzęczeniu czujnika).

To jest wskazówka na to,że źródło zasilania jest zbyt obciążone.
Jak podpięty jesteś do PC, to PC dostarcza więcej prądu.
Jak silniki są odłączone, to nie ma spadku napięcia wywołanego obciążeniem.

Do weryfikacji użyj woltomierza, jak bardzo spada napięcie na czujniku, gdy włączone są silniki.
Porównaj to ze specyfikacją czujnika (tolerancja zasilania).


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0