roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 06:39

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Ардуино не принимает данные из Com
СообщениеДобавлено: 17 окт 2012, 23:32 
Не в сети

Зарегистрирован: 18 фев 2011, 16:35
Сообщения: 56
Привет. У меня Freeduino Nano v5, вот она же.
Когда заливаю примеры скетчей из состава Arduino IDE, например "Dimmer", и пытаюсь отправлять в порт на ардуино значения, от 0 до 255, ничего не происходит, светодиод загорается, повешенный на пин, но не выключается, и яркость не меняет. Диоды RX TX еле еле вспыхивают. А когда заливаю скетч, моргают ярко. Пробовал посылать команды на Rx Tx ардуины, но с этим скетчем также не реагирует. Что может быть? Скетчи заливаются нормально, хотя в начале не заливались, но после того как пропаял резисторы на плате, стало заливаться.
Скорости портов согласованны. Варианты плат в настройках пробовал разные.

Добавлено спустя 5 минут 41 секунду:
P.S. Serial.print - работает, данные выводит


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ардуино не принимает данные из Com
СообщениеДобавлено: 17 окт 2012, 23:33 
Не в сети
Аватара пользователя

Зарегистрирован: 09 май 2011, 16:43
Сообщения: 536
Откуда: Украина, Киев
прог. языки: Нецензурный
ФИО: Евгений НеОН
А можно код заливаемого скетча сюда запостить?

_________________
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили “Титаник“
2:5020/2140.1979@fidonet


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ардуино не принимает данные из Com
СообщениеДобавлено: 17 окт 2012, 23:52 
Не в сети

Зарегистрирован: 18 фев 2011, 16:35
Сообщения: 56
NeON79 писал(а):
А можно код заливаемого скетча сюда запостить?

Код:
const int ledPin = 9;
void setup()
{
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  byte brightness;
  if (Serial.available()) {
    // read the most recent byte (which will be from 0 to 255):
    brightness = Serial.read();
    // set the brightness of the LED:
    analogWrite(ledPin, brightness);
    Serial.println("test");
  }
}

Я добавил только строку "Serial.println("test");" Всё остальное - пример в програме, вроде как у всех работает.
Ещё, почему, если отсылаю "1", то "test" выводится один раз, если 111, то три, и так далее..?

Добавлено спустя 2 минуты 27 секунд:
А если отправляю единицу с роутера (на Rx Tx ардуино) то выводится три раза, если две единицы, то шесть, короче троекратно почему то.

Добавлено спустя 4 минуты 16 секунд:
Нет, ошибся. Если отправляю "1", то выводится три раза, если "11", то 4, если "111" то пять... Почему то с первого символа по три раза.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ардуино не принимает данные из Com
СообщениеДобавлено: 18 окт 2012, 00:25 
Не в сети
Аватара пользователя

Зарегистрирован: 09 май 2011, 16:43
Сообщения: 536
Откуда: Украина, Киев
прог. языки: Нецензурный
ФИО: Евгений НеОН
Скорости и режимы портов одинаковы? Без добавления строки - работает, как должно?

_________________
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили “Титаник“
2:5020/2140.1979@fidonet


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ардуино не принимает данные из Com
СообщениеДобавлено: 18 окт 2012, 11:53 
Не в сети

Зарегистрирован: 13 мар 2012, 12:40
Сообщения: 59
Откуда: Дзержинск
прог. языки: Delphi
Sirocco писал(а):
А если отправляю единицу с роутера (на Rx Tx ардуино) то выводится три раза, если две единицы, то шесть, короче троекратно почему то.

Нет, ошибся. Если отправляю "1", то выводится три раза, если "11", то 4, если "111" то пять... Почему то с первого символа по три раза.

Скорее всего там в конце добавляется <CR><LF> - перенос каретки.
Замените "Serial.println("test");" на "Serial.println(brightness);" - так видно будет что получает ардуина.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ардуино не принимает данные из Com
СообщениеДобавлено: 18 окт 2012, 21:05 
Не в сети
Аватара пользователя

Зарегистрирован: 21 май 2007, 22:57
Сообщения: 600
Откуда: Калининград
прог. языки: C++
а может вместо строчки "test" выводить brightness? ;)

_________________
RoboCraft.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ардуино не принимает данные из Com
СообщениеДобавлено: 18 окт 2012, 21:54 
Не в сети

Зарегистрирован: 18 фев 2011, 16:35
Сообщения: 56
Aquarius писал(а):
Скорее всего там в конце добавляется <CR><LF> - перенос каретки.

