Вывод в порт значений определенное время, а потом вывод по нажатию Enter

Pavel_1282
Offline
Зарегистрирован: 19.12.2012

Всем привет, кто подскажет мне нужно около 10 сек выводить некоторые значения в Com порт. А после 10 секунд эти же значения выводятся только по нажатию Enter. Программу написал из двух частей обе работаю только по отдельности, как их объеденить?

Pavel_1282
Offline
Зарегистрирован: 19.12.2012
long Time=10000; // 10 seconds
 
void setup()
{
  Serial.begin (9600);
}
  
void loop()
{
   Serial.println (Time);
   delay (1000);   
   unsigned long Millis = millis();
   while (millis()>=Time)
   {
    }
  ///////////////////////////////////////////
      
  while (!Serial.available());
     
      {Serial.print (Time);
      Serial.println();
       
     Serial.parseInt();     
    }           
    }

 

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

Вы не могли бы прокомментировать программу построчно?

strarbit
Offline
Зарегистрирован: 12.06.2016

just look at the examples
IDE->Examples->Communication->SerialCallResponseASCII and SerialEvent

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Pavel_1282 пишет:

Всем привет, кто подскажет мне нужно около 10 сек выводить некоторые значения в Com порт. А после 10 секунд эти же значения выводятся только по нажатию Enter. Программу написал из двух частей обе работаю только по отдельности, как их объеденить?

Элментарно!

Первая часть выполняется один раз, следовательно, ее нужно поместить в setup(), а вторая - циклически, следовательно, размещаем в loop().

Вкратце опишу первую часть:

последовательный порт выводит (будучи настроенным так, как у Вас в исходнике) 9600 бит в секунду. Вам нужно выводить 10 с, следовательно, нужно вывести 96000 бит. В одном байте 10 бит, значит, нужно вывести 9600 байт. Вы выводите одно 5-значное число с двумя символами, завершающими строку. Т.е. по 7 байт за одну операцию, следовательно, Вам нужно выводить это 9600/7=1371.42857... раз. Т.к. требования выдерживать 10 с точно нет, округляем до 1371 раза.

Откуда код:

llong Time=10000; // 10 seconds
  
void setup()
{
  Serial.begin (9600);
  for(inti = 0; i < 1371; i++)
    Serial.println (Time);
}