123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- const int ch1_pin = 10 ;
- const int ch2_pin = 11 ;
- int ch1;
- int ch2;
- int move;
- int turn;
- int speeds_pin[2] = {5, 6};
- int dirs_pin[2] = {4, 7};
- int threshold = 30 ;
- int middleThreshold (int RCvalue, int threshold) {
- if ( (RCvalue < 1500 + threshold) && (RCvalue > 1500 - threshold) ) { RCvalue = 1500;}
- return RCvalue ;
-
- }
- void setup() {
- pinMode(ch1_pin, INPUT);
- pinMode(ch2_pin, INPUT);
- Serial.begin(9600);
- for(int i; i<2; i++){
- pinMode(speeds_pin[i], OUTPUT);
- pinMode(dirs_pin[i], OUTPUT);
- analogWrite(speeds_pin[i], 0) ;
- }
- }
- void loop() {
-
- ch1 = pulseIn(ch1_pin, HIGH, 25000);
- ch2 = pulseIn(ch2_pin, HIGH, 25000);
- ch1 = middleThreshold(ch1, threshold);
- ch2 = middleThreshold(ch2, threshold);
-
-
- move = map(ch2, 1000,2000, -255, 255);
-
- turn = map(ch1,1000,2000,-255,255);
- turn = constrain(turn, -move, move);
-
-
- int speeds[2] = {0, 0} ;
- int dirs[2] = {0, 0} ;
-
- if (turn>0) { speeds[0] = move; speeds[1] = move - turn; }
- else {turn=abs(turn); speeds[0] = move-turn; speeds[1] = move ;}
-
- for(int i =0; i<2; i++) {
- dirs[i] = speeds[i] > 0 ? 1 : 0 ;
- speeds[i] = abs( speeds[i]);
- digitalWrite(dirs_pin[i], dirs[i]) ;
- analogWrite(speeds_pin[i], speeds[i]) ;
-
- }
-
- Serial.print("move:");
- Serial.println(move);
-
- Serial.print("turn:");
- Serial.println(turn);
-
- Serial.print("move-turn:");
- Serial.println(move-turn);
-
- Serial.println();
- Serial.println();
- Serial.println();
- }
|