Расчёт времени между 2-мя ИК датчиками

estari0l
Offline
Зарегистрирован: 13.04.2018

Доброго времени суток, заранее прошу прощения, если мой вопросы окажутся весьма банальными, но всё же:

Имеется 2 ик, датчика, подключённые к arduino mega 2560, каждый из них должен работать в режиме "наличие объекта", "отсутствие объекта", располагаются они один за другим. Нужно засечь время прохождения объекта между ними. 

Пробовал написать скетч, чтобы, для начала, проверить их работоспособность в необходимом режиме, но работает только 1, думаю проблема в скетче, т.к. другой, скетч сработал, но он мне не особо подходит.

Просьба помочь разобраться, я только начал заниматься с arduino, и составить код для расчёта времени. Буду весьма благодарен! Заранее спасибо!

Вот скетч, с которым работает 1 из 2 датчиков:

int limitSwitch = 13;
int limitSwitch2 = 12;
int state = LOW;
void setup() {
  
  Serial.begin(9600);
  pinMode(limitSwitch, INPUT);
  pinMode(limitSwitch2, INPUT);
  }
void loop() {
      int val = digitalRead(limitSwitch);

    if( val != state ){
       state = val;
       Serial.print("Sensor value = ");
       if( state == 0 )
         Serial.println( "(0) Target Hit!" );
       else
         Serial.println( "(1) None");
         
     int val = digitalRead(limitSwitch2);

     if( val != state){
        state = val;
        Serial.print("Sensor2 value =");
        if( state == 0 )
          Serial.println( "(0) Yes" );
        else
          Serial.print( "(1) No" );
     }
    }
}

Вот, с которым работают оба:

void setup() {
Serial.begin(9600);
pinMode(12, INPUT);
pinMode(13, INPUT);
}
void loop() {
if (digitalRead(12) == HIGH && digitalRead(13) == LOW){
Serial.println("Sensor 1 =1");
}else{
Serial.println("Sensor 1 = 0");
}
if (digitalRead(13) == HIGH && digitalRead(12) == LOW){
Serial.println("Sensor 2 =1");
}else{
Serial.println("Sensor 2 = 0");
}
}

 

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

estari0l пишет:

Просьба помочь разобраться ... и составить код для расчёта времени. 

Составлять код за Вас никто не будет - это Ваша работа. Разобраться - пожалуйста.

Для начала, Вы используете одну и ту же переменную state для двух датчиков. Это неверно. У каждого должны быть своя. Обзовите и там типа state1 и state2 и работайте с каждым датчиком раздельно.

estari0l
Offline
Зарегистрирован: 13.04.2018

Я понимаю, что составлять буду я. Подскажите, как мне измерить время прохода между датчиками? через переменную millis?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Цитата:

Часы́ — прибор для определения текущего времени суток и измерения продолжительности временных интервалов в единицах, меньших, чем одни сутки

отсюда.https://ru.wikipedia.org/wiki/%D0%A7%D0%B0%D1%81%D1%8B

вот millis() и есть своебразные часы. Для начала расскажите, как вы измеряете временные промежутки с помощью обычных часов.

vshurik
Offline
Зарегистрирован: 30.12.2017

Какова скорость обекта?

Используйте прерывания, в обработчике прерывания по первому присваиваете время1=micros(), и время2=micros(), Время прохождения=время2-время1 

Ну адальше, как я догадываюсь, хотите расчитать скорость прохождения обьекта?

vshurik
Offline
Зарегистрирован: 30.12.2017