11-06-2019, 19:15
(Ten post był ostatnio modyfikowany: 11-06-2019, 20:00 przez RoboticJakub.)
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
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);
}