Секундомер по фотодатчику с лазером.
- Войдите на сайт для отправки комментариев
Ср, 25/04/2018 - 16:24
Собственно ищется исполнитель для создания секундомера на ардуино.
Планируется 2 базы с лазерным лучом, одна на старте, одна на финише, обе связаны по nrf24l01.
Момент старта ловить пересечением луча №1 или нажатием кнопки на первой базе, финиш ловить пересечением луча №2 (Точка финиша) или 2-й кнопкой на 1-й базе (Точка старта).
Должно стоять условие чтобы сработка 1-й базы (старта) была 1 раз и секундомер не должен останавливатся, сбрасыватся или начинать счет по новой пока не будет остановки на второй базе (Финиш) или же кнопкой на первой базе.
После финиша хотелось бы видеть вывод нескольких последних значений.
Ардуино только начинаю изучать, кое какой секундомер я нарыл в интернете немножко переделал на вывод под свой дисплей, но он работает от кнопок и начинает некоректно работать с модулями фотореле если я подключаю их в пины кнопок. Мож кому пригодится, пользуйтесь.
#include "LCD_1602_RUS.h"
LCD_1602_RUS lcd (0x3f, 16, 2);
void setup()
{
lcd.init();
lcd.backlight();
lcd.begin(16, 2);
lcd.clear();
Serial.begin(9600);
pinMode(8, INPUT);
digitalWrite(8, HIGH);
pinMode(9, INPUT);
digitalWrite(9, HIGH);
}
double i = 0;
double a = millis();
double c ;
void loop()
{
lcd.clear();
lcd.print("Press Start");
delay(100);
if(digitalRead(8) == LOW)
{
lcd.clear();
a = millis();
while(digitalRead(9) == HIGH)
{
c = millis();
i = (c - a) / 1000;
lcd.print(i);
lcd.setCursor(13,0);
lcd.print(L"Сек");
lcd.setCursor(0,0);
Serial.println(c);
Serial.println(a);
Serial.println(i);
Serial.println("......");
delay(100);
}
if(digitalRead(9) == LOW)
{
while(digitalRead(8) == HIGH)
{
lcd.setCursor(0,0);
lcd.print(i);
lcd.setCursor(11,0);
lcd.print("");
lcd.setCursor(0,0);
delay(100);
}
}
}
}
Пишите htpicc@gmail.com
Пишите azat222@gmail.com