проблема c Serial.begin
- Войдите на сайт для отправки комментариев
Вс, 15/03/2015 - 17:44
Всем привет, вот уже два дня не могу найти решение одной проблемы... Когда посылаешь сообщение из терминала на ардуино, при скорости 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(" ");
}
}

Я попробовал, у меня работает.
А с другими скоростями что, нормально?
-------
Только после n = Serial.available(); по-хорошему добавить бы проверку, чтобы n не превышала размер буфера. На всякий случай.
испытывал до 1200 бод, работало нормально, а дальше только 300, и все, не катит. Если что, то Arduino uno используется.
А если глянуть размер вашего буфера? И обнулить его потОм.
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; // ************************ }Мне кажеттся дело не в буфере... Достал Arduino Nano, странно, но она работает на скорости 300 бод, а Uno нет...
А 300 бод - это необходимо ?
Желательно иметь такую скорость для связи с датчиком.
все, всем благодарен я смог увеличить скорость работы датчика до 1200 бод...