ARDUINO Вывод данных в com порт

Angel341

✩✩✩✩✩✩✩
10 Сен 2018
3
0
Добрый день!
Создаю скетч по уроку.
суть такая я ввожу данные в ком порт и он должен выдать мне в ответ то же число что я ввожу.
Проблема в том что он выдает то число но через пару секунд выдает 0.

C++:
void setup() {
  // put your setup code here, to run once:

Serial.begin(9600);
while (!Serial) {}

}

void loop() {
  // put your main code here, to run repeatedly:


  if (Serial.available()>0)
  {
int data_com= Serial.parseInt ();
Serial.println (data_com);

  }
}
 

Вложения

Thug Robot

✩✩✩✩✩✩✩
8 Сен 2018
8
1
C++:
int incomingbyte;
void setup(){
Serial.begin(9600);
}
void loop(){
while(Serial.available() > 0){
incomingbyte = Serial.parseInt();
}
Serial.println(incomingbyte);
}
 
Последнее редактирование:

Angel341

✩✩✩✩✩✩✩
10 Сен 2018
3
0
Спасибо за ответ. но суть не поменялась. по вашему коду выводит одни нули без остановки.
 

Angel341

✩✩✩✩✩✩✩
10 Сен 2018
3
0
Решение следующее.
int data_com= Serial.parseInt ();
if (data_com !=0){
Servo1.write(data_com);

}
 

glassman

✩✩✩✩✩✩✩
8 Дек 2018
5
0
Всем привет. Не могу понять, что не так с монитором СОМ-порта. Выводит вообще не понятно что! Пример на скрине. В какую сторону копать?

Снимок.PNG
 

glassman

✩✩✩✩✩✩✩
8 Дек 2018
5
0
@glassman, ты уверен что скетч загрузился?
Попробуй любую терминальную программу, что туда будет выводить.
меняю скетч (текст), меняется вывод в СОМ-порту. нечитаемо все равно. Если в loop поставить вывод, то будет писать в одну строку подобную фигню нечитаемую.
 

glassman

✩✩✩✩✩✩✩
8 Дек 2018
5
0
Методом научного втыка выяснил, что если в мониторе COM-порта поставить скорость в 4 раза меньше, чем в Serial.begin, то текст выводится читаемым. Непонятная для меня особенность. почему так?

p.s. в Putty та же проблема с выводом.
 

Wan-Derer

★★★★✩✩✩
Команда форума
31 Июл 2018
1,440
281
Москва
wan-derer.ru
@glassman, возможно, косячно прошитый бутлоадер на Ардуино. Или фузы.
Попробуй другую Ардуино.
Попробуй выбрать плату с "old bootloader".
 

glassman

✩✩✩✩✩✩✩
8 Дек 2018
5
0
@glassman, возможно, косячно прошитый бутлоадер на Ардуино. Или фузы.
Попробуй другую Ардуино.
Попробуй выбрать плату с "old bootloader".
Без "old bootloader" у меня вообще не прошивается. Ардуины НАНО, пробовал несколько штук (думал, может брак). Брал тут: https://ru.aliexpress.com/item/Wavgat-Nano-Mini-USB-Nano-3-0-CH340/32887871843.html


других ардуин в наличии пока нет, только начал с ними играться.
 

Wan-Derer

★★★★✩✩✩
Команда форума
31 Июл 2018
1,440
281
Москва
wan-derer.ru
@glassman, а, ну так это не Ардуино, а вавгат. Там другой микроконтроллер, на нём маркировка вавгат, а не Атмел.
Для него в ИДЕ надо подселить ядро вавгат. Это есть в описании товара и в отзывах.
И никто не гарантирует совместимости этого поделия со скетчами для Ардуино.
 

До-Ми-Соль

✩✩✩✩✩✩✩
19 Янв 2019
2
0
Решение следующее.
int data_com= Serial.parseInt ();
if (data_com !=0){
Servo1.write(data_com);

}

Мое решение:
void setup() {
Serial.begin(9600);
}
void loop() {
int data=Serial.parseInt();
if (data !=0) {
Serial.println(data);
}
}
Три решения одной задачи, но это не меняет сути проблемы. ПОЧЕМУ это возможно?
Разные производители Ардуинок?
Ну так AVR-ки то стандартные.
 

До-Ми-Соль

✩✩✩✩✩✩✩
19 Янв 2019
2
0
Sketch к уроку 3....выводим "Вы ввели 1 или 5" или "Мимо"
При вводе 1 или 5 выводится "Вы ввели 1 или 5" через секунду выводится "Мимо".
При вводе какого-либо числа выводится "Мимо" и через секунду дублируется "Мимо".
Мое решение:

byte data;
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
data = Serial.parseInt();
if (data == 1 || data == 5 ) {
Serial.println("Вы ввели 1 или 5");
} else if (data>0) { //добавляем дополнительное условие, причем if(Serial.available()) {} можно исключить
Serial.println("Мимо");
}
}
}