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.
main.cpp@0:779a9ff709b7, 2020-10-13 (annotated)
- Committer:
- yu_yu
- Date:
- Tue Oct 13 14:21:42 2020 +0000
- Revision:
- 0:779a9ff709b7
- Child:
- 1:dc680896cbaa
first commit
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| yu_yu | 0:779a9ff709b7 | 1 | #include "mbed.h" |
| yu_yu | 0:779a9ff709b7 | 2 | #include "hanabi.h" |
| yu_yu | 0:779a9ff709b7 | 3 | |
| yu_yu | 0:779a9ff709b7 | 4 | #define BAR0 0b00000001 |
| yu_yu | 0:779a9ff709b7 | 5 | #define BAR1 0b00000010 |
| yu_yu | 0:779a9ff709b7 | 6 | #define BAR2 0b00000100 |
| yu_yu | 0:779a9ff709b7 | 7 | #define BAR3 0b00001000 |
| yu_yu | 0:779a9ff709b7 | 8 | #define BAR4 0b00010000 |
| yu_yu | 0:779a9ff709b7 | 9 | #define BAR5 0b00000001 |
| yu_yu | 0:779a9ff709b7 | 10 | #define BAR6 0b00000010 |
| yu_yu | 0:779a9ff709b7 | 11 | #define BAR7 0b00000100 |
| yu_yu | 0:779a9ff709b7 | 12 | #define BAR8 0b00001000 |
| yu_yu | 0:779a9ff709b7 | 13 | #define BAR9 0b00010000 |
| yu_yu | 0:779a9ff709b7 | 14 | |
| yu_yu | 0:779a9ff709b7 | 15 | #define TIME 25 //us |
| yu_yu | 0:779a9ff709b7 | 16 | |
| yu_yu | 0:779a9ff709b7 | 17 | |
| yu_yu | 0:779a9ff709b7 | 18 | DigitalOut red(D12); |
| yu_yu | 0:779a9ff709b7 | 19 | DigitalOut blue(D11); |
| yu_yu | 0:779a9ff709b7 | 20 | DigitalOut green(D10); |
| yu_yu | 0:779a9ff709b7 | 21 | |
| yu_yu | 0:779a9ff709b7 | 22 | DigitalOut bar0(A0); |
| yu_yu | 0:779a9ff709b7 | 23 | DigitalOut bar1(A1); |
| yu_yu | 0:779a9ff709b7 | 24 | DigitalOut bar2(A2); |
| yu_yu | 0:779a9ff709b7 | 25 | DigitalOut bar3(PA_8); |
| yu_yu | 0:779a9ff709b7 | 26 | DigitalOut bar4(PF_1); |
| yu_yu | 0:779a9ff709b7 | 27 | DigitalOut bar5(PF_0); |
| yu_yu | 0:779a9ff709b7 | 28 | DigitalOut bar6(PB_1); |
| yu_yu | 0:779a9ff709b7 | 29 | DigitalOut bar7(PB_0); |
| yu_yu | 0:779a9ff709b7 | 30 | DigitalOut bar8(PA_12); |
| yu_yu | 0:779a9ff709b7 | 31 | DigitalOut bar9(PA_10); |
| yu_yu | 0:779a9ff709b7 | 32 | |
| yu_yu | 0:779a9ff709b7 | 33 | DigitalIn sw0(D13); |
| yu_yu | 0:779a9ff709b7 | 34 | DigitalIn sw1(A6); |
| yu_yu | 0:779a9ff709b7 | 35 | |
| yu_yu | 0:779a9ff709b7 | 36 | Serial pc(USBTX, USBRX); |
| yu_yu | 0:779a9ff709b7 | 37 | Ticker timer; |
| yu_yu | 0:779a9ff709b7 | 38 | |
| yu_yu | 0:779a9ff709b7 | 39 | char RGB(int, char, char); |
| yu_yu | 0:779a9ff709b7 | 40 | void TMR0_ISR(); |
| yu_yu | 0:779a9ff709b7 | 41 | |
| yu_yu | 0:779a9ff709b7 | 42 | int main(){ |
| yu_yu | 0:779a9ff709b7 | 43 | bool tim_flag = 0; |
| yu_yu | 0:779a9ff709b7 | 44 | char tim = 25; |
| yu_yu | 0:779a9ff709b7 | 45 | timer.attach_us(&TMR0_ISR, tim); |
| yu_yu | 0:779a9ff709b7 | 46 | pc.baud(115200); |
| yu_yu | 0:779a9ff709b7 | 47 | while(1){ |
| yu_yu | 0:779a9ff709b7 | 48 | if(sw0){ |
| yu_yu | 0:779a9ff709b7 | 49 | tim --; |
| yu_yu | 0:779a9ff709b7 | 50 | tim_flag = 1; |
| yu_yu | 0:779a9ff709b7 | 51 | }else if(sw1){ |
| yu_yu | 0:779a9ff709b7 | 52 | tim ++; |
| yu_yu | 0:779a9ff709b7 | 53 | tim_flag = 1; |
| yu_yu | 0:779a9ff709b7 | 54 | } |
| yu_yu | 0:779a9ff709b7 | 55 | |
| yu_yu | 0:779a9ff709b7 | 56 | if(tim_flag){ |
| yu_yu | 0:779a9ff709b7 | 57 | pc.printf("period: %d, freq: %f\n", tim, float(1/tim) |
| yu_yu | 0:779a9ff709b7 | 58 | ); |
| yu_yu | 0:779a9ff709b7 | 59 | timer.detach(); |
| yu_yu | 0:779a9ff709b7 | 60 | timer.attach_us(&TMR0_ISR, tim); |
| yu_yu | 0:779a9ff709b7 | 61 | tim_flag = 0; |
| yu_yu | 0:779a9ff709b7 | 62 | } |
| yu_yu | 0:779a9ff709b7 | 63 | } |
| yu_yu | 0:779a9ff709b7 | 64 | } |
| yu_yu | 0:779a9ff709b7 | 65 | |
| yu_yu | 0:779a9ff709b7 | 66 | char RGB(int row, char col, char bar){ |
| yu_yu | 0:779a9ff709b7 | 67 | char color; |
| yu_yu | 0:779a9ff709b7 | 68 | char judge_red = 0, judge_green = 0, judge_blue = 0; |
| yu_yu | 0:779a9ff709b7 | 69 | |
| yu_yu | 0:779a9ff709b7 | 70 | judge_red = red0[row][col] & bar; |
| yu_yu | 0:779a9ff709b7 | 71 | judge_green = green0[row][col & bar]; |
| yu_yu | 0:779a9ff709b7 | 72 | judge_blue = blue0[row][col] & bar; |
| yu_yu | 0:779a9ff709b7 | 73 | |
| yu_yu | 0:779a9ff709b7 | 74 | bool flag = 1; |
| yu_yu | 0:779a9ff709b7 | 75 | |
| yu_yu | 0:779a9ff709b7 | 76 | if(judge_red && judge_green && judge_blue){ |
| yu_yu | 0:779a9ff709b7 | 77 | red=0; |
| yu_yu | 0:779a9ff709b7 | 78 | green=0; |
| yu_yu | 0:779a9ff709b7 | 79 | blue=0; |
| yu_yu | 0:779a9ff709b7 | 80 | }else if(judge_red && judge_green){ |
| yu_yu | 0:779a9ff709b7 | 81 | red=0; |
| yu_yu | 0:779a9ff709b7 | 82 | green=0; |
| yu_yu | 0:779a9ff709b7 | 83 | blue=1; |
| yu_yu | 0:779a9ff709b7 | 84 | }else if(judge_red && judge_blue){ |
| yu_yu | 0:779a9ff709b7 | 85 | red=0; |
| yu_yu | 0:779a9ff709b7 | 86 | green=1; |
| yu_yu | 0:779a9ff709b7 | 87 | blue=0; |
| yu_yu | 0:779a9ff709b7 | 88 | }else if(judge_blue && judge_green){ |
| yu_yu | 0:779a9ff709b7 | 89 | red=1; |
| yu_yu | 0:779a9ff709b7 | 90 | green=0; |
| yu_yu | 0:779a9ff709b7 | 91 | blue=0; |
| yu_yu | 0:779a9ff709b7 | 92 | }else if(judge_red){ |
| yu_yu | 0:779a9ff709b7 | 93 | red=0; |
| yu_yu | 0:779a9ff709b7 | 94 | green=1; |
| yu_yu | 0:779a9ff709b7 | 95 | blue=1; |
| yu_yu | 0:779a9ff709b7 | 96 | }else if(judge_green){ |
| yu_yu | 0:779a9ff709b7 | 97 | red=1; |
| yu_yu | 0:779a9ff709b7 | 98 | green=0; |
| yu_yu | 0:779a9ff709b7 | 99 | blue=1; |
| yu_yu | 0:779a9ff709b7 | 100 | }else if(judge_blue){ |
| yu_yu | 0:779a9ff709b7 | 101 | red=1; |
| yu_yu | 0:779a9ff709b7 | 102 | green=1; |
| yu_yu | 0:779a9ff709b7 | 103 | blue=0; |
| yu_yu | 0:779a9ff709b7 | 104 | }else{ |
| yu_yu | 0:779a9ff709b7 | 105 | red=1; |
| yu_yu | 0:779a9ff709b7 | 106 | green=1; |
| yu_yu | 0:779a9ff709b7 | 107 | blue=1; |
| yu_yu | 0:779a9ff709b7 | 108 | flag = 0; |
| yu_yu | 0:779a9ff709b7 | 109 | } |
| yu_yu | 0:779a9ff709b7 | 110 | return flag; |
| yu_yu | 0:779a9ff709b7 | 111 | } |
| yu_yu | 0:779a9ff709b7 | 112 | |
| yu_yu | 0:779a9ff709b7 | 113 | void TMR0_ISR(void) |
| yu_yu | 0:779a9ff709b7 | 114 | { |
| yu_yu | 0:779a9ff709b7 | 115 | static char i = 0; |
| yu_yu | 0:779a9ff709b7 | 116 | static short j = 0; |
| yu_yu | 0:779a9ff709b7 | 117 | switch(i){ |
| yu_yu | 0:779a9ff709b7 | 118 | case 0: |
| yu_yu | 0:779a9ff709b7 | 119 | bar0 = RGB(j, 0, BAR0); |
| yu_yu | 0:779a9ff709b7 | 120 | break; |
| yu_yu | 0:779a9ff709b7 | 121 | case 1: |
| yu_yu | 0:779a9ff709b7 | 122 | bar1 = RGB(j, 0, BAR1); |
| yu_yu | 0:779a9ff709b7 | 123 | break; |
| yu_yu | 0:779a9ff709b7 | 124 | case 2: |
| yu_yu | 0:779a9ff709b7 | 125 | bar2 = RGB(j, 0, BAR2); |
| yu_yu | 0:779a9ff709b7 | 126 | break; |
| yu_yu | 0:779a9ff709b7 | 127 | case 3: |
| yu_yu | 0:779a9ff709b7 | 128 | bar3 = RGB(j, 0, BAR3); |
| yu_yu | 0:779a9ff709b7 | 129 | break; |
| yu_yu | 0:779a9ff709b7 | 130 | case 4: |
| yu_yu | 0:779a9ff709b7 | 131 | bar4 = RGB(j, 0, BAR4); |
| yu_yu | 0:779a9ff709b7 | 132 | break; |
| yu_yu | 0:779a9ff709b7 | 133 | case 5: |
| yu_yu | 0:779a9ff709b7 | 134 | bar5 = RGB(j, 1, BAR5); |
| yu_yu | 0:779a9ff709b7 | 135 | break; |
| yu_yu | 0:779a9ff709b7 | 136 | case 6: |
| yu_yu | 0:779a9ff709b7 | 137 | bar6 = RGB(j, 1, BAR6); |
| yu_yu | 0:779a9ff709b7 | 138 | break; |
| yu_yu | 0:779a9ff709b7 | 139 | case 7: |
| yu_yu | 0:779a9ff709b7 | 140 | bar7 = RGB(j, 1, BAR7); |
| yu_yu | 0:779a9ff709b7 | 141 | break; |
| yu_yu | 0:779a9ff709b7 | 142 | case 8: |
| yu_yu | 0:779a9ff709b7 | 143 | bar8 = RGB(j, 1, BAR8); |
| yu_yu | 0:779a9ff709b7 | 144 | break; |
| yu_yu | 0:779a9ff709b7 | 145 | case 9: |
| yu_yu | 0:779a9ff709b7 | 146 | bar9 = RGB(j, 1, BAR9); |
| yu_yu | 0:779a9ff709b7 | 147 | break; |
| yu_yu | 0:779a9ff709b7 | 148 | } |
| yu_yu | 0:779a9ff709b7 | 149 | |
| yu_yu | 0:779a9ff709b7 | 150 | i++; |
| yu_yu | 0:779a9ff709b7 | 151 | j++; |
| yu_yu | 0:779a9ff709b7 | 152 | if(i > 9) |
| yu_yu | 0:779a9ff709b7 | 153 | i = 0; |
| yu_yu | 0:779a9ff709b7 | 154 | if(j > 180) |
| yu_yu | 0:779a9ff709b7 | 155 | j = 0; |
| yu_yu | 0:779a9ff709b7 | 156 | |
| yu_yu | 0:779a9ff709b7 | 157 | } |
| yu_yu | 0:779a9ff709b7 | 158 |