![]() |
|
|
#71 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
При правильных настройках stty можно обойтись без конденсатора
|
|
|
|
|
|
#72 |
|
Senior Member
Регистрация: 24.04.2014
Сообщений: 120
Вес репутации: 0 ![]() |
да? классно)
только у меня все равно не работает(( через раз почему-то(( иногда ввожу в терминале на роутере cat /dev/ttyACM0 или cat /dev/ttyUSB0 (в терминале выводится tx-com=x) и прокатывает то, что мой 53 светодиод загорается при нажатии клавиш, т.е. Serial.available() срабатывает (но опять же повторюсь, не всегда((( ), вот скетч: Код:
#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 = 53; //встроенный светодиод (Будет мигать как только Ардуино получит данные с роутера)
int incomingByte = 0; //в этой переменной храним поступившие данные
void setup()
{
Serial.begin(9600); //включаем передачу данных на скорости 9600 бит/c
pinMode(led, OUTPUT); //указываем выход на пин 53 (Светодиод, индикатор данных)
motor1.setSpeed(255); //Скорость движка №1
motor2.setSpeed(255); //Скорость движка №2
motor3.setSpeed(255); //Скорость движка №1
motor4.setSpeed(255); //Скорость движка №2
}
void loop()
{
incomingByte = 0;
if(Serial.available() > 0) //Если есть доступные данные, то считываем их
{
incomingByte = Serial.read(); //Присваиваем переменной incomingByte наши считанные данные
digitalWrite(led, HIGH); //Зажигаем встроенный светодиод, так как пошло считывание данных
//--- Делаем соответствующее действие ---
if(incomingByte == 119) //Нажали кнопку W
{
motor1.run(FORWARD); //движемся вперед
motor2.run(FORWARD); //движемся вперед
motor3.run(FORWARD); //движемся вперед
motor4.run(FORWARD); //движемся вперед
delay(250); //Включаем на 250 милисек
Serial.println("Vpered"); //Печатает данные в порт
}
if(incomingByte == 115) //Нажали кнопку S
{
motor1.run(BACKWARD); //движемся назад
motor2.run(BACKWARD); //движемся назад
motor3.run(BACKWARD); //движемся назад
motor4.run(BACKWARD); //движемся назад
delay(250); //Включаем на 250 милисек
Serial.println("Nazad"); //Печатает данные в порт
}
if(incomingByte == 97) //Нажали кнопку A
{
motor2.run(FORWARD); //Повернем влево
motor3.run(FORWARD); //Повернем влево
motor1.run(RELEASE); //Останавливаем колеса
motor4.run(RELEASE); //Останавливаем колеса
Serial.println("Vlevo"); //Печатает данные в порт
}
if(incomingByte == 100) //Нажали кнопку D
{
motor1.run(FORWARD); //Повернем вправо
motor4.run(FORWARD); //Повернем вправо
motor2.run(RELEASE); //Останавливаем колеса
motor3.run(RELEASE); //Останавливаем колеса
Serial.println("Vpravo"); //Печатает данные в порт
}
digitalWrite(led, LOW); //Тушим светодиод, так как чтение данных закончилось
//--- Мониторим присланные данные ---
Serial.print("Dannie: ");
Serial.println(incomingByte, DEC); //Пишем данные которые приняли в порт
}
}
|
|
|
|
|
|
#73 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
|
|
|
|
|
#74 | |
|
Senior Member
Регистрация: 24.04.2014
Сообщений: 120
Вес репутации: 0 ![]() |
Цитата:
не едет, светодиоды моргают |
|
|
|
|
|
|
#75 | |
|
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
В линуксе любое подключённое устройство (usb, com, lpt, веб-камера, принтер и чёрт в ступе) представляется как файл, работа с ним ведётся как с текстовым файлом (пишешь в него и читаешь из него).
Цитата:
Если ты подключаешь мегу, то она должна определятся как ttyACM0. Откуда у тебя берётся ttyUSB0 ? |
|
|
|
|
|
|
#76 |
|
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Начнем с простого.
Залей это в мегу. PHP код:
Пишешь a (английское). Должен загореться D13 и написать VKL led 13. Пишешь b (английское). Должен погаснуть D13 и написать OTKL led 13. ![]() Поделай несколько раз, если всё стабильно, тогда переходим к роутеру. ///////////////////////////////////////////////////////////////////////////////// В терминале на роутере пишешь echo 'a' > /dev/ttyACM0 Должен загореться D13. В терминале на роутере пишешь echo 'b' > /dev/ttyACM0 Должен погаснуть D13. Последний раз редактировалось stD; 03.08.2014 в 00:08. |
|
|
|
|
|
#77 | |
|
Senior Member
Регистрация: 24.04.2014
Сообщений: 120
Вес репутации: 0 ![]() |
Цитата:
если отослать просто 'w', то все норм) но модуль робот отсылает 'tx-com=w' Как мне исправить чтобы отсылалось только 'w'? |
|
|
|
|
|
|
#78 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Отсечь все лишнее
|
|
|
|
|
|
#79 |
|
Senior Member
Регистрация: 24.04.2014
Сообщений: 120
Вес репутации: 0 ![]() |
|
|
|
|
|
|
#80 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Нужно искатоь отправку Post или Get
|
|
|
|
![]() |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|