Секундомер на Arduino nano
- Войдите на сайт для отправки комментариев
Сб, 28/10/2017 - 21:22
Вообщем цель следующая: при прохождении первого датчика, начинается осчет времени, при прохождении второго- прекращается и значение временя в милисекундах выводится на экран; пробывал написать( переделать) код прошивки(за основу взят хронограф), однако в этом не силен; помогите исправить ошибки и записать новый кода, заранее спасибо! Датчики- ик светодиоды и ик фототранзисторы
int gap1=2; //2 цифровой пин для первого датчика
int gap2=3; //3 цифровой пин для второго датчика
int initial=0; //первый запуск
int n=1; //номер выстрела
float length=0.148; //расстояние между датчиками в метрах
volatile int flag1,flag2; //флажки для хранения состояния пролетания пулей датчиков
volatile unsigned long mark2; //отметки времени прохождения пулей датчиков
void setup()
{
pinMode(gap1, INPUT); //Настраиваем контакт 2
pinMode(gap2, INPUT); //Настраиваем контакт 3
Serial.begin(9600); //открываем COM порт
attachInterrupt(1,start,RISING); //прерывание при прохождении первого датчика
attachInterrupt(0,finish,RISING); //прерывание при прохождении второго датчика
}
void start()
{
}
void finish()
{
mark2=micros();
flag2=1; //прошли второй датчик, время запомнили
}
void loop()
{
if (initial==0) {
flag1=0;
flag2=0;
Serial.println("System is ready, just pull the f*ckin trigger!"); //уведомление о том, что хрон готов к работе. Вылезает при включении
Serial.println(" ");
initial=1;
if (flag2==1 && flag1==1) { //(если пуля прошла оба датчика)
//вычисление энергии
//вывод номера выстрела
Serial.print("mark2: ");
Serial.println(mark2); //вывод скорости в COM
//вывод энергии в COM
Serial.println(" ");
Вот новичкам надо обязательно пройти тест на "вменяемость"http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
ПС: А так же веруете в переполнение millis() или нет.
Ну косяков в коде много, но тпк по идее должен работать:
здесь смотри, как нужно правильно считать время класс титановый велосипед StopWatch.