Advertisement
Guest User

Two servo and Joystick

a guest
Feb 7th, 2015
295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.44 KB | None | 0 0
  1. #include <Servo.h> // подключаем библиотеку для работы с серводвигателями
  2.  
  3. Servo leftServo;  // создаём объект "левый двигатель"
  4. Servo rightServo;  // создаём объект "правый двигатель"
  5.  
  6. #define axis_X 0    // Ось Х подключена к Analog 0
  7. #define axis_Y 1    // Ось Y подключена к Analog 1
  8. #define ButPin 2    // Ось Z (кнопка джойстика) подключена к Digital 2, пока не используется
  9. int value_X, value_Y, value_Z = 0;    // Переменные для хранения значений осей/кнопки
  10.  
  11. int X = 92; // задаём начальное значение сигнала для правого двигателя (чтобы не крутился, пока не скажут)
  12. int X2 = 90; // задаём начальное значение сигнала для левого двигателя (чтобы не крутился, пока не скажут)
  13.      
  14. void setup()
  15. {
  16.   leftServo.attach(10);  // подключаем левый двигательк 10 пину
  17.   rightServo.attach(9); // подключаем правый двигатель к 9 пину
  18. }
  19.  
  20. void loop()
  21. {
  22.   value_X = analogRead(axis_X); // получаем отклонение по оси X от джойстика
  23.   value_X = map(value_X, 0, 1023, 0, 180); // переводим в диапазон 0-180
  24.   value_X = floor(value_X/10)*10; // округляем до десятков
  25.   /*
  26.    * Округляем значение переменной до десятков, т.к. с джойстика приходят данные в диапазоне +/-3
  27.    * даже если его не трогать
  28.   */
  29.   value_Y = analogRead(axis_Y); // получаем отклонение по оси Y от джойстика
  30.   value_Y = map(value_Y, 0, 1023, 0, 180); // переводим в диапазон 0-180
  31.   value_Y = floor(value_Y/10)*10; // округляем до десятков
  32.   /*
  33.    * Округляем значение переменной до десятков, т.к. с джойстика приходят данные в диапазоне +/-3
  34.    * даже если его не трогать
  35.   */
  36.  
  37.   if (value_X != 80) {
  38.     /* мой джойстик в спокойном состоянии выдавал 81-84 по оси X
  39.      * поэтому сделано условие проверки, что джойстик именно "нажали",
  40.      * а не он сам "плавает"
  41.      * Если джойстик "нажали", то говорим моторчикам крутиться
  42.     */
  43.     X = 10 + value_X;
  44.     X2 = 180 - value_X;
  45.   } else {
  46.     // Если джойстик не нажимали, то говорим моторчикам стоять
  47.       X = 92;
  48.       X2 = 90;
  49.       }
  50.     leftServo.write(X2); // команда для левого мотора
  51.     rightServo.write(X); // команда для правого мотора
  52.  
  53.   if (value_Y < 75) { // поворот влево (левый мотор стоит, правый крутится)
  54.     rightServo.write(170-value_Y);
  55. //    leftServo.write(0);
  56.   }
  57.   if (value_Y > 105) { // поворот вправо (правый мотор стоит, левый крутится)
  58.     leftServo.write(170-value_Y);
  59. //    rightServo.write(0);
  60.   }
  61.   delay(100);
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement