Странности Serial.

Lui22
Offline
Зарегистрирован: 07.03.2016

Чем больше пытаюсь писать на Ардуино, тем больше понимаю, что ничего не понимаю… Вот код. Хочу, чтобы при получении 50 в Serial порт, то число, которое отсылается из него, увеличивалось. А при получении 10 - соответственно увеличивалось на 10. Но при получении 10 или 50 ничего не происходит, происходит увеличение только при частом отсылании чего либо(даже пустоты).

int lool = 0;
void setup() {
Serial.begin (9600);

}

void loop() {
Serial.println(lool);
if (Serial.read() == 10) {
lool = lool+10;
}
if (Serial.read() == 50) {
lool = lool+50;
}

}

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

боже мой, когда же это закончится.

как вы посылаете 10 и 50 в сериал ? лучше сразу картинку сделать.

и сразу сюда сходите, чтобы понять как правильно читать из Serial

https://www.arduino.cc/en/Serial/Read

Mr.Privet
Mr.Privet аватар
Offline
Зарегистрирован: 17.11.2015

Почитайте хотя бы http://arduino.ru/Reference/Serial
Подсказка:нужно через avaliable

Lui22
Offline
Зарегистрирован: 07.03.2016

Через available вообще ничего не понял

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Lui22 пишет:
Зарегистрирован: 07.03.2016
Может, пора бы уже и прочитать правила?

Lui22
Offline
Зарегистрирован: 07.03.2016

О, с телефона это невозможно. Извините.

Клапауций 823
Клапауций 823 аватар
Offline
Зарегистрирован: 13.01.2017

Lui22 пишет:
О, с телефона это невозможно. Извините.

чукча-телефона не читатель...

Mr.Privet
Mr.Privet аватар
Offline
Зарегистрирован: 17.11.2015

Lui22 пишет:
О, с телефона это невозможно. Извините.

Возможно, в настройках браузера включите галочку "полная версия сайта" и кнопочки волшебным образом появятся

Вот я с телефона написал

 

Клапауций 823
Клапауций 823 аватар
Offline
Зарегистрирован: 13.01.2017

Mr.Privet пишет:

Lui22 пишет:
О, с телефона это невозможно. Извините.

Возможно, в настройках браузера включите галочку "полная версия сайта" и кнопочки волшебным образом появятся

Вот я с телефона написал

читер!

Lui22
Offline
Зарегистрирован: 07.03.2016
int lool = 0;
void setup() {
  Serial.begin (9600);
  
}

void loop() {
  Serial.println(lool);
 if (Serial.read() == 10) {
 lool = lool+10;
 }
 if (Serial.read() == 50) {
 lool = lool+50;
 }

}

Все довольны?

Mr.Privet
Mr.Privet аватар
Offline
Зарегистрирован: 17.11.2015

А теперь пишем в сириал 2 и получаем +50, магия!

Клапауций 823
Клапауций 823 аватар
Offline
Зарегистрирован: 13.01.2017

Lui22 пишет:

Все довольны?

если честно, всем пофуй на твои личные проблемы.

------------------------------

Dec Hex Char
10 A LF
50 32 2

http://book.itep.ru/10/ascii.htm

Lui22
Offline
Зарегистрирован: 07.03.2016

И снова здравствуйте. Ардуино nano, на ATmega328, IDE 1.6.5. Проблема в том, что в монитор порта при работе с числами, больше 9999 начинают ввести себя странно. А так же после каждого числа в консоль выводится "0".

void setup() {
  Serial.begin(9600);

}

void loop() {
  if (Serial.available() > 0) {
    int in_data = Serial.parseInt();
    Serial.println(in_data);
  }

}

https://pp.vk.me/c837434/v837434113/1de87/j4TwX0mhLyg.jpg (скрин)

Mr.Privet
Mr.Privet аватар
Offline
Зарегистрирован: 17.11.2015

Не успевают данные все передаться в порт. Самый простой вариант между строк 7 и 8 влепить delay(100); но вариант не самый верный, но для этого случая сойдет
Это я про больше 9999, про нули хз, тестить нада.
Попробуйте после того как вывели нужный int либо очистить буфер serial, либо считать в локал и забыть про нее, что то подсказывает что это символ конца строки

Lui22
Offline
Зарегистрирован: 07.03.2016

Я код взял с канала "Заметки Ардуинщика", у него там все ок. Странно.

Mr.Privet
Mr.Privet аватар
Offline
Зарегистрирован: 17.11.2015

Ну он просто большие числа не вводил наверное

Lui22
Offline
Зарегистрирован: 07.03.2016

Нулей то у него тоже нет. А версию IDE не видно

Клапауций 823
Клапауций 823 аватар
Offline
Зарегистрирован: 13.01.2017

Mr.Privet пишет:
Ну он просто большие числа не вводил наверное

какие числа, если он полученное с символами сравнивает?

Mr.Privet
Mr.Privet аватар
Offline
Зарегистрирован: 17.11.2015

Не в 12 посту он уже инты из сириала парсит
Для тс вот почитайте http://arduino.ru/forum/programmirovanie/vyvod-vvodimoi-stroki-na-ekran-...

Lui22
Offline
Зарегистрирован: 07.03.2016

C delay(100); все равно цифры неверные

void setup() {
  Serial.begin(9600);

}

void loop() {
  if (Serial.available() > 0) {
    delay (100);
    int in_data = Serial.parseInt();
    Serial.println(in_data);
  }

}

 

Lui22
Offline
Зарегистрирован: 07.03.2016

Проблему снулями решил - установил последнюю версию ide. а с числами - нет. Но по сути то оно мне и не нужно..

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Lui22 пишет:

Проблему снулями решил - установил последнюю версию ide. а с числами - нет. Но по сути то оно мне и не нужно..

Ни фига Вы не решили. Она случайно решилась потому, что по умолчанию там переводов строк нет.

Хотя ... решите уже как-нибудь, развели тут детский сад - штаны на лямках.