Не. Там есть варианты: "Без окончания строки", "Новая строка(NL)", "Возврат каретки (CR)","NL и CR вместе"
У меня стоит вариант "Без окончания строки"
Aquarius писал(а):
Замените "Serial.println("test");" на "Serial.println(brightness);" - так видно будет что получает ардуина.

Точно! Как же не догадался!
Странно:
Отправляю Получаю
0_______________48
000_____________484848
1_______________49
a_______________97
A_______________65
Чё эт так? Как избежать? Где подправить?

Добавлено спустя 8 минут 8 секунд:
Если отправляю через роутер, то в ответ приходит тоже самое, но всегда добавляются 10 13. Что это? Откуда может взяться? Зачем оно? Как убрать? Если пустой запрос отправить, приходит просто 1013.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ардуино не принимает данные из Com
СообщениеДобавлено: 18 окт 2012, 21:55 
Не в сети
Аватара пользователя

Зарегистрирован: 21 май 2007, 22:57
Сообщения: 600
Откуда: Калининград
прог. языки: C++
вы отправляете символ и соответственно получаете его код 8)

_________________
RoboCraft.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ардуино не принимает данные из Com
СообщениеДобавлено: 18 окт 2012, 21:58 
Не в сети

Зарегистрирован: 18 фев 2011, 16:35
Сообщения: 56
noonv писал(а):
вы отправляете символ и соответственно получаете его код 8)

STOP! Почему я должен получать его код? А ща не обламался, разобрал свой старый проект собранный на меге, там это простейший код работает, и возвращает то, что отправляю не переводя в код. Что не так?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ардуино не принимает данные из Com
СообщениеДобавлено: 18 окт 2012, 22:03 
Не в сети
Аватара пользователя

Зарегистрирован: 21 май 2007, 22:57
Сообщения: 600
Откуда: Калининград
прог. языки: C++
char var = '1';
и
char var = 1;
- это две разные вещи :roll:
а 1013 - это \r\n :D
вы как данные отправляете? скрипт бы хоть показали :)

_________________
RoboCraft.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ардуино не принимает данные из Com
СообщениеДобавлено: 18 окт 2012, 23:47 
Не в сети

Зарегистрирован: 18 фев 2011, 16:35
Сообщения: 56
noonv писал(а):
char var = '1';
и
char var = 1;
- это две разные вещи :roll:

Мне это ни о чём не говорит. Я в своём коде этого не вижу.
noonv писал(а):
а 1013 - это \r\n :D
вы как данные отправляете? скрипт бы хоть показали :)

Если через комп, то через вот это окошко, без каких-либо скриптов:

Добавлено спустя 1 минуту 51 секунду:
А с роутера когда отправляю...Бог его знает, где там какие скрипты, делаю всё по этому проекту http://habrahabr.ru/post/153017/, но не выходит...

