• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Problem z autem RC z Arduino na pokładzie
#1
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);
}
 
Odpowiedź
#2
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.
- Kod z Delay i/lub bez WDT (WDG) to nie kod, to DEMO!
- Wielowątkowość to najczęściej konieczność w dobrym programie.

Dlaczego TFT kolor działa wolno z ArduinoUNO/Mega?
http://er-mik.prv.pl/projekty_avt.php




 
Odpowiedź
#3
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.
 
Odpowiedź
#4
"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?
- Kod z Delay i/lub bez WDT (WDG) to nie kod, to DEMO!
- Wielowątkowość to najczęściej konieczność w dobrym programie.

Dlaczego TFT kolor działa wolno z ArduinoUNO/Mega?
http://er-mik.prv.pl/projekty_avt.php




 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości