Serial.flush(); странно работает
Вот скетч:
PHP код:
int ledPin = 13;
int EN = 2;
int val;
int otkomp;
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(EN, OUTPUT);
Serial.begin(19200);
digitalWrite(EN, LOW);
}
void loop()
{
// delay(5000);
Serial.flush();
if(Serial.available()) //ждем команды с компьютера
{
otkomp = Serial.read();
if(otkomp == 'v')digitalWrite(ledPin,HIGH);
if(otkomp == 'o')digitalWrite(ledPin,LOW);
}
}
В Serial Monitor пишу символ 'v', диод не зажигается, так и должно быть, а вот если пишу два с символа 'vv', то зажигается. На один символ Serial.flush(); срабатывает, а на два и больше нет. Почему так?
Re: Serial.flush(); странно работает
А вот если паузу delay(1); поставить перед Serial.flush();, то всё нормально.
Re: Serial.flush(); странно работает
if(Serial.available()) //здесь мы не ждем, а проверяем есть ли в буфере данные. Но так как мы только что очистили буфер, данные в буфер никогда не успеют придти. Для получения одного байта на скорости 19200 нужно ждать 570мкс, при условии что источник на другом конце UART шлет данные беспрерывным потоком
Re: Serial.flush(); странно работает
Дык почему не очищается буфер то?
Re: Serial.flush(); странно работает
А что тогда по твоему делает Serial.flush();
Re: Serial.flush(); странно работает