![]() |
|
|
|
|
#1 |
|
Junior Member
Регистрация: 13.07.2015
Сообщений: 6
Вес репутации: 0 ![]() |
Заработало!!! Огромное спасибо!
|
|
|
|
|
|
#2 |
|
Junior Member
Регистрация: 13.07.2015
Сообщений: 6
Вес репутации: 0 ![]() |
Опять проблема - "туда" работает, а обратно - тишина.
В ардуине оставил только uint8_t buf_answer[]="{\"dat1\":\"0010\",\"dat2\":\"0020\"}" ; остальное закомментировал. Тем не менее в строках Датчик 1 и Датчик 2 стоят по единичке и меняться не собираются. Чего-то в моей системе опять не хватает для полного счастья? |
|
|
|
|
|
#3 |
|
Senior Member
Регистрация: 20.09.2014
Сообщений: 145
Вес репутации: 0 ![]() |
Ардуина должна выдавать в УАРТ строку:
{"dat1":"1234","dat2":"1234"} и только после этого в веб морде появится значение 1234. |
|
|
|
|
|
#4 |
|
Junior Member
Регистрация: 13.07.2015
Сообщений: 6
Вес репутации: 0 ![]() |
Примерно так и есть - но со странностями - на ардуину уходит команда cm=], оттуда - пачка в формате, как Вы описали, но дальше странность - на ардуину идет копия этой пачки, примерно так:
роутер - cm=] ардуина - {"dat1":"0010","dat2":"0020"} роутер (через 0.75ms после прихода пачки из ардуины) - {"dat1":"0010","dat2":"0020"} А на морде ничего нет. Подозреваю, что или что-то с настройкой порта намудрил, либо опять какого-то пакета не хватает (роутер A5-V11) |
|
|
|
|
|
#5 |
|
Senior Member
Регистрация: 20.09.2014
Сообщений: 145
Вес репутации: 0 ![]() |
Роутер Mr3020, шлю в уарт вышеуказанную строку, не с первого раза, можт с 4-5 раза отсылки вышеуказанной строки, на веб морде появляются отсылаемые значения. Назад роутер не шлет ту же самую строку.
|
|
|
|
|
|
#6 |
|
Junior Member
Регистрация: 13.07.2015
Сообщений: 6
Вес репутации: 0 ![]() |
Полностью сказанное волшебное слово
stty -F /dev/ttyUSB0 cs8 57600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts -hupcl выключило эхо (я использовал установку только скорости, не ожидал такой гадости, как эхо), но на морде лица как ничего не было, так и нет ![]() добавлено Случилось чудо! Данные появились после очередной перезагрузки. Последний раз редактировалось don_Baton; 16.07.2015 в 18:12. |
|
|
|
|
|
#7 |
|
Senior Member
Регистрация: 07.01.2015
Адрес: Baku
Сообщений: 225
Вес репутации: 0 ![]() |
что то и у меня не хочет работать на мини, в чем может быть проблема? в настройках есть порты ttyUSB0 ttyATH0 , что нибудь из них следует выбирать, если мини подключен к рх и тх на роутере? Сaбербот2 работает, а сайбербот 3 молчит в тряпочку...
|
|
|
|
|
|
#8 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Нужно в настройках CyberBot-3 выбрать порт и сохранить настройки, установить драйвер UART порта и настроить в драйвере скорость 57600
Ардуину мини нужно подключать к UART и выбирать порт ttyATH0 Скетч от CyberBot-2 не подойдет |
|
|
|
|
|
#9 | |
|
Senior Member
Регистрация: 07.01.2015
Адрес: Baku
Сообщений: 225
Вес репутации: 0 ![]() |
Цитата:
Код:
#include // Подключаем библиотеку сервоприводов
// // Подключаем H-Bridge HG7881
#define HG7881_A_IA 10 // D10 --> Motor A Input A --> MOTOR A +
#define HG7881_A_IB 9 // D9 --> Motor A Input B --> MOTOR A -
#define HG7881_B_IA 11 // D11 --> Motor B Input A --> MOTOR B +
#define HG7881_B_IB 12 // D12 --> Motor B Input B --> MOTOR B -
// functional connections
#define MOTOR_A_PWM HG7881_A_IA // Motor A PWM Speed
#define MOTOR_A_DIR HG7881_A_IB // Motor A Direction
#define MOTOR_B_PWM HG7881_B_IA // Motor B PWM Speed
#define MOTOR_B_DIR HG7881_B_IB // Motor B Direction
#define DIR_DELAY 100 // brief delay for abrupt motor changes
#define tiltServopin 7 //tilt servo attached to pin 7
#define panServopin 8 //pan servo attached to pin 8
#define serialReceive 13 //Serial Receive Message indicator LED
#define moveLed 4 //LED indicating tank movement
#define light 6 //
#define moveDelay 1000
#define moveDelayturn 100
Servo tiltServo;
Servo panServo;
int val1 = 90;
const int servoAngle = 20;
const int minAngle = 0;
const int maxAngle = 180;
int lightState=0;
void setup()
{
Serial.begin( 57600 );
pinMode(serialReceive,OUTPUT);
pinMode(moveLed,OUTPUT);
pinMode( MOTOR_A_DIR, OUTPUT );
pinMode( MOTOR_A_PWM, OUTPUT );
digitalWrite( MOTOR_A_DIR, LOW );
digitalWrite( MOTOR_A_PWM, LOW );
pinMode( MOTOR_B_DIR, OUTPUT );
pinMode( MOTOR_B_PWM, OUTPUT );
digitalWrite( MOTOR_B_DIR, LOW );
digitalWrite( MOTOR_B_PWM, LOW );
// delay(40000); //wait for router to initialise
}
void loop()
{
if (Serial.available()) //Еесли что то пришло
{
digitalWrite(serialReceive,HIGH);
byte inByte = Serial.read();
switch (inByte) // Смотрим какая команда пришла
{
case 'x': // Остоновка робота
robot_stop();
break;
case 'W': // Движение вперед
robot_go();
break;
case 'D': // Поворот вправо
robot_right();
break;
case 'A': // Повопорт влево
robot_left();
break;
case 'S': // Движение назад
robot_back();
break;
case 'J': // Серво поднимается
if(val1<maxAngle){
tiltServo.attach(tiltServopin); // attaches the servo on pin 2
for(int i=0;i<servoAngle;i++){ tiltServo.write(val1+i); // sets the servo position according to the scaled value delay(servoAngle); } val1=val1+servoAngle; tiltServo.detach(); // detaches the servo on pin 2 } break; case 'U': // Серво опускается if(val1>minAngle){
tiltServo.attach(tiltServopin); // attaches the servo on pin 2
for(int i=0;i<servoAngle;i++){
tiltServo.write(val1-i); // sets the servo position according to the scaled value
delay(servoAngle);
}
val1=val1-servoAngle;
tiltServo.detach(); // detaches the servo on pin 2
}
break;
case 'K': // Серво поворачивается влево
panServo.attach(panServopin); // attaches the servo on pin 2
panServo.write(180); // sets the servo position according to the scaled value
delay(200);
panServo.detach(); // detaches the servo on pin 2
break;
case 'H': // Серво поворачивается вправо
panServo.attach(panServopin); // attaches the servo on pin 2
panServo.write(0); // sets the servo position according to the scaled value
delay(200);
panServo.detach(); // detaches the servo on pin 2
break;
case 'B': // Бластер
break;
case 'C': // Клаксон
break;
case 'V': // Включить/Выключить фары
if (lightState==0){
digitalWrite(light,HIGH);
lightState=1;
}else{
digitalWrite(light,LOW);
lightState=0;
}
break;
}
digitalWrite(serialReceive,LOW);
}
}
void robot_stop()
{
digitalWrite( MOTOR_A_DIR, LOW );
digitalWrite( MOTOR_A_PWM, LOW );
digitalWrite( MOTOR_B_DIR, LOW );
digitalWrite( MOTOR_B_PWM, LOW );
delay( DIR_DELAY );
}
void robot_go(){
/*
digitalWrite( MOTOR_A_DIR, LOW );
digitalWrite( MOTOR_A_PWM, LOW );
digitalWrite( MOTOR_B_DIR, LOW );
digitalWrite( MOTOR_B_PWM, LOW );
delay( DIR_DELAY );
*/
digitalWrite( MOTOR_A_DIR, LOW ); // direction = forward
digitalWrite( MOTOR_A_PWM, HIGH );
digitalWrite( MOTOR_B_DIR, LOW ); // direction = forward
digitalWrite( MOTOR_B_PWM, HIGH ); // PWM speed = slow
delay(moveDelay);
}
void robot_back(){
/*
digitalWrite( MOTOR_A_DIR, LOW );
digitalWrite( MOTOR_A_PWM, LOW );
digitalWrite( MOTOR_B_DIR, LOW );
digitalWrite( MOTOR_B_PWM, LOW );
delay( DIR_DELAY );
*/
// set the motor speed and direction
digitalWrite( MOTOR_A_DIR, HIGH ); // direction = forward
digitalWrite( MOTOR_A_PWM, LOW );
digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward
digitalWrite( MOTOR_B_PWM, LOW ); // PWM speed = slow
delay(moveDelay);
}
void robot_left(){
/*
digitalWrite( MOTOR_A_DIR, LOW );
digitalWrite( MOTOR_A_PWM, LOW );
digitalWrite( MOTOR_B_DIR, LOW );
digitalWrite( MOTOR_B_PWM, LOW );
delay( DIR_DELAY );
*/
// set the motor speed and direction
digitalWrite( MOTOR_A_DIR, HIGH ); // direction = forward
digitalWrite( MOTOR_A_PWM, LOW );
digitalWrite( MOTOR_B_DIR, LOW ); // direction = forward
digitalWrite( MOTOR_B_PWM, HIGH ); // PWM speed = fast
delay(moveDelayturn);
}
void robot_right(){
/*
digitalWrite( MOTOR_A_DIR, LOW );
digitalWrite( MOTOR_A_PWM, LOW );
digitalWrite( MOTOR_B_DIR, LOW );
digitalWrite( MOTOR_B_PWM, LOW );
delay( DIR_DELAY );
*/
// set the motor speed and direction
digitalWrite( MOTOR_A_DIR, LOW ); // direction = forward
digitalWrite( MOTOR_A_PWM, HIGH );
digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward
digitalWrite( MOTOR_B_PWM, LOW ); // PWM speed = slow
delay(moveDelayturn);
}
|
|
|
|
|
|
|
#10 |
|
Senior Member
Регистрация: 07.01.2015
Адрес: Baku
Сообщений: 225
Вес репутации: 0 ![]() |
как видно из скетча, если что то пришло с UART, то на моем роботе моргнет светодиод на ноге 13, с модулем саибербот 2 моргает, даже если пришла какая то непонятная ...тeнь, а вот на саибербот3 не моргает, то есть ничего через UART не идет.
Что попробовать? установлена и вторая версия и третья сегодня, вторая работает, третья нет, если вторая работает значит все драивера и настройки в порядке, или я что то пропустил? (настройки указал так, как вы сказали ttyATH0) |
|
|
|
![]() |
| Здесь присутствуют: 6 (пользователей: 0 , гостей: 6) | |
|
|