Arduino Polska Forum
Problem z autem RC z Arduino na pokładzie - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: Problem z autem RC z Arduino na pokładzie (/watek-problem-z-autem-rc-z-arduino-na-pok%C5%82adzie)



Problem z autem RC z Arduino na pokładzie - RoboticJakub - 11-06-2019

Witam
Zbudowałem sobie ostatnio zdalnie sterowane auto na Arduino.Rolę sterowników pelnią w nim 4 przekaźniki.Mam w nim taki program i wszystko działa oprócz jednej rzeczy.Mianowicie kiedy auto straci sygnał od nadajnika to zamiast zostać w miejscu,jedzie do przodu.Jest to dość duży problem bo może spowodować uszkodzenie pojazdu.I dlatego pytanie jak zmienić ten kod aby po zaniku sygnału auto stało nieruchomo?

Z góry dziękuje za wszystkie odpowiedzi


Kod:
int M1A = 12;
int M1B = 11;

int M2A = 10;
int M2B = 9;


int ch1;
int ch2;
int ch3;
int ch5;


void setup() {
 pinMode(M1A, OUTPUT);
 pinMode(M1B, OUTPUT);
 pinMode(M2A, OUTPUT);
 pinMode(M2B, OUTPUT);

//  Serial.begin(9600);
}

void s(){
digitalWrite(M1A, HIGH);  
digitalWrite(M1B, HIGH);  
digitalWrite(M2A, HIGH);  
digitalWrite(M2B, HIGH);  


}

void r (){
digitalWrite(M1A, LOW);  
digitalWrite(M1B, HIGH);  
digitalWrite(M2A, HIGH);  
digitalWrite(M2B, LOW);
}

void t (){
digitalWrite(M1A, 1);  
digitalWrite(M1B, 0);  
digitalWrite(M2A, 1);  
digitalWrite(M2B, 0);

}

void p(){
digitalWrite(M1A, 0);  
digitalWrite(M1B, 1);  
digitalWrite(M2A, 0);  
digitalWrite(M2B, 1);  

}

void l (){
digitalWrite(M1A, HIGH);  
digitalWrite(M1B, LOW);  
digitalWrite(M2A, LOW);  
digitalWrite(M2B, HIGH);  
}

void loop() {

 

 ch1 = pulseIn(A0, HIGH, 25000);
 ch2 = pulseIn(A1, HIGH, 25000);
 ch5 = pulseIn(A3, HIGH, 25000);
 ch3 = pulseIn(A2, HIGH, 25000);
 
 ch1 = map(ch1, 1000,2000,-100,100);
 ch2 = map(ch2, 1000,2000,-100,100);
 ch5 = map(ch5, 1000,2000,-100,100);
 ch3 = map(ch3, 1000,2000,-100,100);
 
s();

   
 if(ch2<-50 ){
   t();
 }

 if (ch2>50 ){
    p();    
 }
 if(ch1<-50 ){
   r();
 }

 if (ch1>50 ){
    l();    
 
 
 }
// }

 
 delay(10);
}



RE: Problem z autem RC z Arduino na pokładzie - es2 - 11-06-2019

Co to za nadajnik i odbiornik bo szklana kula pojechała na wakacje i nie mogę jej spytać.
Bez schematu nie ma wspólnego tematu a przekaźniki w urządzeniach zasilanych z baterii/akumulator o to stosunkowo małej pojemności to, delikatnie pisząc (mówiąc) nieporozumienie.


RE: Problem z autem RC z Arduino na pokładzie - RoboticJakub - 11-06-2019

Nadajnik to Radiolink T6EHP-E a odbiornik R7EH.Użyłem przekaźników ponieważ,w orginalnym aucie były one też użyte.Zmodyfikowałem ten pojazd tak że wyrzuciłem orginalne PCB i zastąpiłem tą płytkę Arduino,przekaźnikami oraz nadajnikiem aby zwiększyć zasięg sterowania. Zapomniałem dodać,że nie jestem zbyt dobry w programowaniu jak na razie i nie jestem w stanie naprawić tego błędu.


RE: Problem z autem RC z Arduino na pokładzie - es2 - 11-06-2019

"pulseIn" to niewypał, Mierz czas sprzętowo timerem (przechwytywanie), tyle, że w większości Arduino (jakiego użyłeś?) jest za mało timerów.
Jak wybierzesz uC z odpowiednią liczbą timerów, to dodasz sobie jeszcze timeout, który gdy brak impulsów, zatrzyma pojazd.

Ten delay(10) to czemu służy?