Помогите с таймером!!!

Basic40
Offline
Зарегистрирован: 25.12.2015

Здравствуйте уважаемые программисты. Несколько дней не могу " добить" прог-му. Помогите.

Есть HC-SR04,  будет находится спереди машины( типа парктроник). Будет говорить сколько осталось до впереди идущей машины. Пока холодно тестирую дома,  работает на ура! Загвоздка вот в чем, не могу сообразить, как сделать так, что, если машины стоят в пробке( или на светофоре) больше, ну например, больше 2ух минут, говорить"ПОЕХАЛИ" . Вот прога-

int echoPin = 7; 
int trigPin = 8;
int duration, cm;
int cv=cv;
int x=0;
int y=0;
int z=0;
int s=0;
void setup() { 
  Serial.begin (9600); 
  pinMode(trigPin, OUTPUT); 
  pinMode(echoPin, INPUT);
} 
void loop() { 
  do
  {
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2); 
  digitalWrite(trigPin, HIGH); 
  delayMicroseconds(10); 
  digitalWrite(trigPin, LOW); 
  duration = pulseIn(echoPin, HIGH,30000);
  cm = duration / 56; 
  if (duration == 0 || cm==0 ) {
            pinMode(echoPin, OUTPUT);
            digitalWrite(echoPin, LOW);
            pinMode(echoPin, INPUT);
                       }
    } while (duration==0 || cm==0);
    
    int d=cm-cv;// ЭТО Я НАЧИНАЛ ДЕЛАТЬ , ЕСЛИ d=0  ТО МАШИНЫ СТОЯТ
 
   
    if ( cm<150&& cm>100 && x==0)
    { Serial.println( "1,5 METRA");
      x=1, y=0, z=0, s=0;}
    if (cm<100 && cm>50 && y==0)
    {  Serial.println("METR");
      x=0, y=1, z=0, s=0;}
    if (cm<50 && cm>10 && z==0)
    {  Serial.println ("POLMETRA");
      x=0, y=0, z=1, s=0;}
    if ( cm<10 && s==0)
    { Serial.println( "STOP");
      x=0, y=0, z=0, s=1;}
     
    cv=cm;
 delay(100);
}

я пытался работать с millis() --чо-то не получилось.


Logik
Offline
Зарегистрирован: 05.08.2014

Basic40 пишет:

я пытался работать с millis() --чо-то не получилось.

Еще пробуйте - получится.  Смотрите на свои строки 34-45. И так же рассуждайте про время прошедшее после начала стояния как про cm. Сохраняйте время начала состояния "стоим" из millis(), затем каждый раз посчитайте сколько времени прошло и сравните его с требуемым.

Basic40
Offline
Зарегистрирован: 25.12.2015

все, разобрался. не мог понять как работает millis(). методом создания нескольких скетчей с millis() понял. Теперь, наверное, совсем тупой вопрос--а можно ли "говорить" не прибегая к мр3 модулю и т.п.( слов-то 5шт). библиотека play sound подойдет?