Добавлено спустя 1 час 28 минут 56 секунд:
Продолжаю эксперименты... Если использовать версию 0018 программы Arduino, и ниже, то после прошивки из неё с символами всё ок, даже если потом следить за портом из новой версии. Но скетч всё равно не работает (((


Вложения:
df.png
df.png [ 67.06 КиБ | Просмотров: 3531 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ардуино не принимает данные из Com
СообщениеДобавлено: 19 окт 2012, 00:33 
Не в сети
Аватара пользователя

Зарегистрирован: 05 фев 2008, 15:33
Сообщения: 2687
Откуда: St. Petersburg - Moscow
Skype: SkyStorm77
ФИО: Костюк Константин Вячеславович
Гы - Гы
Символ 1 не равен цифре 1 :)
Если это ничего не говорит, то может стоит остановится и подумать

_________________
Никто кроме нас!!!
4Robots.ru - Все для роботов!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ардуино не принимает данные из Com
СообщениеДобавлено: 19 окт 2012, 00:37 
Не в сети

Зарегистрирован: 18 фев 2011, 16:35
Сообщения: 56
Останавливаться не стоит в любом случае.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ардуино не принимает данные из Com
СообщениеДобавлено: 19 окт 2012, 08:23 
Не в сети
Аватара пользователя

Зарегистрирован: 21 май 2007, 22:57
Сообщения: 600
Откуда: Калининград
прог. языки: C++
Sirocco писал(а):
Бог его знает, где там какие скрипты, делаю всё по этому проекту http://habrahabr.ru/post/153017/, но не выходит...

там же написано:
Цитата:
Я не стал заморачиваться и назначил для управления всем нам известные кнопки “A”,”S”,”D”,”W”, то есть если например МК получает байт «W» (0x57) он установит единицу на ноге к которой припаян провод отвечающий за движение вперед и т.д.
...
скрипты обрабатывающие нажатие кнопок в вебинтерфейсе теперь посылают “A”,”S”,”D”,”W” в зависимости от нажатой кнопки. А сам скрипт который занимается отправкой перенаправлен на внутренний UART роутера.

скрипт посылает в порт символ, а значит и ловить нужно символ.
автор даже это явно указал -
Цитата:
«W» (0x57)


Sirocco писал(а):
Мне это ни о чём не говорит. Я в своём коде этого не вижу.

:good:

_________________
RoboCraft.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ардуино не принимает данные из Com
СообщениеДобавлено: 20 окт 2012, 13:08 
Не в сети

Зарегистрирован: 18 фев 2011, 16:35
Сообщения: 56
:-o
И так, с начала: в первом сообщении я пишу о проблеме (собственно это первостепенное, что меня интересует). Подробно написал, что отправляю одно, а приходит другое, яркость не меняется. Код выложил. Чуть позже я пробую тоже самое, но из более раннего компилятора, и что мы видим? О боже! приходит то, что отправляю!, но яркость не меняется! Мой вопрос - ПОЧЕМУ? Да, вы можете приводить примеры, что char var = '1'; и char var = 1; это совершенно разные вещи... Но почему с другой железкой этот код работает, а с этой нет, никто не объяснил до сих пор. То есть делаю вывод, что для Atmega328 это разные вещи, а для Atmega1280 одно и тоже, так как она работает с этим кодом. Ну а чо, вразумительно никто другого не объяснил.
А теперь к проблеме №2:
noonv писал(а):
Sirocco писал(а):
Бог его знает, где там какие скрипты, делаю всё по этому проекту http://habrahabr.ru/post/153017/, но не выходит...

там же написано:
Цитата:
Я не стал заморачиваться и назначил для управления всем нам известные кнопки “A”,”S”,”D”,”W”, то есть если например МК получает байт «W» (0x57) он установит единицу на ноге к которой припаян провод отвечающий за движение вперед и т.д.
...
скрипты обрабатывающие нажатие кнопок в вебинтерфейсе теперь посылают “A”,”S”,”D”,”W” в зависимости от нажатой кнопки. А сам скрипт который занимается отправкой перенаправлен на внутренний UART роутера.

скрипт посылает в порт символ, а значит и ловить нужно символ.
автор даже это явно указал -
Цитата:
«W» (0x57)


Sirocco писал(а):
Мне это ни о чём не говорит. Я в своём коде этого не вижу.

:good:

Да, я пытаюсь ТУПО скопировать проект, как там описано, и гарантированно, что всё работает. И отправляется там символ, и скетч там совершенно другой, не имеющий отношения к первому, и ловит этот скетч тоже символ.
Код:

int led = 13;
boolean laight = 0;
int incomingByte = 0;
int action = 0;

void setup() {
  Serial.begin(57600);
 
  pinMode(13, OUTPUT);
  pinMode(4, OUTPUT); //light
  pinMode(5, OUTPUT); // шим 1
  pinMode(6, OUTPUT); // шим 2
  pinMode(7, OUTPUT); // 11
  pinMode(8, OUTPUT); // 12
  pinMode(11, OUTPUT); // 21
  pinMode(12, OUTPUT); // 22
}

void loop() {
 
  //Serial.print("1");
 
  if (Serial.available() > 0) {  //если есть доступные данные// считываем байт
        incomingByte = Serial.read();
        // отсылаем то, что получили
        digitalWrite(13, HIGH);
       
        if(incomingByte == 97) // A
          action = 7;
        if(incomingByte == 100) // D
          action = 8;
        if(incomingByte == 115) // S
          action = 11;
        if(incomingByte == 119) // W
          action = 12;
        if(incomingByte == 108) // L
          laight=!laight; 
                                 
        digitalWrite(4, laight);
                   
        //analogWrite(8, 255);
        //analogWrite(9, 255);
               
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
               
        digitalWrite(action, HIGH);
        delay(250);
        digitalWrite(action, LOW);
       
        action = 0;
       
        digitalWrite(5, LOW);
        digitalWrite(6, LOW);
       
        digitalWrite(13, LOW);
                         
        Serial.print("250: ");
        Serial.println(incomingByte, DEC);
    }
               
}

А если точнее, то должен ловить, но ему чисто пофиг, я любой символ отправляю, и все описанные порты на какое то время выдают единицу на выходе, а не тот, который должен исходя из кода. И передача длиться до пяти секунд. Откуда-то берётся куча мусора, которая пробегает через RxTx.
Кстати, скрипт отправки символа тоже есть, не я его писал. И вобще, мне бы с первой проблемой разобраться, а уж на основе скетча "Dimmer" я бы сам написал тот скетч, который мне нужен.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO