Форум myROBOT.ru » Шаг за шагом » Программирование микроконтроллеров » Программирование Arduino Mega

Страниц (1): [1]
 

1. Макс Дерюгин - 19 Мая, 2014 - 16:53:50 - перейти к сообщению
Добрый день. Ребята помогите мне с кодом. Программа:



#include <AFMotor.h> // Подключаем библиотеку для работы с шилдом

// Подключаем моторы к клеммникам M1, M2, M3, M4
AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);
void setup(){
// Задаем максимальную скорость вращения моторов (аналог работы PWM)
motor1.setSpeed(255);
motor1.run(RELEASE);
motor2.setSpeed(255);
motor2.run(RELEASE);
motor3.setSpeed(255);
motor3.run(RELEASE);
motor4.setSpeed(255);
motor4.run(RELEASE);
}

void loop(){
digitalRead(31);

if (digitalRead(31) == HIGH)
{

motor1.run(FORWARD); // Задаем движение вперед
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);
motor1.setSpeed(100); // Задаем скорость движения
motor2.setSpeed(100);
motor3.setSpeed(100);
motor4.setSpeed(100);
delay(5000);

// Останавливаем двигатели
/* Очень не рекомендуем резко переключать направление вращения двигателей.
Лучше дать небольшой промежуток времени.*/

motor1.run(RELEASE);
motor2.run(RELEASE);
motor3.run(RELEASE);
motor4.run(RELEASE);
delay(1000);
motor1.run(BACKWARD); // Задаем движение назад
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(BACKWARD);
motor1.setSpeed(100); // Задаем скорость движения
motor2.setSpeed(100);
motor3.setSpeed(100);
motor4.setSpeed(100);
delay(4000);

motor1.run(RELEASE);
motor2.run(RELEASE);
motor3.run(RELEASE);
motor4.run(RELEASE);
delay(1000);
// на лево
motor1.run(FORWARD); // Задаем движение вперед
motor4.run(FORWARD);
motor1.setSpeed(100); // Задаем скорость движения
motor4.setSpeed(100);
delay(1000);

// Останавливаем двигатели
/* Очень не рекомендуем резко переключать направление вращения двигателей.
Лучше дать небольшой промежуток времени.*/

motor1.run(RELEASE);
motor2.run(RELEASE);
motor3.run(RELEASE);
motor4.run(RELEASE);
delay(5000);
}
else
{
motor1.run(FORWARD); // Задаем движение вперед
motor4.run(FORWARD);
motor1.setSpeed(100); // Задаем скорость движения
motor4.setSpeed(100);
delay(1000);

// Останавливаем двигатели
/* Очень не рекомендуем резко переключать направление вращения двигателей.
Лучше дать небольшой промежуток времени.*/

motor1.run(RELEASE);
motor2.run(RELEASE);
motor3.run(RELEASE);
motor4.run(RELEASE);
delay(5000);
}
}


как мне сделать так чтобы ардуино видела что если на пине з раза будет высокий логический уровень то полностью программа закончится тк как когда у меня логический уровень низкий она у меня крутиться в лево. А мне нужно сделать так чтобы когда будет 3 раза высокий логический уровень моторы остановились а не крутились в лево до бесконечности.
2. beam - 20 Мая, 2014 - 17:55:43 - перейти к сообщению
idi i udarisea golovoi ob zemliu)))
3. AlexNike - 04 Июля, 2014 - 12:48:08 - перейти к сообщению
Смотрите тут http://easymcu.ru/index/0-13
4. Петр Киселев - 04 Июля, 2014 - 20:52:53 - перейти к сообщению
Приветствую, Макс Дерюгин!
Наконец-то появился еще один коренной русак! Здорово, собрат!
Макс, советую управлять своим роботом бортами, запараллелив моторы по бортам. Намного упростится программный код.

"как мне сделать так чтобы ардуино видела что если на пине з раза будет высокий логический уровень то полностью программа закончится тк как когда у меня логический уровень низкий она у меня крутиться в лево. А мне нужно сделать так чтобы когда будет 3 раза высокий логический уровень моторы остановились а не крутились в лево до бесконечности."

Попробуй применить счетчик и при состоянии его 11 система бы отключалась. Можно еще поставить городушку из дополнительной логики.
(Добавление)
Хотелось бы увидеть твоего робота! Покажи!