Проблема с приёмом данных

artemka_60
artemka_60 аватар
Offline
Зарегистрирован: 05.11.2018

Народ, такая проблема: делаю проэкт, пока пишу программу по частям, вот пишу код, отвечающий за то чтобы на индикатор выводились числа (1-10), каждую секунду, и если человек нажа кнопку в данном случае "1" в СОМ-порте, число сохранилось и вывелось на индикатор (опять же в данном случае написалось в сом). Но проблема в том что прием данных идёт миллисекунды и не успеешь ввести число( делэй не помагает, а вешает систему). Попытался своеобразно решить проблему(как вы поняли не получилось).

                                                                                                           помогите!!!

int x;
void setup() { 
  Serial.begin(9600); 
lol: for( x = 1; x < 11 ; x++){  
  Serial.println(x);
  for(int i = 0; i < 900; i++){
  int c = Serial.read() - '0'; 
   if(c == 1){continue;}}
   if(x == 10){
    goto lol;}
}}

          
  
void loop() {
Serial.println(x);
}

 

artemka_60
artemka_60 аватар
Offline
Зарегистрирован: 05.11.2018

Можно ли как-то сделать что-бы действие длилось определёное время?

artemka_60
artemka_60 аватар
Offline
Зарегистрирован: 05.11.2018

Я понимаю, что для бородатых ардуинщиков это выглядит тупо, но просьба простить и помочь

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

artemka_60 пишет:

Я понимаю, что для бородатых ардуинщиков это выглядит тупо, но просьба простить и помочь

Можно. 

Минимум, двумя разным способами:

1. Блокирующий:

- включили действие,

- подождали (delay()),

- выключили действие.

2. Неблокирующий:

Вне цикла:

- включили действие,

- запомнили время,

Внутри цикла:

- проверили, что прошло больше требуемого итнтервала:

- если "да" - выключили действие,

artemka_60
artemka_60 аватар
Offline
Зарегистрирован: 05.11.2018

Спасибо

nik182
Offline
Зарегистрирован: 04.05.2015

Прочитайте внимательно http://arduino.ru/Reference/Serial/Available

Подумайте, когда можно получить валидное значение с помощью Serial.read();