Хронограф своими руками

Наконец-то я запилил хронограф!

Ссылка на страницу с изначальным проектом хронографа http://justforduino.blogspot.ru/2013/05/arduino.html?m=1

Запчасти необходимые для проекта:

четыре фототранзистора L-3DP3C либо аналоги

два светодиода ИК

две лазерные указки любые 

два резистора на 220 Ом (R1, R2)

два резистора на 1 КОм (R3, R4)

два резистора на 15 Ом (R5, R6)

Arduino Nano

Экран Nokia5110

 

 

Необходимая библиотека https://yadi.sk/d/RkUYp4Z33PhxwV

Текст скетча:

#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
unsigned int data = 0;
volatile unsigned int time_IN = 0;
volatile unsigned int time_OUT = 0;
Adafruit_PCD8544 display = Adafruit_PCD8544( 4, 5, 6, 7, 8);
const static unsigned char PROGMEM logoBmp[] =
{
B00111110, B01111111, B01100011, B01111111, B01100011, B01100011, B00111110, B01111111, B00000011, B11111011, B11110000,
B01111111, B01111111, B01100011, B01111111, B01100011, B01100011, B01111111, B01111111, B00000011, B11111011, B11111000,
B01100011, B01100000, B01100011, B01100000, B01100011, B01100011, B01100011, B01100000, B00000000, B01100011, B00011000,
B01100011, B01100000, B01111111, B01111111, B01111111, B01111111, B01100011, B01111111, B00000000, B01100011, B11110000,
B01100011, B01100000, B01111111, B01111111, B01111111, B01111111, B01100011, B01111111, B00000000, B01100011, B11111000,
B01100011, B01100000, B01100011, B01100000, B01100011, B01100011, B01100011, B01100000, B00000000, B01100011, B00011000,
B01111111, B01100000, B01100011, B01111111, B01100011, B01100011, B01111111, B01111111, B00000000, B01100011, B11111000,
B00111110, B01100000, B01100011, B01111111, B01100011, B01100011, B00111110, B01111111, B00000000, B01100011, B11110000
};

void setup(){
Serial.begin(9600);
attachInterrupt(0, IN, RISING);
attachInterrupt(1, OUT, RISING);

display.begin(); // Инициализация дисплея
display.setContrast(60); // Устанавливаем контраст
display.setTextColor(BLACK); // Устанавливаем цвет текста
display.setTextSize(4); // Устанавливаем размер текста
display.clearDisplay(); // Очищаем дисплей
display.display();
delay(1000);
}

void IN(){
if (time_IN == 0)
{
time_IN = micros();
}
}
void OUT(){
if (time_OUT == 0)
{
time_OUT = micros();
}
}
void loop(){
display.drawBitmap(LCDWIDTH/0, LCDHEIGHT/1-8, logoBmp, 88, 8, BLACK); // x, y, logo, w, h, color
display.display();
delay(2000);
while ( time_IN == 0 && time_OUT == 0 ) ;
delay(100);
if ( time_IN != 0 && time_OUT != 0 && time_OUT > time_IN ){
data = 0.06/((time_OUT-time_IN)/1000000.0); // v = s / t
display.clearDisplay(); // Очищаем дисплей
display.display();
delay(100);
Serial.println(data);
display.println(data);
}
else
{
display.clearDisplay(); // Очищаем дисплей
display.display();
delay(100);
Serial.println(«X»);
display.println(«X»);
}
time_IN = 0;
time_OUT = 0;

}

 

В скетче есть какие-то ошибки, но и с ними работает нормально)))

 

Комментарии: