проблема c Serial.begin

Crocodil707
Offline
Зарегистрирован: 16.02.2015

Всем привет, вот уже два дня не могу найти решение одной проблемы... Когда посылаешь сообщение из терминала на ардуино, при скорости 300 бит в секунду, то выводится некорректное сообщение, различные символы. Кто знает как это решить? И может это проблема технического типа? 

Вот код: 

char Masege[64];
int i = 0;
int m = 0;
int n = 0;

void setup(){
  Serial.begin(300);
  Serial.println("Terminal on");
}
void loop(){
  if(Serial.available() > 0){
    delay (1000);
    n = Serial.available();
    for (i=0;i<n;i++){
      Masege[i] = Serial.read();
    }
    for (m=0;m<n;m++){
      Serial.print(Masege[m]);
      Masege[m] =' ';
    }
    Serial.println(" ");
  }
}

Datak
Offline
Зарегистрирован: 09.10.2014

Я попробовал, у меня работает.

А с другими скоростями что, нормально?

-------

Только после n = Serial.available(); по-хорошему добавить бы проверку, чтобы n не превышала размер буфера. На всякий случай.

Crocodil707
Offline
Зарегистрирован: 16.02.2015

испытывал до 1200 бод, работало нормально, а дальше только 300, и все, не катит. Если что, то Arduino uno используется.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

А если глянуть размер вашего буфера? И обнулить его потОм.

char Masege[64];
int i = 0;
int m = 0;
int n = 0;

void setup(){
  Serial.begin(300);
  Serial.println("Terminal on");
}
void loop(){
  if(Serial.available() > 0){
    delay (1000);
    n = Serial.available();
      Serial.println(n);   // ***********************
    for (i=0;i<n;i++){
      Masege[i] = Serial.read();
    }
    for (m=0;m<n;m++){
      Serial.print(Masege[m]);
      Masege[m] =' ';
    }
    Serial.println(" ");
  }
  n=0;   // ************************
}

 

 

Crocodil707
Offline
Зарегистрирован: 16.02.2015

Мне кажеттся дело не в буфере... Достал Arduino Nano, странно, но она работает на скорости 300 бод, а Uno нет...

Araris
Offline
Зарегистрирован: 09.11.2012

А 300 бод - это необходимо ?

Crocodil707
Offline
Зарегистрирован: 16.02.2015

Желательно иметь такую скорость для связи с датчиком.

Crocodil707
Offline
Зарегистрирован: 16.02.2015

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