Совмещение двух скетчей
- Войдите на сайт для отправки комментариев
Пт, 05/05/2017 - 12:09
Всем привет, У меня такая проблема: Имеются 2 скетча, которые друг без друга работают отлично, но мне нужно их совместить вместе, как бы я не пробовал, ничего не получалось, либо работает одно, либо ничего. Помогите разобраться.
#include <Servo.h> Servo myservo; // create servo object to control a servo // a maximum of eight servo objects can be created int pos = 0; // variable to store the servo position int motor = 0; void setup() { Serial.begin(9600); // initialize serial: myservo.attach(9); // attaches the servo on pin 9 to the servo object Serial.print("Arduino control Servo Motor Connected OK"); Serial.print('\n'); } void loop() { // if there's any serial available, read it: while (Serial.available() > 0) { // look for the next valid integer in the incoming serial stream: motor = Serial.parseInt(); // do it again: pos = Serial.parseInt(); // look for the newline. That's the end of your sentence: if (Serial.read() == '\n') { myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position // print the three numbers in one string as hexadecimal: Serial.print("Data Response : "); Serial.print(motor, DEC); Serial.print(pos, DEC); } } }
// *********************** Установка выводов моторов ************************ int MotorLeftSpeed = 5; // Левый (А) мотор СКОРОСТЬ — ENA int MotorLeftForward = 4; // Левый (А) мотор ВПЕРЕД — IN1 int MotorLeftBack = 2; // Левый (А) мотор НАЗАД — IN2 int MotorRightForward = 8; // Правый (В) мотор ВПЕРЕД — IN3 int MotorRightBack = 7; // Правый (В) мотор НАЗАД — IN4 int MotorRightSpeed = 6; // Правый (В) мотор СКОРОСТЬ — ENB // ********************** Для управления по блютуз **************************** char btCommand = 'S';// Задаем переменную BLUETOOTH команда — по умолчанию "S" — СТОП // ********************************** SETUP *********************************** void setup () { Serial.begin (9600); //Включаем серйиный порт — скрость 9600 //****************** Настраиваем параметры выводов ARDUINO ****************** pinMode (MotorLeftForward, OUTPUT); pinMode (MotorLeftBack, OUTPUT); pinMode (MotorLeftSpeed, OUTPUT); pinMode (MotorRightForward, OUTPUT); pinMode (MotorRightBack, OUTPUT); pinMode (MotorRightSpeed, OUTPUT); } // ****************** Задаем основные направления движения ****************** void forward (int a) // ВПЕРЕД { digitalWrite (MotorRightBack, LOW); digitalWrite (MotorRightForward, HIGH); analogWrite (MotorRightSpeed, 150); digitalWrite (MotorLeftBack, LOW); digitalWrite (MotorLeftForward, HIGH); analogWrite (MotorLeftSpeed, 150); delay (a * 50); } void right (int b) // ПОВОРОТ ВПРАВО (одна сторона) { digitalWrite (MotorLeftBack, LOW); digitalWrite (MotorLeftForward, HIGH); analogWrite (MotorLeftSpeed, 200); digitalWrite (MotorRightBack, LOW); digitalWrite (MotorRightForward, LOW); delay (b * 50); } void left (int c) // ПОВОРОТ ВЛЕВО (одна сторона) { digitalWrite (MotorRightBack, LOW); digitalWrite (MotorRightForward, HIGH); analogWrite (MotorRightSpeed, 200); digitalWrite (MotorLeftBack, LOW); digitalWrite (MotorLeftForward, LOW); delay (c * 50); } void turnR (int d) // РАЗВОРОТ ВПРАВО (два стороны) { digitalWrite (MotorRightBack, HIGH); digitalWrite (MotorRightForward, LOW); digitalWrite (MotorLeftBack, LOW); digitalWrite (MotorLeftForward, HIGH); delay (d * 50); } void turnL (int e) // РАЗВОРОТ ВЛЕВО (два стороны) { digitalWrite (MotorRightBack, LOW); digitalWrite (MotorRightForward, HIGH); digitalWrite (MotorLeftBack, HIGH); digitalWrite (MotorLeftForward, LOW); delay (e * 50); } void stopp (int f) // СТОП { digitalWrite (MotorRightBack, LOW); digitalWrite (MotorRightForward, LOW); digitalWrite (MotorLeftBack, LOW); digitalWrite (MotorLeftForward, LOW); delay (f * 50); } void back (int g) // НАЗАД { digitalWrite (MotorRightBack, HIGH); digitalWrite (MotorRightForward, LOW); digitalWrite (MotorLeftBack, HIGH); digitalWrite (MotorLeftForward, LOW);; delay (g * 50); } // ********************* Управление по БЛЮТУЗ **************************** void loop() { if (Serial.available() > 0)// В случае если в "Серийном порту" есть информация { btCommand = Serial.read(); // Считываем инвормацию с "Серийного порта" Serial.println(btCommand); // Печатаем инвормацию с "Серийного порта" — необходио в слуае отладки программы switch (btCommand)// Отрабатывем в соотвествии с поступившей командой { case 'F': forward (3); // едем ВПЕРЕД break; case 'B': back (3); // едем НАЗАД break; case 'R': right (3); // поворачиваем ВПРАВО break; case 'L': left (3); // поворачиваем ВЛЕВО break; case 'S': stopp (3); // СТОП! } } }
Так вы и не пытались их совмещать!?
Почему же, пытался, получилось такое
с этим delay (a * 50); ничего нормально работать не будет
с этим delay (a * 50); ничего нормально работать не будет
В совместном варианте работает только серва, а моторы не подают признаков, что можете посоветовать сделать, можете подправить?
с этим delay (a * 50); ничего нормально работать не будет
В совместном варианте работает только серва, а моторы не подают признаков, что можете посоветовать сделать, можете подправить?
Тут не подправить, тут парсер писать надо
с этим delay (a * 50); ничего нормально работать не будет
В совместном варианте работает только серва, а моторы не подают признаков, что можете посоветовать сделать, можете подправить?
Тут не подправить, тут парсер писать надо
А как и что это поясните пожалуста, а то я о таком впервые слышу, недавно начал с ардуино работать.
с этим delay (a * 50); ничего нормально работать не будет
В совместном варианте работает только серва, а моторы не подают признаков, что можете посоветовать сделать, можете подправить?
Тут не подправить, тут парсер писать надо
А как и что это поясните пожалуста, а то я о таком впервые слышу, недавно начал с ардуино работать.
википедия слышала
Парсинг (Parsing) – это принятое в информатике определение синтаксического анализа. Для этого создается математическая модель сравнения лексем с формальной грамматикой, описанная одним из языков программирования. Например, PHP, Perl, Ruby, Python.
википедия слышала
Парсинг (Parsing) – это принятое в информатике определение синтаксического анализа. Для этого создается математическая модель сравнения лексем с формальной грамматикой, описанная одним из языков программирования. Например, PHP, Perl, Ruby, Python.
Хоороший человек! Вот послал новичка, так послал! :)))
википедия слышала
Парсинг (Parsing) – это принятое в информатике определение синтаксического анализа. Для этого создается математическая модель сравнения лексем с формальной грамматикой, описанная одним из языков программирования. Например, PHP, Perl, Ruby, Python.
Хоороший человек! Вот послал новичка, так послал! :)))
ТС имеет желание соединить несоединяемое, в первом скетче передаются два параметра, во втором команды, в поиске разбор строки из Serial ему в помощь, Евгений Петрович помню уже просвещал )))
А в ищу исполнителя ему и на чистом С сделают
Если я буду делать, то только в "очень грязном С". Новичок не разберется даже в рабочей программе. :)
А в ищу исполнителя ему и на чистом С сделают
Да там на каком угодно, хоть на брейнфаке :)
AlexT0nE, скетчи для Ардуино, грубо говоря, можно разделить на 2 группы:
1. Те, что допускают совмещение с другими.
2. Те, что такого совмещения не допускают.
Для того, чтобы скетчи можно было совместить, они оба должны относиться к 1-му типу.
Ваши же оба скетча относятся ко 2-му.
Т.е. для того, чтобы их совместить, сперва оба нужно переписать, чтобы привести к типу 1.
В общем, проще писать с нуля.
hint: скетчи 1-го типа на содержат delay().
AlexT0nE, скетчи для Ардуино, грубо говоря, можно разделить на 2 группы:
1. Те, что допускают совмещение с другими.
2. Те, что такого совмещения не допускают.
Для того, чтобы скетчи можно было совместить, они оба должны относиться к 1-му типу.
Ваши же оба скетча относятся ко 2-му.
Т.е. для того, чтобы их совместить, сперва оба нужно переписать, чтобы привести к типу 1.
В общем, проще писать с нуля.
hint: скетчи 1-го типа на содержат delay().
Мда, плохо. Я и эти то не писал, а в интернете нашел, немного подправил и оно роботало. Мне это для проекта нужно, а времени осталось около 2-х недель
AlexT0nE, скетчи для Ардуино, грубо говоря, можно разделить на 2 группы:
1. Те, что допускают совмещение с другими.
2. Те, что такого совмещения не допускают.
Для того, чтобы скетчи можно было совместить, они оба должны относиться к 1-му типу.
Ваши же оба скетча относятся ко 2-му.
Т.е. для того, чтобы их совместить, сперва оба нужно переписать, чтобы привести к типу 1.
В общем, проще писать с нуля.
hint: скетчи 1-го типа на содержат delay().
Мда, плохо. Я и эти то не писал, а в интернете нашел, немного подправил и оно роботало. Мне это для проекта нужно, а времени осталось около 2-х недель
за две недели в разделе ищу исполнителя точно напишут