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@1:dc680896cbaa, 2020-10-15 (annotated)
- Committer:
- yu_yu
- Date:
- Thu Oct 15 13:59:53 2020 +0000
- Revision:
- 1:dc680896cbaa
- Parent:
- 0:779a9ff709b7
- Child:
- 2:8499d6246b2e
ver2
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 | 1:dc680896cbaa | 4 | #define BAR0 0x01 |
| yu_yu | 1:dc680896cbaa | 5 | #define BAR1 0x2 |
| yu_yu | 1:dc680896cbaa | 6 | #define BAR2 0x4 |
| yu_yu | 1:dc680896cbaa | 7 | #define BAR3 0x8 |
| yu_yu | 1:dc680896cbaa | 8 | #define BAR4 0x10 |
| yu_yu | 1:dc680896cbaa | 9 | #define BAR5 0x1 |
| yu_yu | 1:dc680896cbaa | 10 | #define BAR6 0x2 |
| yu_yu | 1:dc680896cbaa | 11 | #define BAR7 0x4 |
| yu_yu | 1:dc680896cbaa | 12 | #define BAR8 0x8 |
| yu_yu | 1:dc680896cbaa | 13 | #define BAR9 0x10 |
| 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 | 1:dc680896cbaa | 18 | DigitalOut red(D1); |
| yu_yu | 1:dc680896cbaa | 19 | DigitalOut blue(D0); |
| yu_yu | 1:dc680896cbaa | 20 | DigitalOut green(D2); |
| yu_yu | 0:779a9ff709b7 | 21 | |
| yu_yu | 1:dc680896cbaa | 22 | DigitalOut bar0(D12); |
| yu_yu | 1:dc680896cbaa | 23 | DigitalOut bar1(D11); |
| yu_yu | 1:dc680896cbaa | 24 | DigitalOut bar2(D10); |
| yu_yu | 1:dc680896cbaa | 25 | DigitalOut bar3(D9); |
| yu_yu | 1:dc680896cbaa | 26 | DigitalOut bar4(D8); |
| yu_yu | 1:dc680896cbaa | 27 | DigitalOut bar5(D7); |
| yu_yu | 1:dc680896cbaa | 28 | DigitalOut bar6(D6); |
| yu_yu | 1:dc680896cbaa | 29 | DigitalOut bar7(A0); |
| yu_yu | 1:dc680896cbaa | 30 | DigitalOut bar8(A1); |
| yu_yu | 1:dc680896cbaa | 31 | DigitalOut bar9(A2); |
| yu_yu | 0:779a9ff709b7 | 32 | |
| yu_yu | 0:779a9ff709b7 | 33 | Serial pc(USBTX, USBRX); |
| yu_yu | 0:779a9ff709b7 | 34 | Ticker timer; |
| yu_yu | 0:779a9ff709b7 | 35 | |
| yu_yu | 0:779a9ff709b7 | 36 | char RGB(int, char, char); |
| yu_yu | 0:779a9ff709b7 | 37 | void TMR0_ISR(); |
| yu_yu | 0:779a9ff709b7 | 38 | |
| yu_yu | 0:779a9ff709b7 | 39 | int main(){ |
| yu_yu | 0:779a9ff709b7 | 40 | bool tim_flag = 0; |
| yu_yu | 1:dc680896cbaa | 41 | char tim = 250; |
| yu_yu | 1:dc680896cbaa | 42 | char chr; |
| yu_yu | 1:dc680896cbaa | 43 | timer.attach(&TMR0_ISR, 0.001); |
| yu_yu | 0:779a9ff709b7 | 44 | pc.baud(115200); |
| yu_yu | 0:779a9ff709b7 | 45 | while(1){ |
| yu_yu | 1:dc680896cbaa | 46 | //pc.printf("order0"); |
| yu_yu | 1:dc680896cbaa | 47 | pc.scanf("%c", &chr); |
| yu_yu | 1:dc680896cbaa | 48 | |
| yu_yu | 1:dc680896cbaa | 49 | if(chr == 'w'){ |
| yu_yu | 1:dc680896cbaa | 50 | tim ++; |
| yu_yu | 0:779a9ff709b7 | 51 | tim_flag = 1; |
| yu_yu | 1:dc680896cbaa | 52 | }else if(chr == 's'){ |
| yu_yu | 1:dc680896cbaa | 53 | tim --; |
| yu_yu | 0:779a9ff709b7 | 54 | tim_flag = 1; |
| yu_yu | 0:779a9ff709b7 | 55 | } |
| yu_yu | 0:779a9ff709b7 | 56 | |
| yu_yu | 0:779a9ff709b7 | 57 | if(tim_flag){ |
| yu_yu | 1:dc680896cbaa | 58 | pc.printf("period: %d, freq: %f\n", tim, float(1/tim)); |
| 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 | 1:dc680896cbaa | 70 | judge_red = r0[row][col] & bar; |
| yu_yu | 1:dc680896cbaa | 71 | judge_green = g0[row][col] & bar; |
| yu_yu | 1:dc680896cbaa | 72 | judge_blue = b0[row][col] & bar; |
| yu_yu | 0:779a9ff709b7 | 73 | |
| yu_yu | 1:dc680896cbaa | 74 | char 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 | 1:dc680896cbaa | 80 | //pc.printf(", order1"); |
| yu_yu | 0:779a9ff709b7 | 81 | }else if(judge_red && judge_green){ |
| yu_yu | 0:779a9ff709b7 | 82 | red=0; |
| yu_yu | 0:779a9ff709b7 | 83 | green=0; |
| yu_yu | 0:779a9ff709b7 | 84 | blue=1; |
| yu_yu | 1:dc680896cbaa | 85 | |
| yu_yu | 0:779a9ff709b7 | 86 | }else if(judge_red && judge_blue){ |
| yu_yu | 0:779a9ff709b7 | 87 | red=0; |
| yu_yu | 0:779a9ff709b7 | 88 | green=1; |
| yu_yu | 0:779a9ff709b7 | 89 | blue=0; |
| yu_yu | 0:779a9ff709b7 | 90 | }else if(judge_blue && judge_green){ |
| yu_yu | 0:779a9ff709b7 | 91 | red=1; |
| yu_yu | 0:779a9ff709b7 | 92 | green=0; |
| yu_yu | 0:779a9ff709b7 | 93 | blue=0; |
| yu_yu | 0:779a9ff709b7 | 94 | }else if(judge_red){ |
| yu_yu | 0:779a9ff709b7 | 95 | red=0; |
| yu_yu | 0:779a9ff709b7 | 96 | green=1; |
| yu_yu | 0:779a9ff709b7 | 97 | blue=1; |
| yu_yu | 0:779a9ff709b7 | 98 | }else if(judge_green){ |
| yu_yu | 0:779a9ff709b7 | 99 | red=1; |
| yu_yu | 0:779a9ff709b7 | 100 | green=0; |
| yu_yu | 0:779a9ff709b7 | 101 | blue=1; |
| yu_yu | 0:779a9ff709b7 | 102 | }else if(judge_blue){ |
| yu_yu | 0:779a9ff709b7 | 103 | red=1; |
| yu_yu | 0:779a9ff709b7 | 104 | green=1; |
| yu_yu | 0:779a9ff709b7 | 105 | blue=0; |
| yu_yu | 0:779a9ff709b7 | 106 | }else{ |
| yu_yu | 0:779a9ff709b7 | 107 | red=1; |
| yu_yu | 0:779a9ff709b7 | 108 | green=1; |
| yu_yu | 0:779a9ff709b7 | 109 | blue=1; |
| yu_yu | 0:779a9ff709b7 | 110 | flag = 0; |
| yu_yu | 0:779a9ff709b7 | 111 | } |
| yu_yu | 0:779a9ff709b7 | 112 | return flag; |
| yu_yu | 0:779a9ff709b7 | 113 | } |
| yu_yu | 0:779a9ff709b7 | 114 | |
| yu_yu | 0:779a9ff709b7 | 115 | void TMR0_ISR(void) |
| yu_yu | 0:779a9ff709b7 | 116 | { |
| yu_yu | 0:779a9ff709b7 | 117 | static char i = 0; |
| yu_yu | 0:779a9ff709b7 | 118 | static short j = 0; |
| yu_yu | 1:dc680896cbaa | 119 | static char time = 0; |
| yu_yu | 1:dc680896cbaa | 120 | static char phase = 0; |
| yu_yu | 1:dc680896cbaa | 121 | static char red_v[180][2] = {0}; |
| yu_yu | 1:dc680896cbaa | 122 | static char green_v[180][2] = {0}; |
| yu_yu | 1:dc680896cbaa | 123 | static char blue_v[180][2] = {0}; |
| yu_yu | 1:dc680896cbaa | 124 | |
| yu_yu | 1:dc680896cbaa | 125 | // if(time == 50){ |
| yu_yu | 1:dc680896cbaa | 126 | // phase ++; |
| yu_yu | 1:dc680896cbaa | 127 | // time = 0; |
| yu_yu | 1:dc680896cbaa | 128 | // switch(phase){ |
| yu_yu | 1:dc680896cbaa | 129 | // case 1: |
| yu_yu | 1:dc680896cbaa | 130 | // memcpy(red_v, r0, sizeof(emp_r)); |
| yu_yu | 1:dc680896cbaa | 131 | // memcpy(green_v, g0, sizeof(emp_g)); |
| yu_yu | 1:dc680896cbaa | 132 | // memcpy(blue_v, b0, sizeof(emp_b)); |
| yu_yu | 1:dc680896cbaa | 133 | // break; |
| yu_yu | 1:dc680896cbaa | 134 | // case 2: |
| yu_yu | 1:dc680896cbaa | 135 | // memcpy(red_v, r0, sizeof(emp_r)); |
| yu_yu | 1:dc680896cbaa | 136 | // memcpy(green_v, g0, sizeof(emp_g)); |
| yu_yu | 1:dc680896cbaa | 137 | // memcpy(blue_v, b0, sizeof(emp_b)); |
| yu_yu | 1:dc680896cbaa | 138 | // break; |
| yu_yu | 1:dc680896cbaa | 139 | // case 3: |
| yu_yu | 1:dc680896cbaa | 140 | // memcpy(red_v, r0, sizeof(emp_r)); |
| yu_yu | 1:dc680896cbaa | 141 | // memcpy(green_v, g0, sizeof(emp_g)); |
| yu_yu | 1:dc680896cbaa | 142 | // memcpy(blue_v, b0, sizeof(emp_b)); |
| yu_yu | 1:dc680896cbaa | 143 | // break; |
| yu_yu | 1:dc680896cbaa | 144 | // case 4: |
| yu_yu | 1:dc680896cbaa | 145 | // memcpy(red_v, emp_r, sizeof(emp_r)); |
| yu_yu | 1:dc680896cbaa | 146 | // memcpy(green_v, emp_g, sizeof(emp_g)); |
| yu_yu | 1:dc680896cbaa | 147 | // memcpy(blue_v, emp_b, sizeof(emp_b)); |
| yu_yu | 1:dc680896cbaa | 148 | // wait(5); |
| yu_yu | 1:dc680896cbaa | 149 | // break; |
| yu_yu | 1:dc680896cbaa | 150 | // case 5: |
| yu_yu | 1:dc680896cbaa | 151 | // memcpy(red_v, emp_r, sizeof(emp_r)); |
| yu_yu | 1:dc680896cbaa | 152 | // memcpy(green_v, emp_g, sizeof(emp_g)); |
| yu_yu | 1:dc680896cbaa | 153 | // memcpy(blue_v, emp_b, sizeof(emp_b)); |
| yu_yu | 1:dc680896cbaa | 154 | // break; |
| yu_yu | 1:dc680896cbaa | 155 | // case 6: |
| yu_yu | 1:dc680896cbaa | 156 | // memcpy(red_v, emp_r, sizeof(emp_r)); |
| yu_yu | 1:dc680896cbaa | 157 | // memcpy(green_v, emp_g, sizeof(emp_g)); |
| yu_yu | 1:dc680896cbaa | 158 | // memcpy(blue_v, emp_b, sizeof(emp_b)); |
| yu_yu | 1:dc680896cbaa | 159 | // break; |
| yu_yu | 1:dc680896cbaa | 160 | // case 7: |
| yu_yu | 1:dc680896cbaa | 161 | // memcpy(red_v, emp_r, sizeof(emp_r)); |
| yu_yu | 1:dc680896cbaa | 162 | // memcpy(green_v, emp_g, sizeof(emp_g)); |
| yu_yu | 1:dc680896cbaa | 163 | // memcpy(blue_v, emp_b, sizeof(emp_b)); |
| yu_yu | 1:dc680896cbaa | 164 | // break; |
| yu_yu | 1:dc680896cbaa | 165 | // case 8: |
| yu_yu | 1:dc680896cbaa | 166 | // memcpy(red_v, emp_r, sizeof(emp_r)); |
| yu_yu | 1:dc680896cbaa | 167 | // memcpy(green_v, emp_g, sizeof(emp_g)); |
| yu_yu | 1:dc680896cbaa | 168 | // memcpy(blue_v, emp_b, sizeof(emp_b)); |
| yu_yu | 1:dc680896cbaa | 169 | // wait(5); |
| yu_yu | 1:dc680896cbaa | 170 | // break; |
| yu_yu | 1:dc680896cbaa | 171 | // case 9: |
| yu_yu | 1:dc680896cbaa | 172 | // memcpy(red_v, emp_r, sizeof(emp_r)); |
| yu_yu | 1:dc680896cbaa | 173 | // memcpy(green_v, emp_g, sizeof(emp_g)); |
| yu_yu | 1:dc680896cbaa | 174 | // memcpy(blue_v, emp_b, sizeof(emp_b)); |
| yu_yu | 1:dc680896cbaa | 175 | // break; |
| yu_yu | 1:dc680896cbaa | 176 | // case 10: |
| yu_yu | 1:dc680896cbaa | 177 | // memcpy(red_v, emp_r, sizeof(emp_r)); |
| yu_yu | 1:dc680896cbaa | 178 | // memcpy(green_v, emp_g, sizeof(emp_g)); |
| yu_yu | 1:dc680896cbaa | 179 | // memcpy(blue_v, emp_b, sizeof(emp_b)); |
| yu_yu | 1:dc680896cbaa | 180 | // break; |
| yu_yu | 1:dc680896cbaa | 181 | // case 11: |
| yu_yu | 1:dc680896cbaa | 182 | // memcpy(red_v, emp_r, sizeof(emp_r)); |
| yu_yu | 1:dc680896cbaa | 183 | // memcpy(green_v, emp_g, sizeof(emp_g)); |
| yu_yu | 1:dc680896cbaa | 184 | // memcpy(blue_v, emp_b, sizeof(emp_b)); |
| yu_yu | 1:dc680896cbaa | 185 | // break; |
| yu_yu | 1:dc680896cbaa | 186 | // case 12: |
| yu_yu | 1:dc680896cbaa | 187 | // memcpy(red_v, emp_r, sizeof(emp_r)); |
| yu_yu | 1:dc680896cbaa | 188 | // memcpy(green_v, emp_g, sizeof(emp_g)); |
| yu_yu | 1:dc680896cbaa | 189 | // memcpy(blue_v, emp_b, sizeof(emp_b)); |
| yu_yu | 1:dc680896cbaa | 190 | // wait(5); |
| yu_yu | 1:dc680896cbaa | 191 | // break; |
| yu_yu | 1:dc680896cbaa | 192 | // } |
| yu_yu | 1:dc680896cbaa | 193 | // } |
| yu_yu | 1:dc680896cbaa | 194 | pc.printf("%d\n", i); |
| yu_yu | 1:dc680896cbaa | 195 | |
| yu_yu | 0:779a9ff709b7 | 196 | switch(i){ |
| yu_yu | 0:779a9ff709b7 | 197 | case 0: |
| yu_yu | 1:dc680896cbaa | 198 | bar9 = 0; |
| yu_yu | 1:dc680896cbaa | 199 | bar0 = RGB(j, 0, BAR0 ); |
| yu_yu | 0:779a9ff709b7 | 200 | break; |
| yu_yu | 0:779a9ff709b7 | 201 | case 1: |
| yu_yu | 1:dc680896cbaa | 202 | bar0 = 0; |
| yu_yu | 1:dc680896cbaa | 203 | bar1 = RGB(j, 0, BAR1 ); |
| yu_yu | 0:779a9ff709b7 | 204 | break; |
| yu_yu | 0:779a9ff709b7 | 205 | case 2: |
| yu_yu | 1:dc680896cbaa | 206 | bar1 = 0; |
| yu_yu | 1:dc680896cbaa | 207 | bar2 = RGB(j, 0, BAR2 ); |
| yu_yu | 0:779a9ff709b7 | 208 | break; |
| yu_yu | 0:779a9ff709b7 | 209 | case 3: |
| yu_yu | 1:dc680896cbaa | 210 | bar2 = 0; |
| yu_yu | 1:dc680896cbaa | 211 | bar3 = RGB(j, 0, BAR3 ); |
| yu_yu | 0:779a9ff709b7 | 212 | break; |
| yu_yu | 0:779a9ff709b7 | 213 | case 4: |
| yu_yu | 1:dc680896cbaa | 214 | bar3 = 0; |
| yu_yu | 1:dc680896cbaa | 215 | bar4 = RGB(j, 0, BAR4 ); |
| yu_yu | 0:779a9ff709b7 | 216 | break; |
| yu_yu | 0:779a9ff709b7 | 217 | case 5: |
| yu_yu | 1:dc680896cbaa | 218 | bar4 = 0; |
| yu_yu | 1:dc680896cbaa | 219 | bar5 = RGB(j, 1, BAR5 ); |
| yu_yu | 0:779a9ff709b7 | 220 | break; |
| yu_yu | 0:779a9ff709b7 | 221 | case 6: |
| yu_yu | 1:dc680896cbaa | 222 | bar5 = 0; |
| yu_yu | 1:dc680896cbaa | 223 | bar6 = RGB(j, 1, BAR6 ); |
| yu_yu | 0:779a9ff709b7 | 224 | break; |
| yu_yu | 0:779a9ff709b7 | 225 | case 7: |
| yu_yu | 1:dc680896cbaa | 226 | bar6 = 0; |
| yu_yu | 1:dc680896cbaa | 227 | bar7 = RGB(j, 1, BAR7 ); |
| yu_yu | 0:779a9ff709b7 | 228 | break; |
| yu_yu | 0:779a9ff709b7 | 229 | case 8: |
| yu_yu | 1:dc680896cbaa | 230 | bar7 = 0; |
| yu_yu | 1:dc680896cbaa | 231 | bar8 = RGB(j, 1, BAR8 ); |
| yu_yu | 0:779a9ff709b7 | 232 | break; |
| yu_yu | 0:779a9ff709b7 | 233 | case 9: |
| yu_yu | 1:dc680896cbaa | 234 | bar8 = 0; |
| yu_yu | 1:dc680896cbaa | 235 | bar9 = RGB(j, 1, BAR9 ); |
| yu_yu | 0:779a9ff709b7 | 236 | break; |
| yu_yu | 0:779a9ff709b7 | 237 | } |
| yu_yu | 0:779a9ff709b7 | 238 | |
| yu_yu | 0:779a9ff709b7 | 239 | i++; |
| yu_yu | 0:779a9ff709b7 | 240 | j++; |
| yu_yu | 0:779a9ff709b7 | 241 | if(i > 9) |
| yu_yu | 0:779a9ff709b7 | 242 | i = 0; |
| yu_yu | 0:779a9ff709b7 | 243 | if(j > 180) |
| yu_yu | 0:779a9ff709b7 | 244 | j = 0; |
| yu_yu | 0:779a9ff709b7 | 245 | |
| yu_yu | 1:dc680896cbaa | 246 | |
| yu_yu | 0:779a9ff709b7 | 247 | } |
| yu_yu | 0:779a9ff709b7 | 248 |