updated 7seg controls for new 7 seg boards
Dependencies: PixelArray WS2812 mbed
Fork of frdm_pong_table_controller by
Revision 6:5e8e2645cd93, committed 2017-07-10
- Comitter:
- DanGibbons
- Date:
- Mon Jul 10 11:05:06 2017 +0000
- Parent:
- 5:2d439ccefc7d
- Child:
- 7:dc6f1f105c52
- Commit message:
- All animations added. ; Prior version to adding start/idle button
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
| main.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Thu Jul 06 16:16:36 2017 +0000
+++ b/main.cpp Mon Jul 10 11:05:06 2017 +0000
@@ -29,12 +29,19 @@
wait(0.02);
}
+
}
void Setup()
{
// Turn on green LED
led_green = 0;
+
+ // attach idle button isr to rising edge of button press
+ idleButton.rise(&idleButtonISR);
+
+ // enable the internal pull-down resistor on idleButton
+ idleButton.mode(PullDown);
// Set brightness of the 4 LED strips
robotScoreLED.setII(0xB0);
@@ -47,12 +54,14 @@
playerScore = 0;
numFlashes = 0;
- FigureOf8Animation(true,true,2); // run animation 2 times for both robot and player scores
+ CircleAnimation(true,true,true,true,2);
+ SetNumberPatterns();
+
DrainAnimation(true,true,robotScore,true,true,playerScore); // run animation for both scores with random colour pattern
- SetNumberPatterns();
+ wait(1.5);
- WriteScores();
+ ZeroInAnimation(true,false,true,false);
// Turn off green LED
led_green = 1;
@@ -217,206 +226,6 @@
}
-// segment pattern for figure of 8 animation
-void SetFigureOf8Pattern()
-{
- for(int seg = 0; seg < 8; seg++) {
-
- switch (seg) {
- case 0 :
- seg1A = 1;
- seg1B = 0;
- seg1C = 0;
- seg1D = 0;
- seg1E = 0;
- seg1F = 0;
- seg1G = 0;
-
- SetLEDArray(0);
- break;
-
- case 1 :
- seg1A = 0;
- seg1B = 1;
- seg1C = 0;
- seg1D = 0;
- seg1E = 0;
- seg1F = 0;
- seg1G = 0;
-
- SetLEDArray(1);
- break;
-
- case 2 :
- seg1A = 0;
- seg1B = 0;
- seg1C = 0;
- seg1D = 0;
- seg1E = 0;
- seg1F = 0;
- seg1G = 1;
-
- SetLEDArray(2);
- break;
-
- case 3 :
- seg1A = 0;
- seg1B = 0;
- seg1C = 0;
- seg1D = 0;
- seg1E = 1;
- seg1F = 0;
- seg1G = 0;
-
- SetLEDArray(3);
- break;
-
- case 4:
- seg1A = 0;
- seg1B = 0;
- seg1C = 0;
- seg1D = 1;
- seg1E = 0;
- seg1F = 0;
- seg1G = 0;
-
- SetLEDArray(4);
- break;
-
- case 5:
- seg1A = 0;
- seg1B = 0;
- seg1C = 1;
- seg1D = 0;
- seg1E = 0;
- seg1F = 0;
- seg1G = 0;
-
- SetLEDArray(5);
- break;
-
- case 6:
- seg1A = 0;
- seg1B = 0;
- seg1C = 0;
- seg1D = 0;
- seg1E = 0;
- seg1F = 0;
- seg1G = 1;
-
- SetLEDArray(6);
- break;
-
- case 7:
- seg1A = 0;
- seg1B = 0;
- seg1C = 0;
- seg1D = 0;
- seg1E = 0;
- seg1F = 1;
- seg1G = 0;
-
- SetLEDArray(7);
- break;
-
- default :
-
- break;
-
- }
-
- }
-
-}
-
-// Segment Pattern for circle animation
-void SetCirclePattern()
-{
- for(int seg = 0; seg < 6; seg++) {
-
- switch (seg) {
- case 0 :
- seg1A = 1;
- seg1B = 0;
- seg1C = 0;
- seg1D = 0;
- seg1E = 0;
- seg1F = 0;
- seg1G = 0;
-
- SetLEDArray(0);
- break;
-
- case 1 :
- seg1A = 0;
- seg1B = 1;
- seg1C = 0;
- seg1D = 0;
- seg1E = 0;
- seg1F = 0;
- seg1G = 0;
-
- SetLEDArray(1);
- break;
-
- case 2 :
- seg1A = 0;
- seg1B = 0;
- seg1C = 1;
- seg1D = 0;
- seg1E = 0;
- seg1F = 0;
- seg1G = 0;
-
- SetLEDArray(2);
- break;
-
- case 3 :
- seg1A = 0;
- seg1B = 0;
- seg1C = 0;
- seg1D = 1;
- seg1E = 0;
- seg1F = 0;
- seg1G = 0;
-
- SetLEDArray(3);
- break;
-
- case 4:
- seg1A = 0;
- seg1B = 0;
- seg1C = 0;
- seg1D = 0;
- seg1E = 1;
- seg1F = 0;
- seg1G = 0;
-
- SetLEDArray(4);
- break;
-
- case 5:
- seg1A = 0;
- seg1B = 0;
- seg1C = 0;
- seg1D = 0;
- seg1E = 0;
- seg1F = 1;
- seg1G = 0;
-
- SetLEDArray(5);
- break;
-
- default :
-
- break;
-
- }
-
- }
-
-}
-
// Write segment config to main array
void SetLEDArray(int x)
{
@@ -452,108 +261,73 @@
}
// Update both Score LEDs with the current score
-void WriteScores()
+void WriteAnimation()
{
- WritePxScores(playerScore,false);
+ WritePxAnimation(playerScore,false,false);
playerScoreLED.write(playerScorePx.getBuf());
wait(0.01);
- WritePxScores(robotScore,true);
+ WritePxAnimation(robotScore,true,false);
robotScoreLED.write(robotScorePx.getBuf());
}
-// Write pixel array for Numbers (drawing animation
-void WritePxScores(int line_num,bool isRobot)
+// Write Pixel array with either random colour pattern or in standard blue
+void WritePxAnimation(int line_num,bool isRobot,bool colour)
{
- if(isRobot == true) {
-
- for (int i = 0; i < WS2812_BUF; i++) {
- if (mainArray[line_num][i] == 0) {
- robotScorePx.Set(i,OFF);
- }
+ if (colour == true) { // random colours
+ if(isRobot == true) {
- if (mainArray[line_num][i] == 1) {
- robotScorePx.Set(i,BLUE);
- robotScoreLED.write(robotScorePx.getBuf());
- }
- }
- } else {
- for (int i = 0; i < WS2812_BUF; i++) {
- if (mainArray[line_num][i] == 0) {
- playerScorePx.Set(i,OFF);
- }
+ for (int i = 0; i < WS2812_BUF; i++) {
+ if (mainArray[line_num][i] == 0) {
+ robotScorePx.Set(i,OFF);
+ }
- if (mainArray[line_num][i] == 1) {
- playerScorePx.Set(i,BLUE);
- robotScoreLED.write(robotScorePx.getBuf());
+ if (mainArray[line_num][i] == 1) {
+ robotScorePx.Set(i,rand_colors[rand() % 10]);
+ }
}
- }
- }
-
-}
+ } else {
+ for (int i = 0; i < WS2812_BUF; i++) {
+ if (mainArray[line_num][i] == 0) {
+ playerScorePx.Set(i,OFF);
+ }
-// Write Pixel array with random colour pattern
-void WritePxScoresRandomColours(int line_num,bool isRobot)
-{
- if(isRobot == true) {
-
- for (int i = 0; i < WS2812_BUF; i++) {
- if (mainArray[line_num][i] == 0) {
- robotScorePx.Set(i,OFF);
- }
-
- if (mainArray[line_num][i] == 1) {
- robotScorePx.Set(i,rand_colors[rand() % 10]);
+ if (mainArray[line_num][i] == 1) {
+ playerScorePx.Set(i,rand_colors[rand() % 10]);
+ }
}
}
- } else {
- for (int i = 0; i < WS2812_BUF; i++) {
- if (mainArray[line_num][i] == 0) {
- playerScorePx.Set(i,OFF);
+ } else { // blue
+ if(isRobot == true) {
+
+ for (int i = 0; i < WS2812_BUF; i++) {
+ if (mainArray[line_num][i] == 0) {
+ robotScorePx.Set(i,OFF);
+ }
+
+ if (mainArray[line_num][i] == 1) {
+ robotScorePx.Set(i,BLUE);
+ }
}
+ } else {
+ for (int i = 0; i < WS2812_BUF; i++) {
+ if (mainArray[line_num][i] == 0) {
+ playerScorePx.Set(i,OFF);
+ }
- if (mainArray[line_num][i] == 1) {
- playerScorePx.Set(i,rand_colors[rand() % 10]);
+ if (mainArray[line_num][i] == 1) {
+ playerScorePx.Set(i,BLUE);
+ }
}
}
- }
-
-}
-
-// Write Pixel array with standard colour
-void WritePxAnimation(int line_num,bool isRobot)
-{
- if(isRobot == true) {
-
- for (int i = 0; i < WS2812_BUF; i++) {
- if (mainArray[line_num][i] == 0) {
- robotScorePx.Set(i,OFF);
- }
- if (mainArray[line_num][i] == 1) {
- robotScorePx.Set(i,BLUE);
- }
- }
- } else {
- for (int i = 0; i < WS2812_BUF; i++) {
- if (mainArray[line_num][i] == 0) {
- playerScorePx.Set(i,OFF);
- }
+ }
+}
- if (mainArray[line_num][i] == 1) {
- playerScorePx.Set(i,BLUE);
- }
- }
- }
-
-}
-
-// Handle behaviour for when a goal scored event
+// Handle behaviour for the goal scored event
void HandleGoal(bool hasRobotScored)
{
GoalAnimation(hasRobotScored);
- wait(1);
-
// If either player reaches the score limit, then call HandleWin(). If not, then turn goal LEDs off
if(robotScore == scoreLimit || playerScore == scoreLimit) {
HandleWin();
@@ -574,7 +348,6 @@
WinAnimation(isRobotWinner);
} else {
-
pc.printf("Robot won!");
WinAnimation(isRobotWinner);
@@ -584,30 +357,89 @@
robotScore = 0;
playerScore = 0;
- FigureOf8Animation(true,true,2);
- DrainAnimation(true,true,0,true,true,0);
+ CircleAnimation(true,true,true,true,2);
+ DrainAnimation(true,true,robotScore,true,true,playerScore);
- WriteScores();
+ wait(2);
+
+ ZeroInAnimation(true,false,true,false);
}
// animation for when a goal is scored
void GoalAnimation(bool hasRobotScored)
{
if(hasRobotScored == true) {
+
+ switch (robotScore) {
+ case 0:
+ ZeroOutAnimation(true,false,false,false);
+ break;
+ case 1:
+ OneOutAnimation(true,false,false,false);
+ break;
+ case 2:
+ TwoOutAnimation(true,false,false,false);
+ break;
+ case 3:
+ ThreeOutAnimation(true,false,false,false);
+ default :
+ break;
+ }
+
robotScore++;
- robotScorePx.SetAll(0);
- robotScoreLED.write(robotScorePx.getBuf());
wait_ms(250);
- FigureOf8Animation(true,false,1);
- WriteScores();
+
+ switch (robotScore) {
+ case 0:
+ ZeroInAnimation(true,false,false,false);
+ break;
+ case 1:
+ OneInAnimation(true,false,false,false);
+ break;
+ case 2:
+ TwoInAnimation(true,false,false,false);
+ break;
+ case 3:
+ ThreeInAnimation(true,true,false,false);
+ default :
+ break;
+ }
} else {
+
+ switch (playerScore) {
+ case 0:
+ ZeroOutAnimation(false,false,true,false);
+ break;
+ case 1:
+ OneOutAnimation(false,false,true,false);
+ break;
+ case 2:
+ TwoOutAnimation(false,false,true,false);
+ break;
+ case 3:
+ ThreeOutAnimation(false,false ,true,false);
+ default :
+ break;
+ }
playerScore++;
- playerScorePx.SetAll(0);
- playerScoreLED.write(playerScorePx.getBuf());
wait_ms(250);
- FigureOf8Animation(false,true,1);
- WriteScores();
+
+ switch (playerScore) {
+ case 0:
+ ZeroInAnimation(false,false,true,false);
+ break;
+ case 1:
+ OneInAnimation(false,false,true,false);
+ break;
+ case 2:
+ TwoInAnimation(false,false,true,false);
+ break;
+ case 3:
+ ThreeInAnimation(false,false,true,true);
+ default :
+ break;
+ }
}
}
@@ -617,238 +449,872 @@
{
if(isRobotWinner == false) {
- //robotScoreLED.setII(0x10);
-
- for (int i = 0; i < 80; i++) { // A
- WritePxScoresRandomColours(playerScore,false);
+ // dim brightness of the robot score because it lost
+ robotScoreLED.setII(0x20);
+ robotScoreLED.useII(WS2812::GLOBAL);
+ robotScoreLED.write(robotScorePx.getBuf()); // rewrite buffer to change brightness
+
+ for (int i = 0; i < 80; i++) { // flash player score with changing random colours
+ WritePxAnimation(playerScore,false,true);
playerScoreLED.write(playerScorePx.getBuf());
- wait_ms(50);
+ wait_ms(50);
}
- DrainAnimation(true,false,robotScore,true,true,playerScore);
+ DrainAnimation(true,false,robotScore,true,true,playerScore); // drain both scores away with the player score in random colours
+
+ // reset robot score brightness
+ robotScoreLED.setII(0xB0);
+ robotScoreLED.useII(WS2812::GLOBAL);
} else {
-
- //playerScoreLED.setII(0x10);
- for (int i = 0; i < 80; i++) { // A
- WritePxScoresRandomColours(robotScore,true);
+ // dim brightness of the player score because they lost
+ playerScoreLED.setII(0x20);
+ playerScoreLED.useII(WS2812::GLOBAL);
+ playerScoreLED.write(playerScorePx.getBuf()); // rewrite buffer to change brightness
+
+ for (int i = 0; i < 80; i++) { // flash robot score with changing random colours
+ WritePxAnimation(robotScore,true,true);
robotScoreLED.write(robotScorePx.getBuf());
- wait_ms(50);
+ wait_ms(50);
}
- DrainAnimation(true,true,robotScore,true,false,playerScore);
+ DrainAnimation(true,true,robotScore,true,false,playerScore); // drain both scores away with the robot score in random colours
+
+ // reset player score brightness
+ playerScoreLED.setII(0xB0);
+ playerScoreLED.useII(WS2812::GLOBAL);
}
-
- wait(2);
-
- playerScorePx.SetAll(0);
- playerScoreLED.write(playerScorePx.getBuf());
- robotScorePx.SetAll(0);
- robotScoreLED.write(robotScorePx.getBuf());
-
wait(3);
}
-// figure of 8 animation
-void FigureOf8Animation(bool robot, bool player, int numberOfRepetitions)
+
+void CircleAnimation(bool robot, bool robotColour, bool player, bool playerColour, int numberOfRepititions)
{
- SetFigureOf8Pattern();
-
- for (int i = 0; i < numberOfRepetitions; i++) {
-
- for (int j = 0; j < 8; j++) {
+ memset(mainArray, 0, sizeof mainArray);
+
+ for (int loops = 0; loops < numberOfRepititions; loops++) {
+
+ for (int i = 0; i < 115; i++) { // loop to set LEDs around the circle from start of segment A to end of Segment F
- if(robot == true && player == true) {
- WritePxAnimation(j,false);
- playerScoreLED.write(playerScorePx.getBuf());
- WritePxAnimation(j,true);
- robotScoreLED.write(robotScorePx.getBuf());
- } else if(robot == true && player == false) {
- WritePxAnimation(j,true);
- robotScoreLED.write(robotScorePx.getBuf());
- } else if(robot == false && player == true) {
- WritePxAnimation(j,false);
+ if ( i < 104) {
+ mainArray[0][i] = 1;
+ }
+
+ for (int j = 0; j < i-10; j++) { // Loop to clear previously set LEDs so that the chain that animates round the display is 9 LEDs long
+ mainArray[0][j] = 0;
+ }
+
+ wait_ms(10);
+
+ if (player == true) {
+ WritePxAnimation(playerScore,false,playerColour);
playerScoreLED.write(playerScorePx.getBuf());
}
-
- wait_ms(20);
+ if (robot == true) {
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ }
+
+ }
+
+ for (int i = 0; i < 104; i++) {
+
+ mainArray[0][i] = 1;
+ wait_ms(10);
+
+ if (player == true) {
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
}
+ if (robot == true) {
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+
}
SetNumberPatterns();
}
-// circle animation
-void CircleAnimation(bool robot, bool player, int numberOfRepetitions)
-{
- SetCirclePattern();
-
- for (int i = 0; i < numberOfRepetitions; i++) {
-
- for (int j = 0; j < 6; j++) {
-
- if(robot == true && player == true) {
- WritePxScores(j,false);
- playerScoreLED.write(playerScorePx.getBuf());
- WritePxScores(j,true);
- robotScoreLED.write(robotScorePx.getBuf());
- } else if(robot == true && player == false) {
- WritePxScores(j,true);
- robotScoreLED.write(robotScorePx.getBuf());
- } else if(robot == false && player == true) {
- WritePxScores(j,false);
- playerScoreLED.write(playerScorePx.getBuf());
- }
-
- wait_ms(10);
- }
- }
-
- SetNumberPatterns();
-
-}
// animation that drains the display from the top segment A to the bottom segment D
void DrainAnimation(bool robot, bool robotColour, int robotScore, bool player, bool playerColour, int playerScore)
{
- if (player == true && robot == true) {
- for (int i = 0; i < 10; i++) { // A
- mainArray[robotScore][9+i] = 0;
- mainArray[robotScore][9-i] = 0;
- mainArray[playerScore][9+i] = 0;
- mainArray[playerScore][9-i] = 0;
- wait_ms(30);
- WritePxScoresRandomColours(playerScore,false);
+ for (int i = 0; i < 10; i++) { // A
+ mainArray[robotScore][9+i] = 0;
+ mainArray[robotScore][9-i] = 0;
+ mainArray[playerScore][9+i] = 0;
+ mainArray[playerScore][9-i] = 0;
+ wait_ms(30);
+ if (player == true){
+ WritePxAnimation(playerScore,false,playerColour);
playerScoreLED.write(playerScorePx.getBuf());
- WritePxScoresRandomColours(robotScore,true);
- robotScoreLED.write(robotScorePx.getBuf());
+ }
+ if (robot == true) {
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
}
- for (int i = 0; i < 18; i++) { // B and F
- mainArray[robotScore][18+i] = 0;
- mainArray[robotScore][103-i] = 0;
- mainArray[playerScore][18+i] = 0;
- mainArray[playerScore][103-i] = 0;
- wait_ms(30);
- WritePxScoresRandomColours(playerScore,false);
+ }
+ for (int i = 0; i < 18; i++) { // B and F
+ mainArray[robotScore][18+i] = 0;
+ mainArray[robotScore][103-i] = 0;
+ mainArray[playerScore][18+i] = 0;
+ mainArray[playerScore][103-i] = 0;
+ wait_ms(30);
+ if (player == true){
+ WritePxAnimation(playerScore,false,playerColour);
playerScoreLED.write(playerScorePx.getBuf());
- WritePxScoresRandomColours(robotScore,true);
- robotScoreLED.write(robotScorePx.getBuf());
- }
+ }
+ if (robot == true) {
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ }
+ if (robotScore != 0 | playerScore != 0) { // endgame - at least one score is three
+
+ for (int i = 0; i < 18; i++) { // G
+ mainArray[robotScore][104+i] = 0;
+ mainArray[playerScore][104+i] = 0;
+ if (player == true) {
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ }
+ if (robot == true) {
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ }
+ } else { // start of game - both scores are 0
for (int i = 0; i < 18; i++) { // G
mainArray[robotScore][104+i] = 0;
mainArray[playerScore][104+i] = 0;
- }
-
- WritePxScoresRandomColours(playerScore,false);
- playerScoreLED.write(playerScorePx.getBuf());
- WritePxScoresRandomColours(robotScore,true);
+ }
+ if (player == true) {
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ }
+ if (robot == true) {
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ }
+
+ for (int i = 0; i < 18; i++) { // C and E
+ mainArray[robotScore][35+i] = 0;
+ mainArray[robotScore][86-i] = 0;
+ mainArray[playerScore][35+i] = 0;
+ mainArray[playerScore][86-i] = 0;
+ wait_ms(30);
+ if (player == true){
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ }
+ if (robot == true) {
+ WritePxAnimation(robotScore,true,robotColour);
robotScoreLED.write(robotScorePx.getBuf());
-
+ }
+ }
+ for (int i = 0; i < 10; i++) { // D
+ mainArray[robotScore][52+i] = 0;
+ mainArray[robotScore][70-i] = 0;
+ mainArray[playerScore][52+i] = 0;
+ mainArray[playerScore][70-i] = 0;
+ wait_ms(30);
+ if (player == true){
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ }
+ if (robot == true) {
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ }
+
+
+ SetNumberPatterns();
+
+}
+
+void ZeroInAnimation(bool robot, bool robotColour, bool player, bool playerColour)
+{
+ memset(mainArray, 0, sizeof mainArray);
+
+ if (player == true && robot == true) {
+
+ for (int i = 0; i < 10; i++) { // A
+ mainArray[0][9+i] = 1;
+ mainArray[0][9-i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 0; i < 18; i++) { // B and F
+ mainArray[0][18+i] = 1;
+ mainArray[0][103-i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
for (int i = 0; i < 18; i++) { // C and E
- mainArray[robotScore][35+i] = 0;
- mainArray[robotScore][86-i] = 0;
- mainArray[playerScore][35+i] = 0;
- mainArray[playerScore][86-i] = 0;
- wait_ms(30);
- WritePxScoresRandomColours(playerScore,false);
+ mainArray[0][35+i] = 1;
+ mainArray[0][86-i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
playerScoreLED.write(playerScorePx.getBuf());
- WritePxScoresRandomColours(robotScore,true);
+ WritePxAnimation(robotScore,true,robotColour);
robotScoreLED.write(robotScorePx.getBuf());
- }
+ }
for (int i = 0; i < 10; i++) { // D
- mainArray[robotScore][52+i] = 0;
- mainArray[robotScore][70-i] = 0;
- mainArray[playerScore][52+i] = 0;
- mainArray[playerScore][70-i] = 0;
+ mainArray[0][52+i] = 1;
+ mainArray[0][70-i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+
+ }
+
+ if (player == true && robot == false) {
+
+ for (int i = 0; i < 10; i++) { // A
+ mainArray[0][9+i] = 1;
+ mainArray[0][9-i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ }
+ for (int i = 0; i < 18; i++) { // B and F
+ mainArray[0][18+i] = 1;
+ mainArray[0][103-i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ }
+ for (int i = 0; i < 18; i++) { // G
+ mainArray[0][104+i] = 1;
+ }
+
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+
+ for (int i = 0; i < 18; i++) { // C and E
+ mainArray[0][35+i] = 1;
+ mainArray[0][86-i] = 1;
wait_ms(30);
- WritePxScoresRandomColours(playerScore,false);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ }
+ for (int i = 0; i < 10; i++) { // D
+ mainArray[0][52+i] = 1;
+ mainArray[0][70-i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
playerScoreLED.write(playerScorePx.getBuf());
- WritePxScoresRandomColours(robotScore,true);
+ }
+
+ }
+
+ if (player == false && robot == true) {
+
+ for (int i = 0; i < 10; i++) { // A
+ mainArray[0][9+i] = 1;
+ mainArray[0][9-i] = 1;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 0; i < 18; i++) { // B and F
+ mainArray[0][18+i] = 1;
+ mainArray[0][103-i] = 1;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
robotScoreLED.write(robotScorePx.getBuf());
- }
- }
+ }
+ for (int i = 0; i < 18; i++) { // G
+ mainArray[0][104+i] = 1;
+ }
+
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+
+ for (int i = 0; i < 18; i++) { // C and E
+ mainArray[0][35+i] = 1;
+ mainArray[0][86-i] = 1;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 0; i < 10; i++) { // D
+ mainArray[0][52+i] = 1;
+ mainArray[0][70-i] = 1;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+
+ }
+
+ SetNumberPatterns();
- if (player == true && robot == false) {
+
+}
+
+void ZeroOutAnimation(bool robot, bool robotColour, bool player, bool playerColour)
+{
+ if (player == true && robot == true) {
+
for (int i = 0; i < 10; i++) { // A
- mainArray[playerScore][9+i] = 0;
- mainArray[playerScore][9-i] = 0;
- wait_ms(30);
- WritePxScores(playerScore,false);
+ mainArray[0][9+i] = 0;
+ mainArray[0][9-i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 0; i < 18; i++) { // B and F
+ mainArray[0][18+i] = 0;
+ mainArray[0][103-i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 0; i < 18; i++) { // G
+ mainArray[0][104+i] = 0;
+ }
+
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+
+ for (int i = 0; i < 18; i++) { // C and E
+ mainArray[0][35+i] = 0;
+ mainArray[0][86-i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 0; i < 10; i++) { // D
+ mainArray[0][52+i] = 0;
+ mainArray[0][70-i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+
+ }
+
+ if (player == true && robot == false) {
+
+ for (int i = 0; i < 10; i++) { // A
+ mainArray[0][9+i] = 0;
+ mainArray[0][9-i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
playerScoreLED.write(playerScorePx.getBuf());
}
for (int i = 0; i < 18; i++) { // B and F
- mainArray[playerScore][18+i] = 0;
- mainArray[playerScore][103-i] = 0;
- wait_ms(30);
- WritePxScores(playerScore,false);
+ mainArray[0][18+i] = 0;
+ mainArray[0][103-i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
playerScoreLED.write(playerScorePx.getBuf());
- }
+ }
for (int i = 0; i < 18; i++) { // G
- mainArray[playerScore][104+i] = 0;
- wait_ms(30);
- WritePxScores(playerScore,false);
- playerScoreLED.write(playerScorePx.getBuf());
- }
+ mainArray[0][104+i] = 0;
+ }
+
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+
for (int i = 0; i < 18; i++) { // C and E
- mainArray[playerScore][35+i] = 0;
- mainArray[playerScore][86-i] = 0;
- wait_ms(30);
- WritePxScores(playerScore,false);
+ mainArray[0][35+i] = 0;
+ mainArray[0][86-i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
playerScoreLED.write(playerScorePx.getBuf());
- }
+ }
for (int i = 0; i < 10; i++) { // D
- mainArray[playerScore][52+i] = 0;
- mainArray[playerScore][70-i] = 0;
- wait_ms(30);
- WritePxScores(playerScore,false);
+ mainArray[0][52+i] = 0;
+ mainArray[0][70-i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
playerScoreLED.write(playerScorePx.getBuf());
- }
- }
-
+ }
+
+ }
+
if (player == false && robot == true) {
+
for (int i = 0; i < 10; i++) { // A
- mainArray[robotScore][9+i] = 0;
- mainArray[robotScore][9-i] = 0;
- wait_ms(30);
- WritePxScores(robotScore,true);
+ mainArray[0][9+i] = 0;
+ mainArray[0][9-i] = 0;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
robotScoreLED.write(robotScorePx.getBuf());
}
for (int i = 0; i < 18; i++) { // B and F
- mainArray[robotScore][18+i] = 0;
- mainArray[robotScore][103-i] = 0;
- wait_ms(30);
- WritePxScores(robotScore,true);
+ mainArray[0][18+i] = 0;
+ mainArray[0][103-i] = 0;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
robotScoreLED.write(robotScorePx.getBuf());
- }
+ }
for (int i = 0; i < 18; i++) { // G
- mainArray[robotScore][104+i] = 0;
- wait_ms(30);
- WritePxScores(robotScore,true);
- robotScoreLED.write(robotScorePx.getBuf());
- }
+ mainArray[0][104+i] = 0;
+ }
+
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+
for (int i = 0; i < 18; i++) { // C and E
- mainArray[robotScore][35+i] = 0;
- mainArray[robotScore][86-i] = 0;
- wait_ms(30);
- WritePxScores(robotScore,true);
+ mainArray[0][35+i] = 0;
+ mainArray[0][86-i] = 0;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
robotScoreLED.write(robotScorePx.getBuf());
- }
+ }
for (int i = 0; i < 10; i++) { // D
- mainArray[robotScore][52+i] = 0;
- mainArray[robotScore][70-i] = 0;
- wait_ms(30);
- WritePxScores(robotScore,true);
+ mainArray[0][52+i] = 0;
+ mainArray[0][70-i] = 0;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+
+ }
+
+ SetNumberPatterns();
+
+
+}
+
+void OneInAnimation(bool robot, bool robotColour,bool player, bool playerColour)
+{
+ memset(mainArray, 0, sizeof mainArray);
+
+ if (player == true && robot == true) {
+
+ for (int i = 51; i > 17; i--) {
+ mainArray[1][i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+
+ }
+
+ if (player == true && robot == false) {
+
+ for (int i = 51; i > 17; i--) {
+ mainArray[1][i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ }
+
+ }
+
+ if (player == false && robot == true) {
+
+ for (int i = 51; i > 17; i--) { // B and F
+ mainArray[1][i] = 1;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+
+ }
+
+ SetNumberPatterns();
+
+
+}
+
+void OneOutAnimation(bool robot, bool robotColour,bool player, bool playerColour)
+{
+ if (player == true && robot == true) {
+
+ for (int i = 18; i < 52; i++) {
+ mainArray[1][i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
robotScoreLED.write(robotScorePx.getBuf());
- }
- }
+ }
+
+ }
+
+ if (player == true && robot == false) {
+
+ for (int i = 18; i < 52; i++) {
+ mainArray[1][i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());;
+ }
+
+ }
+
+ if (player == false && robot == true) {
+
+ for (int i = 18; i < 52; i++) {
+ mainArray[1][i] = 0;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+
+ }
+
+ SetNumberPatterns();
+
+}
+
+void TwoInAnimation(bool robot, bool robotColour,bool player, bool playerColour)
+{
+ memset(mainArray, 0, sizeof mainArray);
+ if (player == true && robot == true) {
+
+ for (int i = 0; i < 35; i++) {
+ mainArray[2][i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 121; i > 103; i--) {
+ mainArray[2][i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 86; i > 51; i--) {
+ mainArray[2][i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+
+ }
+
+ if (player == true && robot == false) {
+
+ for (int i = 0; i < 35; i++) {
+ mainArray[2][i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ }
+ for (int i = 121; i > 103; i--) {
+ mainArray[2][i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ }
+ for (int i = 86; i > 51; i--) {
+ mainArray[2][i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ }
+
+ }
+
+ if (player == false && robot == true) {
+
+ for (int i = 0; i < 35; i++) {
+ mainArray[2][i] = 1;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 121; i > 103; i--) {
+ mainArray[2][i] = 1;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 86; i > 51; i--) {
+ mainArray[2][i] = 1;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+
+ }
+
SetNumberPatterns();
-}
-
\ No newline at end of file
+}
+
+void TwoOutAnimation(bool robot, bool robotColour,bool player, bool playerColour)
+{
+ if (player == true && robot == true) {
+
+ for (int i = 0; i < 35; i++) {
+ mainArray[2][i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 121; i > 103; i--) {
+ mainArray[2][i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 86; i > 51; i--) {
+ mainArray[2][i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+
+ }
+
+ if (player == true && robot == false) {
+
+ for (int i = 0; i < 35; i++) {
+ mainArray[2][i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ }
+ for (int i = 121; i > 103; i--) {
+ mainArray[2][i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ }
+ for (int i = 86; i > 51; i--) {
+ mainArray[2][i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ }
+
+ }
+
+ if (player == false && robot == true) {
+
+ for (int i = 0; i < 35; i++) {
+ mainArray[2][i] = 0;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 121; i > 103; i--) {
+ mainArray[2][i] = 0;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 86; i > 51; i--) {
+ mainArray[2][i] = 0;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+
+ }
+
+ SetNumberPatterns();
+
+}
+
+void ThreeInAnimation(bool robot, bool robotColour,bool player, bool playerColour)
+{
+ memset(mainArray, 0, sizeof mainArray);
+
+ if (player == true && robot == true) {
+
+ for (int i = 0; i < 35; i++) {
+ mainArray[3][i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 0; i < 17; i++) {
+ mainArray[3][35+i] = 1;
+ mainArray[3][121-i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 52; i < 70; i++) {
+ mainArray[3][i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+
+ }
+
+ if (player == true && robot == false) {
+
+ for (int i = 0; i < 35; i++) {
+ mainArray[3][i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ }
+ for (int i = 0; i < 17; i++) {
+ mainArray[3][35+i] = 1;
+ mainArray[3][121-i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ }
+ for (int i = 52; i < 70; i++) {
+ mainArray[3][i] = 1;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ }
+
+ }
+
+ if (player == false && robot == true) {
+
+ for (int i = 0; i < 35; i++) {
+ mainArray[3][i] = 1;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 0; i < 18; i++) {
+ mainArray[3][35+i] = 1;
+ mainArray[3][121-i] = 1;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 52; i < 70; i++) {
+ mainArray[3][i] = 1;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+
+ }
+
+ SetNumberPatterns();
+
+}
+
+void ThreeOutAnimation(bool robot, bool robotColour,bool player, bool playerColour)
+{
+ if (player == true && robot == true) {
+
+ for (int i = 0; i < 18; i++) {
+ mainArray[3][i] = 0;
+ mainArray[3][104+i] = 0;
+ mainArray[3][69-i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 0; i < 18; i++) {
+ mainArray[3][18+i] = 0;
+ mainArray[3][51-i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+
+ }
+
+ if (player == true && robot == false) {
+
+ for (int i = 0; i < 18; i++) {
+ mainArray[3][i] = 0;
+ mainArray[3][104+i] = 0;
+ mainArray[3][69-i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ }
+ for (int i = 0; i < 18; i++) {
+ mainArray[3][18+i] = 0;
+ mainArray[3][51-i] = 0;
+ wait_ms(10);
+ WritePxAnimation(playerScore,false,playerColour);
+ playerScoreLED.write(playerScorePx.getBuf());
+ }
+
+ }
+
+ if (player == false && robot == true) {
+
+ for (int i = 0; i < 18; i++) {
+ mainArray[3][i] = 0;
+ mainArray[3][104+i] = 0;
+ mainArray[3][69-i] = 0;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+ for (int i = 0; i < 18; i++) {
+ mainArray[3][18+i] = 0;
+ mainArray[3][51-i] = 0;
+ wait_ms(10);
+ WritePxAnimation(robotScore,true,robotColour);
+ robotScoreLED.write(robotScorePx.getBuf());
+ }
+
+ }
+
+ SetNumberPatterns();
+
+}
+
+void idleButtonISR()
+{
+ idle_flag = !idle_flag;
+}
--- a/main.h Thu Jul 06 16:16:36 2017 +0000
+++ b/main.h Mon Jul 10 11:05:06 2017 +0000
@@ -32,6 +32,7 @@
//K64F On-board Switches
DigitalIn PB1(PTC6);
DigitalIn PB2(PTA4);
+InterruptIn idleButton(PTB2);
// SERIAL
Serial pc(USBTX, USBRX); // tx, rx
@@ -47,7 +48,6 @@
// LED Variables
bool seg1A, seg1B, seg1C, seg1D, seg1E, seg1F, seg1G;
-//int seg1Array[122];
int mainArray[11][122];
int rand_colors[] = {0x00FF00, 0x7FFF00, 0xFFFF00, 0xFF7F00, 0xFF0000, 0xFE00FF, 0x7F00FF, 0x0000FF, 0x007FFF, 0x00FFFE, 0x00FF7F};
@@ -59,27 +59,40 @@
int endFlashes = 3;
int numFlashes;
+// Flags
+volatile int idle_flag = 0;
+
// Robot Bream Beam value
double prevRbbValue; // Previous Robot break beam value
double prevPbbValue; // Previous player break beam value
// FUNCTION DECLERATIONS
-void Setup();
-void SetNumberPatterns();
-void SetFigureOf8Pattern();
-void SetCirclePattern();
-void SetLEDArray(int x);
-void WriteScores();
-void HandleGoal(bool hasRobotScored);
-void WritePxScores(int line_num, bool isRobot);
-void WritePxAnimation(int line_num,bool isRobot);
-void WritePxScoresRandomColours(int line_num,bool isRobot);
-void WritePxGoal(unsigned int colour,bool isRobot);
+void Setup(); // initial pattern
+void SetNumberPatterns(); // sets segment patterns for numbers
+void SetLEDArray(int x); // sets segment patterns in mainArray
+void WriteAnimation(); // writes scores to the LEDs
+void WritePxAnimation(int line_num,bool isRobot,bool colour); // writes mainArray to either LED buffer in blue or random colours
+
+void HandleGoal(bool hasRobotScored);
void HandleWin();
+
void GoalAnimation(bool hasRobotScored);
void WinAnimation(bool isRobotWinner);
-void FigureOf8Animation(bool robot, bool player, int numberOfRepitions);
-void CircleAnimation(bool robot, bool player, int numberOfRepitions);
+
+void CircleAnimation(bool robot, bool robotColour,bool player, bool playerColour, int numberOfRepitions);
void DrainAnimation(bool robot, bool robotColour, int robotScore, bool player, bool playerColour, int playerScore);
+void ZeroInAnimation(bool robot, bool robotColour,bool player, bool playerColour);
+void ZeroOutAnimation(bool robot, bool robotColour,bool player, bool playerColour);
+void OneInAnimation(bool robot, bool robotColour,bool player, bool playerColour);
+void OneOutAnimation(bool robot, bool robotColour,bool player, bool playerColour);
+void TwoInAnimation(bool robot, bool robotColour,bool player, bool playerColour);
+void TwoOutAnimation(bool robot, bool robotColour,bool player, bool playerColour);
+void ThreeInAnimation(bool robot, bool robotColour,bool player, bool playerColour);
+void ThreeOutAnimation(bool robot, bool robotColour,bool player, bool playerColour);
+
+// ISRs
+void idleButtonISR();
+
+
#endif
\ No newline at end of file
