Advertisement
Guest User

Untitled

a guest
Oct 18th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.62 KB | None | 0 0
  1. #include <Servo.h>
  2.  
  3. Servo myservo1;  // create servo object to control a servo
  4. char unChar;
  5. String readString;
  6.  
  7.  
  8. #define pin1 2 // motor #1 +
  9. #define pin2 3 // motor #1 –
  10. #define pw1 9 // motor #1 pwm
  11. #define pin3 4 // motor #2 +
  12. #define pin4 5 // motor #2 –
  13. #define pw2 6 // motor #2 pwm
  14.  
  15.  
  16.  
  17.  
  18. void setup() {
  19.   pinMode(pin1, OUTPUT);
  20.   pinMode(pin2, OUTPUT);
  21.   pinMode(pin3, OUTPUT);
  22.   pinMode(pin4, OUTPUT);
  23.   pinMode(pw1, OUTPUT);
  24.   pinMode(pw2, OUTPUT);
  25.  
  26.   myservo1.attach(10);  //the pin for the servo1 control
  27.  
  28.  
  29.   Serial.begin(9600);
  30.   digitalWrite(pin1, LOW);
  31.   digitalWrite(pin2, LOW);
  32.   digitalWrite(pin3, LOW);
  33.   digitalWrite(pin4, LOW);
  34.   analogWrite(pw1, 10);
  35.   analogWrite(pw2, 10);
  36.  
  37.  
  38.  
  39. }
  40.  
  41. void loop() {
  42.   if (Serial.available()) {  //verify firs character in serial port
  43.     unChar = Serial.read();
  44.  
  45.     if (unChar == 'A') { //if A go to motor1 function
  46.       motor1();
  47.     }
  48.  
  49.     if (Serial.available() >= 2 )
  50.     {
  51.       unsigned int a = Serial.read();
  52.       unsigned int b = Serial.read();
  53.       unsigned int val = (b * 256) + a;
  54.  
  55.       if (val == 100) // motor 1 reverse
  56.       {
  57.         digitalWrite(pin1, LOW);
  58.         digitalWrite(pin2, HIGH);
  59.  
  60.       }
  61.       else if (val == 200) // motor #1 stop
  62.       {
  63.         digitalWrite(pin1, LOW);
  64.         digitalWrite(pin2, LOW);
  65.       }
  66.       else if (val == 300) // motor #1 forward
  67.       {
  68.         digitalWrite(pin1, HIGH);
  69.         digitalWrite(pin2, LOW);
  70.       }
  71.       else if (val == 400) // motor #2 reverse
  72.       {
  73.         digitalWrite(pin3, LOW);
  74.         digitalWrite(pin4, HIGH);
  75.       }
  76.       else if (val == 500) // motor #2 stop
  77.       {
  78.         digitalWrite(pin3, LOW);
  79.         digitalWrite(pin4, LOW);
  80.       }
  81.       else if (val == 600) // motor #2 forward
  82.       {
  83.         digitalWrite(pin3, HIGH);
  84.         digitalWrite(pin4, LOW);
  85.       }
  86.       else if (val >= 1000 && val <= 1255)
  87.       {
  88.         analogWrite (pw1, val - 1000);
  89.       } //}
  90.       else if (val >= 2000 && val <= 2255)
  91.       {
  92.         analogWrite (pw2, val - 2000);
  93.       }
  94.     }
  95.   }
  96. }
  97. void motor1() {
  98.   delay(10);
  99.   while (Serial.available()) { //Now the numerical data of the angle of the servomotor is received
  100.     //delayMicroseconds(100);
  101.     char c = Serial.read();  // Se leen los caracteres que ingresan por el puerto
  102.     readString += c;         //each character builds in a string
  103.   }
  104.   if (readString.length() > 0) {  //the length of the string is verified
  105.     Serial.println(readString.toInt());  //Now we send data to serial and servos
  106.     myservo1.write(readString.toInt());
  107.     readString = ""; // Clear string
  108.   }
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement