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;
}