有哉 藤田 / Mbed 2 deprecated 2020_verserwriter

Dependencies:   mbed

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?

UserRevisionLine numberNew 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