Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Servo.h> // подключаем библиотеку для работы с серводвигателями
- Servo leftServo; // создаём объект "левый двигатель"
- Servo rightServo; // создаём объект "правый двигатель"
- #define axis_X 0 // Ось Х подключена к Analog 0
- #define axis_Y 1 // Ось Y подключена к Analog 1
- #define ButPin 2 // Ось Z (кнопка джойстика) подключена к Digital 2, пока не используется
- int value_X, value_Y, value_Z = 0; // Переменные для хранения значений осей/кнопки
- int X = 92; // задаём начальное значение сигнала для правого двигателя (чтобы не крутился, пока не скажут)
- int X2 = 90; // задаём начальное значение сигнала для левого двигателя (чтобы не крутился, пока не скажут)
- void setup()
- {
- leftServo.attach(10); // подключаем левый двигательк 10 пину
- rightServo.attach(9); // подключаем правый двигатель к 9 пину
- }
- void loop()
- {
- value_X = analogRead(axis_X); // получаем отклонение по оси X от джойстика
- value_X = map(value_X, 0, 1023, 0, 180); // переводим в диапазон 0-180
- value_X = floor(value_X/10)*10; // округляем до десятков
- /*
- * Округляем значение переменной до десятков, т.к. с джойстика приходят данные в диапазоне +/-3
- * даже если его не трогать
- */
- value_Y = analogRead(axis_Y); // получаем отклонение по оси Y от джойстика
- value_Y = map(value_Y, 0, 1023, 0, 180); // переводим в диапазон 0-180
- value_Y = floor(value_Y/10)*10; // округляем до десятков
- /*
- * Округляем значение переменной до десятков, т.к. с джойстика приходят данные в диапазоне +/-3
- * даже если его не трогать
- */
- if (value_X != 80) {
- /* мой джойстик в спокойном состоянии выдавал 81-84 по оси X
- * поэтому сделано условие проверки, что джойстик именно "нажали",
- * а не он сам "плавает"
- * Если джойстик "нажали", то говорим моторчикам крутиться
- */
- X = 10 + value_X;
- X2 = 180 - value_X;
- } else {
- // Если джойстик не нажимали, то говорим моторчикам стоять
- X = 92;
- X2 = 90;
- }
- leftServo.write(X2); // команда для левого мотора
- rightServo.write(X); // команда для правого мотора
- if (value_Y < 75) { // поворот влево (левый мотор стоит, правый крутится)
- rightServo.write(170-value_Y);
- // leftServo.write(0);
- }
- if (value_Y > 105) { // поворот вправо (правый мотор стоит, левый крутится)
- leftServo.write(170-value_Y);
- // rightServo.write(0);
- }
- delay(100);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement