Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: GoalCounter WS2812 PixelArray
Diff: GoalCounter.cpp
- Revision:
- 3:d74c47d2e933
- Parent:
- 2:f04959a6fd61
--- a/GoalCounter.cpp Fri Jan 11 18:29:58 2019 +0000
+++ b/GoalCounter.cpp Sat Jan 12 18:50:49 2019 +0000
@@ -1,52 +1,78 @@
#include "GoalCounter.h"
-GoalCounter::GoalCounter(PinName pin) : _interrupt(pin) {
- // Set callback functions to timers
- _interrupt.fall(callback(this, &GoalCounter::tstart));
- _interrupt.rise(callback(this, &GoalCounter::tstop));
-// _balltimes = {0};
- _score= 0;
+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::tstart() {
- t.start();
+void GoalCounter::tstart1() {
+ t1.start();
}
-void GoalCounter::tstop() {
- t.stop();
- _time = t.read();
- t.reset();
+void GoalCounter::tstop1() {
+ t1.stop();
+ _time1 = t1.read();
+ t1.reset();
- if ( _time > 0 && _time < 2 && _score < 10) {
- _balltimes[++_score] = _time;
- is_goal = 1;
-// wait(1);
- }
+ if ( _time1 > 0 && _time1 < 2 && _score1 < 10) {
+ _balltimes1[++_score1] = _time1;
+ is_goal1 = 1;
+ }
}
-void GoalCounter::goal() {
- is_goal = 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 _score;
+ return _score1;
}
float GoalCounter::get_balltime(uint8_t score) {
if (score <= 10 && score > 0)
- return _balltimes[score];
+ return _balltimes1[score];
else
return -1;
}
float GoalCounter::get_balltime() {
- return _balltimes[_score];
+ return _balltimes1[_score1];
}
float GoalCounter::get_ballspeed(uint8_t score) {
if (score <= 10 && score > 0) {
- float speed = 0.034f/_balltimes[score]*3.6f;
+ float speed = 0.034f/_balltimes1[score]*3.6f;
return speed;
}
else
@@ -54,15 +80,10 @@
}
float GoalCounter::get_ballspeed() {
- float speed = 0.034f/_balltimes[_score]*3.6f;
+ float speed = 0.034f/_balltimes1[_score1]*3.6f;
return speed;
}
-//void GoalCounter:print_info() {
-// pc.printf("Score : %d \n\r", _score);
-// pc.printf("Time of ball pass : %f seconds\n\r", this.get_balltime());
-// pc.printf("Speed of ball (34 mm diameter) : %f kph\n\r", this.get_ballspeed());
-//}