Simple implementation of goal counter for table football using laser diode and phototransistor.
Dependencies: GoalCounter WS2812 PixelArray
Diff: main.cpp
- Revision:
- 0:24f846b68c77
- Child:
- 1:ffac56d434b3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Jan 10 14:48:03 2019 +0000 @@ -0,0 +1,97 @@ +#include "mbed.h" +#include "WS2812.h" +#include "PixelArray.h" +#include "GoalCounter.h" + +#define WS2812_BUF 10 +#define NUM_COLORS 1 +#define NUM_LEDS_PER_COLOR 2 +#define COLOR 0x2f2020 + +// Initialize instace of a pixel array for LED strip +PixelArray px(WS2812_BUF); + +// The given numbers are for the K64F MCU +WS2812 ws(D4, WS2812_BUF, 0, 5, 5, 0); +GoalCounter gc(D2); + +//// Detector for the +//InterruptIn detector1(D3); +//InterruptIn detector2(D2); +// +//DigitalOut led1(LED1); +//DigitalOut led2(LED2); +// +//Timer t; +Serial pc(USBTX, USBRX); +// +float balltime = 0; +float speed = 0; +uint8_t score_1 = 0; +// +void print_time() { + pc.printf("The time taken was %f microseconds\n", balltime); +} +// +//void tstart() { +// t.start(); +//} +// +//void tstop() { +// t.stop(); +// balltime = t.read(); +// t.reset(); +//} +// +//void set_score(uint8_t score) { +// for (int i=0; i < score; i++) { +// px.Set(i, COLOR); +// } +// for (int i = score; i <= 10; i++) { +// px.Set(i, 0); +// } +// +// px.SetAllI(0x0f); +//// ws.write_offsets(px.getBuf(),0,0,0); +// ws.write(px.getBuf()); +//} + +int main() +{ + // Optional: set mode as PullUp/PullDown/PullNone/OpenDrain + //mypin.mode(PullNone); +// +// detector1.fall(&tstart); +// detector2.rise(&tstop); + + ws.useII(WS2812::GLOBAL); // use global intensity scaling + + while(1) { + + // if (balltime != 0) { +// pc.printf("Time of ball pass : %f seconds\n\r", balltime); +// float speed = 0.035/balltime*3.6; +// pc.printf("Speed of ball (3.5 cm diameter) : %f kph\n\r", speed); +// +// score_1++; +// +// if (score_1 > 10) +// score_1 = 0; +// +// set_score(score_1); +// balltime = 0; +// } +// +// led1 = detector1; // toggle led based on value of the pin + + if (gc.goal) { + score_1 = gc.get_score(); + balltime = gc.get_balltime(); + speed = gc.get_ballspeed(); + pc.printf("Score : %d \n\r", score_1); + pc.printf("Time of ball pass : %f seconds\n\r", balltime); + pc.printf("Speed of ball (34 mm diameter) : %f kph\n\r", speed); + gc.goal = 0; + } + } +}