Ультразвуковой датчик и таймер

StormVit
Offline
Зарегистрирован: 29.10.2019

Доброго всем дня, вечера! Подскажите, возможно, используя платформу Arduino (ультразвуковой датчик и таймер) создать такую установку. Мне нужно определить время падения тела между двумя датчиками движения. Т.е. когда тело проходит первый (верхний датчик) запускается таймер, а когда проходит второй датчик (нижний) таймер выключается. Вот.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Возможно если тело не успеет сильно разогнаться. Ультразвуковой датчик как то не очень хорошо для таких задач подходит. Может лучше оптические использовать?

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

Добрый день, можно.

StormVit
Offline
Зарегистрирован: 29.10.2019

Если возможно, подскажите как сделать.

ua6em
ua6em аватар
Онлайн
Зарегистрирован: 17.08.2016

StormVit пишет:

Если возможно, подскажите как сделать.

датчики привязать к прерываниям, по первому запоминаем микрос, по второму вычисляем, если точность в 4 микросекунды устроит

StormVit
Offline
Зарегистрирован: 29.10.2019

Точность устраивает, но в этом деле "новичок". Идея возникла, а как ее реализовать не знаю. Если можно подробнее или схему. И нужно ли прописывать программу для этого. Заранее огромное спасибо.

b707
Онлайн
Зарегистрирован: 26.05.2017

StormVit пишет:

И нужно ли прописывать программу для этого.

а кто, по Вашему, без программы будет ловить сигналы от датчиков и высчитывать время? :)

Судя по этому вопросу - вы пока в начале длииинного пути.

StormVit
Offline
Зарегистрирован: 29.10.2019

Ну, с данным вопросом, перебрал.

ua6em
ua6em аватар
Онлайн
Зарегистрирован: 17.08.2016

StormVit пишет:

Точность устраивает, но в этом деле "новичок". Идея возникла, а как ее реализовать не знаю. Если можно подробнее или схему. И нужно ли прописывать программу для этого. Заранее огромное спасибо.

Автоматику я Вам всю сделал, осталась техническая часть )))

unsigned long myTime; // Здесь храним счётчик
int timeGo = 0;       // Флаг начала измерения
void setup() {
// Здесь автоматическая часть при старте программы
  pinMode(4, INPUT);   // Верхний датчик
  pinMode(5, INPUT);   // Нижний датчик
  Serial.begin(115200);// Время будем выводить в порт
}

void loop() {
  // Здесь автоматическая часть при работе программы
  if(digitalRead(4) == LOW && timeGo == 0){
    myTime = micros();
    timeGo = 1;
    }
   if(digitalRead(5) == LOW && timeGo == 1){
   myTime = micros() - myTime;  // Рассчитали время пролёта
   Serial.print("Время пролёта: ");
   Serial.print(myTime);
   Serial.println(" микросекунд");
   timeGo = 0; // Ждём пролёт следующего тела
    } 
   }

 

StormVit
Offline
Зарегистрирован: 29.10.2019

Огромное спасибо!

StormVit
Offline
Зарегистрирован: 29.10.2019

Извините, конечно. А можно вас попросить указать точно какие элементы необходимо приобрести и схему их подключения. Заранее спасибо!

ua6em
ua6em аватар
Онлайн
Зарегистрирован: 17.08.2016

StormVit пишет:

Извините, конечно. А можно вас попросить указать точно какие элементы необходимо приобрести и схему их подключения. Заранее спасибо!

Понимаете, это весьма абстрактный набросок, посмотрите здесь на форуме ...измерение пролёта пули... может там что-то для себя подчерпнёте...условия ваших задумок весьма туманные...как сферический конь в вакууме...на кнопках подключенных к пинам 4 и 5 скорее всего этот скетч работать будет и, вас устраивает вывод в серийный порт, не на дисплей?

nik182
Онлайн
Зарегистрирован: 04.05.2015