updated 7seg controls for new 7 seg boards
Dependencies: PixelArray WS2812 mbed
Fork of frdm_pong_table_controller by
main.h@5:2d439ccefc7d, 2017-07-06 (annotated)
- Committer:
- DanGibbons
- Date:
- Thu Jul 06 16:16:36 2017 +0000
- Revision:
- 5:2d439ccefc7d
- Parent:
- 4:2e80bd814f57
- Child:
- 6:5e8e2645cd93
Random Colour added; Drain animation added; Drawing animation added for numbers
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DanGibbons | 5:2d439ccefc7d | 1 | #ifndef MAIN_H |
DanGibbons | 5:2d439ccefc7d | 2 | #define MAIN_H |
DanGibbons | 5:2d439ccefc7d | 3 | |
DanGibbons | 4:2e80bd814f57 | 4 | #include "mbed.h" |
DanGibbons | 4:2e80bd814f57 | 5 | #include "WS2812.h" |
DanGibbons | 4:2e80bd814f57 | 6 | #include "PixelArray.h" |
DanGibbons | 4:2e80bd814f57 | 7 | |
DanGibbons | 4:2e80bd814f57 | 8 | #define WS2812_BUF 122 |
DanGibbons | 4:2e80bd814f57 | 9 | #define NUM_COLORS 6 |
DanGibbons | 4:2e80bd814f57 | 10 | #define NUM_LEDS_PER_COLOR 1 |
DanGibbons | 4:2e80bd814f57 | 11 | |
DanGibbons | 4:2e80bd814f57 | 12 | //-------- Colours ----------- |
DanGibbons | 4:2e80bd814f57 | 13 | #define RED 0x2f0000 |
DanGibbons | 4:2e80bd814f57 | 14 | #define YELLOW 0x2f2f00 |
DanGibbons | 4:2e80bd814f57 | 15 | #define GREEN 0x002f00 |
DanGibbons | 4:2e80bd814f57 | 16 | #define LIGHTBLUE 0x002f2f |
DanGibbons | 4:2e80bd814f57 | 17 | #define DARKBLUE 0x00002f |
DanGibbons | 4:2e80bd814f57 | 18 | #define BLUE 0x0000ff // Player scored a goal |
DanGibbons | 4:2e80bd814f57 | 19 | #define PINK 0x2f002f |
DanGibbons | 4:2e80bd814f57 | 20 | #define OFF 0x000000 |
DanGibbons | 4:2e80bd814f57 | 21 | #define WHITE 0xffffaa |
DanGibbons | 4:2e80bd814f57 | 22 | #define ARMBLUE 0x128BAB |
DanGibbons | 4:2e80bd814f57 | 23 | #define PURPLE 0xff0055 // Player has conceded a goal |
DanGibbons | 4:2e80bd814f57 | 24 | |
DanGibbons | 4:2e80bd814f57 | 25 | // Goal Sensors |
DanGibbons | 4:2e80bd814f57 | 26 | AnalogIn robotBreakBeam(A0); |
DanGibbons | 4:2e80bd814f57 | 27 | AnalogIn playerBreakBeam(A1); |
DanGibbons | 4:2e80bd814f57 | 28 | |
DanGibbons | 4:2e80bd814f57 | 29 | // K64F On-board LED |
DanGibbons | 4:2e80bd814f57 | 30 | DigitalOut led_green(LED_GREEN, 1); |
DanGibbons | 4:2e80bd814f57 | 31 | |
DanGibbons | 4:2e80bd814f57 | 32 | //K64F On-board Switches |
DanGibbons | 4:2e80bd814f57 | 33 | DigitalIn PB1(PTC6); |
DanGibbons | 4:2e80bd814f57 | 34 | DigitalIn PB2(PTA4); |
DanGibbons | 4:2e80bd814f57 | 35 | |
DanGibbons | 4:2e80bd814f57 | 36 | // SERIAL |
DanGibbons | 4:2e80bd814f57 | 37 | Serial pc(USBTX, USBRX); // tx, rx |
DanGibbons | 4:2e80bd814f57 | 38 | |
DanGibbons | 4:2e80bd814f57 | 39 | // LED STRIPS |
DanGibbons | 4:2e80bd814f57 | 40 | // See the program page for information on the timing numbers |
DanGibbons | 4:2e80bd814f57 | 41 | // The given numbers are for the K64F |
DanGibbons | 4:2e80bd814f57 | 42 | WS2812 robotScoreLED(D3, WS2812_BUF, 0, 5, 5, 0); |
DanGibbons | 4:2e80bd814f57 | 43 | WS2812 playerScoreLED(D5,WS2812_BUF, 0, 5, 5, 0); |
DanGibbons | 4:2e80bd814f57 | 44 | PixelArray robotScorePx(WS2812_BUF); |
DanGibbons | 4:2e80bd814f57 | 45 | PixelArray playerScorePx(WS2812_BUF); |
DanGibbons | 4:2e80bd814f57 | 46 | |
DanGibbons | 4:2e80bd814f57 | 47 | |
DanGibbons | 4:2e80bd814f57 | 48 | // LED Variables |
DanGibbons | 4:2e80bd814f57 | 49 | bool seg1A, seg1B, seg1C, seg1D, seg1E, seg1F, seg1G; |
DanGibbons | 4:2e80bd814f57 | 50 | //int seg1Array[122]; |
DanGibbons | 4:2e80bd814f57 | 51 | int mainArray[11][122]; |
DanGibbons | 5:2d439ccefc7d | 52 | int rand_colors[] = {0x00FF00, 0x7FFF00, 0xFFFF00, 0xFF7F00, 0xFF0000, 0xFE00FF, 0x7F00FF, 0x0000FF, 0x007FFF, 0x00FFFE, 0x00FF7F}; |
DanGibbons | 4:2e80bd814f57 | 53 | |
DanGibbons | 4:2e80bd814f57 | 54 | // Score counters |
DanGibbons | 4:2e80bd814f57 | 55 | int robotScore; |
DanGibbons | 4:2e80bd814f57 | 56 | int playerScore; |
DanGibbons | 4:2e80bd814f57 | 57 | int scoreLimit = 3; |
DanGibbons | 4:2e80bd814f57 | 58 | bool finishedGame = false; |
DanGibbons | 4:2e80bd814f57 | 59 | int endFlashes = 3; |
DanGibbons | 4:2e80bd814f57 | 60 | int numFlashes; |
DanGibbons | 4:2e80bd814f57 | 61 | |
DanGibbons | 4:2e80bd814f57 | 62 | // Robot Bream Beam value |
DanGibbons | 4:2e80bd814f57 | 63 | double prevRbbValue; // Previous Robot break beam value |
DanGibbons | 4:2e80bd814f57 | 64 | double prevPbbValue; // Previous player break beam value |
DanGibbons | 4:2e80bd814f57 | 65 | |
DanGibbons | 4:2e80bd814f57 | 66 | // FUNCTION DECLERATIONS |
DanGibbons | 4:2e80bd814f57 | 67 | void Setup(); |
DanGibbons | 4:2e80bd814f57 | 68 | void SetNumberPatterns(); |
DanGibbons | 4:2e80bd814f57 | 69 | void SetFigureOf8Pattern(); |
DanGibbons | 5:2d439ccefc7d | 70 | void SetCirclePattern(); |
DanGibbons | 4:2e80bd814f57 | 71 | void SetLEDArray(int x); |
DanGibbons | 4:2e80bd814f57 | 72 | void WriteScores(); |
DanGibbons | 4:2e80bd814f57 | 73 | void HandleGoal(bool hasRobotScored); |
DanGibbons | 4:2e80bd814f57 | 74 | void WritePxScores(int line_num, bool isRobot); |
DanGibbons | 5:2d439ccefc7d | 75 | void WritePxAnimation(int line_num,bool isRobot); |
DanGibbons | 5:2d439ccefc7d | 76 | void WritePxScoresRandomColours(int line_num,bool isRobot); |
DanGibbons | 4:2e80bd814f57 | 77 | void WritePxGoal(unsigned int colour,bool isRobot); |
DanGibbons | 4:2e80bd814f57 | 78 | void HandleWin(); |
DanGibbons | 4:2e80bd814f57 | 79 | void GoalAnimation(bool hasRobotScored); |
DanGibbons | 4:2e80bd814f57 | 80 | void WinAnimation(bool isRobotWinner); |
DanGibbons | 5:2d439ccefc7d | 81 | void FigureOf8Animation(bool robot, bool player, int numberOfRepitions); |
DanGibbons | 5:2d439ccefc7d | 82 | void CircleAnimation(bool robot, bool player, int numberOfRepitions); |
DanGibbons | 5:2d439ccefc7d | 83 | void DrainAnimation(bool robot, bool robotColour, int robotScore, bool player, bool playerColour, int playerScore); |
DanGibbons | 5:2d439ccefc7d | 84 | |
DanGibbons | 5:2d439ccefc7d | 85 | #endif |