![]() |
|
|
#1 |
|
Senior Member
Регистрация: 24.04.2014
Сообщений: 120
Вес репутации: 0 ![]() |
Всем привет!
Парни, я собираю машинку на колесах, использую Arduino Mega 2560, Motor Shield v1, TP-LINK MR3020, Веб камеру, кучу батареек, провода и, пусть и не совсем, прямые руки ![]() Опираюсь во всем на http://habrahabr.ru/post/153017/ Установил на роутер OpenWRT, вывел Uart, и подсоединил вот так: Uart - Mega RX - TX3 TX - RX3 залил скетч на дуину: #include <AFMotor.h> // Подключаем библиотеку для управления двигателями AF_DCMotor motor1(1); //создаем мотор №1 AF_DCMotor motor2(2); //создаем мотор №2 AF_DCMotor motor3(3); //создаем мотор №1 AF_DCMotor motor4(4); //создаем мотор №2 int led = 13; //встроенный светодиод (Будет мигать как только Ардуино получит данные с роутера) int incomingByte = 0; //в этой переменной храним поступившие данные int speedgo = 0; //переменная для хранения скорости движения Код:
void setup()
{
Serial3.begin(9600); //включаем передачу данных на скорости 9600 бит/c
pinMode(13, OUTPUT); //указываем выход на пин 13 (Светодиод, индикатор данных)
//pinMode(11, OUTPUT); //Выход для двигателя №1 (Скорость и направление)
//pinMode(3, OUTPUT); //Выход для двигателя №2 (Скорость и направление)
pinMode(15, INPUT); //RX
pinMode(14, OUTPUT);//TX
motor1.setSpeed(255); //Скорость движка №1
motor2.setSpeed(255); //Скорость движка №2
motor3.setSpeed(255); //Скорость движка №1
motor4.setSpeed(255); //Скорость движка №2
}
void loop()
{
if(Serial3.available() > 0) //Если есть доступные данные, то считываем их
{
incomingByte = 0;
incomingByte = Serial3.read(); //Присваиваем переменной incomingByte наши считанные данные
//--- Делаем соответствующее действие ---
if(incomingByte == 119) //Нажали кнопку W
{
digitalWrite(13, HIGH); //Зажигаем встроенный светодиод, так как пошло считывание данных
motor1.run(FORWARD); //движемся вперед
motor2.run(FORWARD); //движемся вперед
motor3.run(FORWARD); //движемся вперед
motor4.run(FORWARD); //движемся вперед
delay(250); //Включаем на 250 милисек
Serial3.println("Vpered"); //Печатает данные в порт
}
if(incomingByte == 115) //Нажали кнопку S
{
motor1.run(BACKWARD); //движемся назад
motor2.run(BACKWARD); //движемся назад
motor3.run(BACKWARD); //движемся назад
motor4.run(BACKWARD); //движемся назад
delay(250); //Включаем на 250 милисек
Serial3.println("Nazad"); //Печатает данные в порт
}
if(incomingByte == 97) //Нажали кнопку A
{
motor2.run(FORWARD); //Повернем влево
motor3.run(FORWARD); //Повернем влево
motor1.run(RELEASE); //Останавливаем колеса
motor4.run(RELEASE); //Останавливаем колеса
Serial3.println("Vlevo"); //Печатает данные в порт
}
if(incomingByte == 100) //Нажали кнопку D
{
motor1.run(FORWARD); //Повернем вправо
motor4.run(FORWARD); //Повернем вправо
motor2.run(RELEASE); //Останавливаем колеса
motor3.run(RELEASE); //Останавливаем колеса
Serial3.println("Vpravo"); //Печатает данные в порт
digitalWrite(13, LOW); //Тушим светодиод, так как чтение данных закончилось
}
//--- Мониторим присланные данные ---
Serial3.print("Dannie: ");
Serial3.println(incomingByte, DEC); //Пишем данные которые приняли в порт
}
}
https://docs.google.com/file/d/0B44F...JPR0x5S1E/edit https://docs.google.com/file/d/0B44F...Axb20wNVk/edit (брал с хабра) как я понял, суть кода в том, что просто отправляет по нажатию на клавиши w,a,s,d соответственно w,a,s,d)) а дуина принимает их и обрабатывает, но вот проблема у меня ничего не работает(( колеса крутятся когда хотят, и куда хотят( так что парни, прошу у вас помощи! |
|
|
|
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|