Advertisement
Guest User

arduinodrivejj

a guest
Jan 23rd, 2020
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.41 KB | None | 0 0
  1. #include <Servo.h>
  2. const uint8_t servoPin[4] = {4, 5, 6, 7}; /* Servo (1 - 4) Pins */
  3. Servo servo_SVM[4];
  4. int RH, RV, LV, LH;
  5. int speedleft, speedright, a, b, c, d;
  6.  
  7. const uint8_t speedMotorPin_PWM[4] = {12, 11, 10, 9};   //PWM pins
  8. const uint8_t directPin_INA[4] = {43, 41, 36, 35};      //INA pins
  9. const uint8_t directPin_INB[4] = {47, 40, 38, 34};      //INB pins
  10. const uint8_t enablePin_EN[4] = {42, 39, 37, 33};       //EN pins
  11. const uint8_t currentSensePin_CS[4] = {A0, A3, A2, A1}; //CS pins
  12.  
  13. uint16_t currentRead[4];
  14.  
  15. void setup()
  16. {
  17.   Serial.begin(9600);
  18.   pinMode(22, INPUT);
  19.   pinMode(23, INPUT);
  20.   pinMode(24, INPUT);
  21.   pinMode(25, INPUT);
  22.  
  23.   for (uint8_t i = 0 ; i < 4; i++)
  24.   {
  25.     servo_SVM[i].attach(servoPin[i], 1000, 2200); //for servo 996R
  26.     servo_SVM[i].write(0); //SetUp Servo is 0 degree
  27.   }
  28.   for (uint8_t i = 0; i < 4; i++)
  29.   {
  30.     pinMode(directPin_INA[i], OUTPUT);
  31.     digitalWrite(directPin_INA[i], LOW);
  32.  
  33.     pinMode(directPin_INB[i], OUTPUT);
  34.     digitalWrite(directPin_INB[i], LOW);
  35.  
  36.     pinMode(speedMotorPin_PWM[i], OUTPUT);
  37.     analogWrite(speedMotorPin_PWM[i], 0);
  38.  
  39.     pinMode(enablePin_EN[i], OUTPUT);
  40.     digitalWrite(enablePin_EN[i], HIGH); //Enable open drain ouput
  41.   }
  42. }
  43. void loop()
  44. {
  45.   RH = pulseIn(22,HIGH);
  46.   RV = pulseIn(23,HIGH);
  47.   LV = pulseIn(24,HIGH);
  48.   LH = pulseIn(25,HIGH);
  49.  
  50.  
  51.  
  52.   Serial.print(RH);
  53.   Serial.print("  ");
  54.   Serial.print(RV);
  55.   Serial.print("  ");
  56.   Serial.print(LV);
  57.   Serial.print("  ");
  58.   Serial.print(LH);
  59.   Serial.print("  ");
  60.   Serial.print(speedleft);
  61.   Serial.print("  ");
  62.   Serial.println(speedright);
  63. /*
  64.  
  65. RH = constrain(RH,1000,2000);
  66. RV = constrain(RV,1000,2000);
  67. LV = constrain(LV,1000,2000);
  68. LH = constrain(LH,1000,2000);
  69.  
  70.   speedleft = constrain(speedleft,0,255);
  71.   speedright= constrain(speedright,0,255);
  72.   q = constrain(q,0,255);
  73.   w = constrain(w,0,255);  
  74.   e = constrain(e,0,255);
  75.   r = constrain(r,0,255);
  76.   */
  77.   if(RV > 1575)
  78.   {
  79.     speedleft = map(RV, 1575, 2000, 0, 255);
  80.     speedright = speedleft;
  81.     if(RH > 1575)
  82.     {
  83.       a = map(RH, 1575, 2000, 0, 255);
  84.       speedright = speedright - a;
  85.     }
  86.      if(RH < 1425)
  87.     {
  88.       b = map(RH, 1425, 1000, 0, 255);
  89.       speedleft = speedleft - b;
  90.     }
  91.       digitalWrite(directPin_INA[0], HIGH);
  92.       digitalWrite(directPin_INB[0], LOW);
  93.       analogWrite(speedMotorPin_PWM[0], speedleft);
  94.       digitalWrite(directPin_INA[2], LOW);
  95.       digitalWrite(directPin_INB[2], HIGH);
  96.       analogWrite(speedMotorPin_PWM[2], speedright);
  97.   }
  98.   else if(RV < 1425)
  99.   {
  100.     speedleft = map(RV, 1425, 1000, 0, 255);
  101.     speedright = speedleft;
  102.     if(RH > 1530)
  103.     {
  104.       c = map(RH, 1575, 2000, 0, 255);
  105.       speedright = speedright - c;
  106.     }
  107.     else if(RH < 1425)
  108.     {
  109.       d = map(RH, 1425, 1000, 0, 255);
  110.       speedleft = speedleft - d;
  111.     }
  112.  
  113.      
  114.       speedleft = constrain(speedleft,0,255);
  115.       speedright= constrain(speedright,0,255);
  116.       digitalWrite(directPin_INA[0], LOW);
  117.       digitalWrite(directPin_INB[0], HIGH);
  118.       analogWrite(speedMotorPin_PWM[0], speedleft);
  119.       digitalWrite(directPin_INA[2], HIGH);
  120.       digitalWrite(directPin_INB[2], LOW);
  121.       analogWrite(speedMotorPin_PWM[2], speedright);
  122.   }
  123.  
  124.   else if(RV < 1575 && RV > 1425)
  125.   {
  126.     if(RH < 1575 && RH > 1425)
  127.     {
  128.       digitalWrite(directPin_INA[0], LOW);
  129.       digitalWrite(directPin_INB[0], LOW);
  130.       analogWrite(speedMotorPin_PWM[0], 0);
  131.       digitalWrite(directPin_INA[2], LOW);
  132.       digitalWrite(directPin_INB[2], LOW);
  133.       analogWrite(speedMotorPin_PWM[2], 0);
  134.     }
  135.     else if(RH > 1575)
  136.     {
  137.       speedleft = map(RV, 1575, 2000, 0, 255);
  138.       speedright = speedleft;
  139.       digitalWrite(directPin_INA[0], HIGH);
  140.       digitalWrite(directPin_INB[0], LOW);
  141.       analogWrite(speedMotorPin_PWM[0], speedleft);
  142.       digitalWrite(directPin_INA[2], HIGH);
  143.       digitalWrite(directPin_INB[2], LOW);
  144.       analogWrite(speedMotorPin_PWM[2], speedright);
  145.     }
  146.     else if(RH < 1425)
  147.     {
  148.       speedleft = map(RV, 1425, 1000, 0, 255);
  149.       speedright = speedleft;
  150.       digitalWrite(directPin_INA[0], LOW);
  151.       digitalWrite(directPin_INB[0], HIGH);
  152.       analogWrite(speedMotorPin_PWM[0], speedleft);
  153.       digitalWrite(directPin_INA[2], LOW);
  154.       digitalWrite(directPin_INB[2], HIGH);
  155.       analogWrite(speedMotorPin_PWM[2], speedright);
  156.     }
  157.   }
  158.  
  159.   //delay(5);
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement