Advertisement
Guest User

servo_on_buttons

a guest
Dec 23rd, 2015
493
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <Servo.h>
  2.  
  3. int servo_port = 10;
  4. int left_btn = 7;
  5. int right_btn = 8;
  6. int left_led = 12;
  7. int right_led = 13;
  8.  
  9. int initial_angle = 90;         // Начальный угол
  10. int min_angle = 0;              // Минимальный угол (при повороте направо)
  11. int max_angle = 179;            // Максимальный угол (при повороте налево)
  12. int angle = initial_angle;      // Угол при включении
  13.  
  14. int rotation_delay = 5;         // Пауза между шагом поворота
  15. int rotation_angle_step = 1;    // Угол поворота на шаг
  16.  
  17. int initial_delay = 1000;       // Пауза при запуске на  поворот в начальное положение
  18.  
  19. Servo servo;
  20.  
  21. void setup()
  22. {
  23.   pinMode(left_btn, INPUT);
  24.   pinMode(right_btn, INPUT);
  25.   pinMode(left_led, OUTPUT);
  26.   pinMode(right_led, OUTPUT);
  27.   servo.attach(servo_port);
  28.   servo.write(angle);
  29.   delay(initial_delay);
  30. }
  31.  
  32. void loop()
  33. {
  34.  
  35.   // Left button pressed
  36.   if (digitalRead(left_btn) == HIGH)
  37.   {
  38.     digitalWrite(left_led, HIGH);
  39.     if (angle <= max_angle)
  40.    {
  41.        angle += rotation_angle_step;
  42.        servo.write(angle);
  43.        delay(rotation_delay);
  44.    }
  45.  }
  46.  // Left button unpressed
  47.  if (digitalRead(left_btn) == LOW)
  48.  {
  49.    digitalWrite(left_led, LOW);
  50.  }
  51.  
  52.  
  53.  // Right button pressed
  54.  if (digitalRead(right_btn) == HIGH)
  55.  {
  56.    digitalWrite(right_led, HIGH);
  57.    if (angle >= min_angle)
  58.     {
  59.         angle -= rotation_angle_step;
  60.         servo.write(angle);
  61.         delay(rotation_delay);
  62.     }
  63.   }
  64.   // Right button unpressed
  65.   if (digitalRead(right_btn) == LOW)
  66.   {
  67.     digitalWrite(right_led, LOW);
  68.   }
  69.  
  70.  
  71.   // Both buttons unpressed
  72.   if ((digitalRead(left_btn) == LOW) && (digitalRead(right_btn) == LOW))
  73.  {
  74.    angle = initial_angle;
  75.     servo.write(angle);
  76.   }
  77.  
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement