This library provides simple interface for the table football goal counter based on a IR LED or laser diode and phototransistor.
Dependents: goal_counter_project
GoalCounter.cpp
- Committer:
- nxf46245
- Date:
- 2019-01-12
- Revision:
- 0:d00bd73d08f8
- Child:
- 1:eb4ee5706587
File content as of revision 0:d00bd73d08f8:
#include "GoalCounter.h" GoalCounter::GoalCounter(PinName pin1, PinName pin2) : _interrupt1(pin1) { _interrupt1.fall(callback(this, &GoalCounter::tstart1)); _interrupt1.rise(callback(this, &GoalCounter::tstop1)); // _interrupt2.fall(callback(this, &GoalCounter::tstart2)); // _interrupt2.rise(callback(this, &GoalCounter::tstop2)); Timer t1; Timer t2; _score1 = 0; _score2 = 0; _time1 = 0; _time2 = 0; // _balltimes1 = {0}; // _balltimes2 = {0}; is_goal1 = 0; is_goal2 = 0; } void GoalCounter::tstart1() { t1.start(); } void GoalCounter::tstop1() { t1.stop(); _time1 = t1.read(); t1.reset(); if ( _time1 > 0 && _time1 < 2 && _score1 < 10) { _balltimes1[++_score1] = _time1; is_goal1 = 1; } } void GoalCounter::tstart2() { t2.start(); } void GoalCounter::tstop2() { t2.stop(); _time2 = t2.read(); t2.reset(); if ( _time2 > 0 && _time2 < 2 && _score2 < 10) { _balltimes2[++_score2] = _time2; is_goal2 = 1; } } uint8_t GoalCounter::get_score() { return _score1; } float GoalCounter::get_balltime(uint8_t score) { if (score <= 10 && score > 0) return _balltimes1[score]; else return -1; } float GoalCounter::get_balltime() { return _balltimes1[_score1]; } float GoalCounter::get_ballspeed(uint8_t score) { if (score <= 10 && score > 0) { float speed = 0.034f/_balltimes1[score]*3.6f; return speed; } else return -1; } float GoalCounter::get_ballspeed() { float speed = 0.034f/_balltimes1[_score1]*3.6f; return speed; }