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

Revision:
0:d00bd73d08f8
Child:
1:eb4ee5706587
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GoalCounter.cpp	Sat Jan 12 18:57:26 2019 +0000
@@ -0,0 +1,91 @@
+#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;
+}
+
+
+
+    
+
+