有哉 藤田 / Mbed 2 deprecated 2020_verserwriter

Dependencies:   mbed

Committer:
yu_yu
Date:
Fri Oct 16 12:57:12 2020 +0000
Revision:
2:8499d6246b2e
Parent:
1:dc680896cbaa
Child:
3:fda302b6edd8
ver2.1

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 2:8499d6246b2e 15 const char bar[10] = {BAR0, BAR1, BAR2, BAR3, BAR4, BAR5, BAR6, BAR7, BAR8, BAR9};
yu_yu 2:8499d6246b2e 16
yu_yu 0:779a9ff709b7 17 #define TIME 25 //us
yu_yu 0:779a9ff709b7 18
yu_yu 0:779a9ff709b7 19
yu_yu 1:dc680896cbaa 20 DigitalOut red(D1);
yu_yu 1:dc680896cbaa 21 DigitalOut blue(D0);
yu_yu 1:dc680896cbaa 22 DigitalOut green(D2);
yu_yu 0:779a9ff709b7 23
yu_yu 1:dc680896cbaa 24 DigitalOut bar0(D12);
yu_yu 1:dc680896cbaa 25 DigitalOut bar1(D11);
yu_yu 1:dc680896cbaa 26 DigitalOut bar2(D10);
yu_yu 1:dc680896cbaa 27 DigitalOut bar3(D9);
yu_yu 1:dc680896cbaa 28 DigitalOut bar4(D8);
yu_yu 1:dc680896cbaa 29 DigitalOut bar5(D7);
yu_yu 1:dc680896cbaa 30 DigitalOut bar6(D6);
yu_yu 1:dc680896cbaa 31 DigitalOut bar7(A0);
yu_yu 1:dc680896cbaa 32 DigitalOut bar8(A1);
yu_yu 1:dc680896cbaa 33 DigitalOut bar9(A2);
yu_yu 0:779a9ff709b7 34
yu_yu 0:779a9ff709b7 35 Serial pc(USBTX, USBRX);
yu_yu 0:779a9ff709b7 36 Ticker timer;
yu_yu 0:779a9ff709b7 37
yu_yu 2:8499d6246b2e 38 char RGB(char , char, char);
yu_yu 2:8499d6246b2e 39 void TMred0_ISR();
yu_yu 2:8499d6246b2e 40 void swap_ary(char (*after)[2], char const before[180][2]){
yu_yu 2:8499d6246b2e 41 for(int i = 0; i < 180; i++){
yu_yu 2:8499d6246b2e 42 for(int j = 0; j < 2;j++){
yu_yu 2:8499d6246b2e 43 after[i][j] = before[i][j];
yu_yu 2:8499d6246b2e 44 pc.printf("test\n");
yu_yu 2:8499d6246b2e 45 }
yu_yu 2:8499d6246b2e 46 }
yu_yu 2:8499d6246b2e 47 }
yu_yu 2:8499d6246b2e 48 void print_ary(char (*after)[2]){
yu_yu 2:8499d6246b2e 49 for(int i = 0; i < 180; i++){
yu_yu 2:8499d6246b2e 50 for(int j = 0; j < 2;j++){
yu_yu 2:8499d6246b2e 51 pc.printf("%d\n", after[i][j]);
yu_yu 2:8499d6246b2e 52 }
yu_yu 2:8499d6246b2e 53 }
yu_yu 2:8499d6246b2e 54 }
yu_yu 0:779a9ff709b7 55 int main(){
yu_yu 0:779a9ff709b7 56 bool tim_flag = 0;
yu_yu 1:dc680896cbaa 57 char tim = 250;
yu_yu 1:dc680896cbaa 58 char chr;
yu_yu 2:8499d6246b2e 59 timer.attach(&TMred0_ISR, 0.1);
yu_yu 0:779a9ff709b7 60 pc.baud(115200);
yu_yu 0:779a9ff709b7 61 while(1){
yu_yu 2:8499d6246b2e 62 //pc.printf("ordered0");
yu_yu 1:dc680896cbaa 63
yu_yu 1:dc680896cbaa 64 if(chr == 'w'){
yu_yu 1:dc680896cbaa 65 tim ++;
yu_yu 0:779a9ff709b7 66 tim_flag = 1;
yu_yu 1:dc680896cbaa 67 }else if(chr == 's'){
yu_yu 1:dc680896cbaa 68 tim --;
yu_yu 0:779a9ff709b7 69 tim_flag = 1;
yu_yu 0:779a9ff709b7 70 }
yu_yu 0:779a9ff709b7 71
yu_yu 0:779a9ff709b7 72 if(tim_flag){
yu_yu 1:dc680896cbaa 73 pc.printf("period: %d, freq: %f\n", tim, float(1/tim));
yu_yu 0:779a9ff709b7 74 timer.detach();
yu_yu 2:8499d6246b2e 75 timer.attach_us(&TMred0_ISR, tim);
yu_yu 0:779a9ff709b7 76 tim_flag = 0;
yu_yu 0:779a9ff709b7 77 }
yu_yu 0:779a9ff709b7 78 }
yu_yu 0:779a9ff709b7 79 }
yu_yu 2:8499d6246b2e 80
yu_yu 2:8499d6246b2e 81 void TMred0_ISR(void)
yu_yu 2:8499d6246b2e 82 {
yu_yu 2:8499d6246b2e 83 static char i = 0;
yu_yu 2:8499d6246b2e 84 static short j = 0;
yu_yu 2:8499d6246b2e 85 static char time = 0;
yu_yu 2:8499d6246b2e 86 static char phase = 0;
yu_yu 2:8499d6246b2e 87 static char red_v[180][2] = {0};
yu_yu 2:8499d6246b2e 88 static char green_v[180][2] = {0};
yu_yu 2:8499d6246b2e 89 static char blue_v[180][2] = {0};
yu_yu 2:8499d6246b2e 90 static char col = 0;
yu_yu 0:779a9ff709b7 91 char judge_red = 0, judge_green = 0, judge_blue = 0;
yu_yu 0:779a9ff709b7 92
yu_yu 2:8499d6246b2e 93 pc.printf("%d\n", time);
yu_yu 2:8499d6246b2e 94 if(time == 50){
yu_yu 2:8499d6246b2e 95 phase ++;
yu_yu 2:8499d6246b2e 96 time = 0;
yu_yu 2:8499d6246b2e 97 switch(phase){
yu_yu 2:8499d6246b2e 98 case 1:
yu_yu 2:8499d6246b2e 99 swap_ary(red_v, full);
yu_yu 2:8499d6246b2e 100 swap_ary(green_v, emp);
yu_yu 2:8499d6246b2e 101 swap_ary(blue_v, emp);
yu_yu 2:8499d6246b2e 102 print_ary(red_v);
yu_yu 2:8499d6246b2e 103 break;
yu_yu 2:8499d6246b2e 104 case 2:
yu_yu 2:8499d6246b2e 105 swap_ary(red_v, emp);
yu_yu 2:8499d6246b2e 106 swap_ary(green_v, full);
yu_yu 2:8499d6246b2e 107 swap_ary(blue_v, emp);
yu_yu 2:8499d6246b2e 108 break;
yu_yu 2:8499d6246b2e 109 case 3:
yu_yu 2:8499d6246b2e 110 swap_ary(red_v, emp);
yu_yu 2:8499d6246b2e 111 swap_ary(green_v, emp);
yu_yu 2:8499d6246b2e 112 swap_ary(blue_v, full);
yu_yu 2:8499d6246b2e 113 break;
yu_yu 2:8499d6246b2e 114 case 4:
yu_yu 2:8499d6246b2e 115 swap_ary(red_v, emp);
yu_yu 2:8499d6246b2e 116 swap_ary(green_v, emp);
yu_yu 2:8499d6246b2e 117 swap_ary(blue_v, emp);
yu_yu 2:8499d6246b2e 118 phase = 0;
yu_yu 2:8499d6246b2e 119 break;
yu_yu 2:8499d6246b2e 120 }
yu_yu 2:8499d6246b2e 121 }
yu_yu 2:8499d6246b2e 122 //pc.printf("%d\n", i);
yu_yu 2:8499d6246b2e 123
yu_yu 2:8499d6246b2e 124 judge_red = red_v[j][col] & bar[i];
yu_yu 2:8499d6246b2e 125 judge_green = green_v[j][col] & bar[i];
yu_yu 2:8499d6246b2e 126 judge_blue = blue_v[j][col] & bar[i];
yu_yu 2:8499d6246b2e 127
yu_yu 2:8499d6246b2e 128 switch(i){
yu_yu 2:8499d6246b2e 129 case 0:
yu_yu 2:8499d6246b2e 130 bar9 = 0;
yu_yu 2:8499d6246b2e 131 bar0 = RGB(judge_red, judge_green, judge_blue);
yu_yu 2:8499d6246b2e 132 break;
yu_yu 2:8499d6246b2e 133 case 1:
yu_yu 2:8499d6246b2e 134 bar0 = 0;
yu_yu 2:8499d6246b2e 135 bar1 = RGB( judge_red, judge_green, judge_blue);
yu_yu 2:8499d6246b2e 136 break;
yu_yu 2:8499d6246b2e 137 case 2:
yu_yu 2:8499d6246b2e 138 bar1 = 0;
yu_yu 2:8499d6246b2e 139 bar2 = RGB(judge_red, judge_green, judge_blue);
yu_yu 2:8499d6246b2e 140 break;
yu_yu 2:8499d6246b2e 141 case 3:
yu_yu 2:8499d6246b2e 142 bar2 = 0;
yu_yu 2:8499d6246b2e 143 bar3 = RGB(judge_red, judge_green, judge_blue);
yu_yu 2:8499d6246b2e 144 break;
yu_yu 2:8499d6246b2e 145 case 4:
yu_yu 2:8499d6246b2e 146 bar3 = 0;
yu_yu 2:8499d6246b2e 147 bar4 = RGB(judge_red, judge_green, judge_blue);
yu_yu 2:8499d6246b2e 148 col = 1;
yu_yu 2:8499d6246b2e 149 break;
yu_yu 2:8499d6246b2e 150 case 5:
yu_yu 2:8499d6246b2e 151 bar4 = 0;
yu_yu 2:8499d6246b2e 152 bar5 = RGB(judge_red, judge_green, judge_blue);
yu_yu 2:8499d6246b2e 153 break;
yu_yu 2:8499d6246b2e 154 case 6:
yu_yu 2:8499d6246b2e 155 bar5 = 0;
yu_yu 2:8499d6246b2e 156 bar6 = RGB(judge_red, judge_green, judge_blue);
yu_yu 2:8499d6246b2e 157 break;
yu_yu 2:8499d6246b2e 158 case 7:
yu_yu 2:8499d6246b2e 159 bar6 = 0;
yu_yu 2:8499d6246b2e 160 bar7 = RGB(judge_red, judge_green, judge_blue);
yu_yu 2:8499d6246b2e 161 break;
yu_yu 2:8499d6246b2e 162 case 8:
yu_yu 2:8499d6246b2e 163 bar7 = 0;
yu_yu 2:8499d6246b2e 164 bar8 = RGB(judge_red, judge_green, judge_blue);
yu_yu 2:8499d6246b2e 165 break;
yu_yu 2:8499d6246b2e 166 case 9:
yu_yu 2:8499d6246b2e 167 bar8 = 0;
yu_yu 2:8499d6246b2e 168 bar9 = RGB(judge_red, judge_green, judge_blue);
yu_yu 2:8499d6246b2e 169 col = 0;
yu_yu 2:8499d6246b2e 170 break;
yu_yu 2:8499d6246b2e 171 }
yu_yu 2:8499d6246b2e 172
yu_yu 2:8499d6246b2e 173 i++;
yu_yu 2:8499d6246b2e 174 j++;
yu_yu 2:8499d6246b2e 175 time++;
yu_yu 2:8499d6246b2e 176 if(i > 9)
yu_yu 2:8499d6246b2e 177 i = 0;
yu_yu 2:8499d6246b2e 178 if(j > 180)
yu_yu 2:8499d6246b2e 179 j = 0;
yu_yu 2:8499d6246b2e 180
yu_yu 2:8499d6246b2e 181
yu_yu 2:8499d6246b2e 182 }
yu_yu 2:8499d6246b2e 183
yu_yu 2:8499d6246b2e 184 char RGB(char judge_red, char judge_green, char judge_blue){
yu_yu 2:8499d6246b2e 185 char color;
yu_yu 0:779a9ff709b7 186
yu_yu 1:dc680896cbaa 187 char flag = 1;
yu_yu 0:779a9ff709b7 188
yu_yu 0:779a9ff709b7 189 if(judge_red && judge_green && judge_blue){
yu_yu 0:779a9ff709b7 190 red=0;
yu_yu 0:779a9ff709b7 191 green=0;
yu_yu 0:779a9ff709b7 192 blue=0;
yu_yu 1:dc680896cbaa 193 //pc.printf(", order1");
yu_yu 0:779a9ff709b7 194 }else if(judge_red && judge_green){
yu_yu 0:779a9ff709b7 195 red=0;
yu_yu 0:779a9ff709b7 196 green=0;
yu_yu 0:779a9ff709b7 197 blue=1;
yu_yu 1:dc680896cbaa 198
yu_yu 0:779a9ff709b7 199 }else if(judge_red && judge_blue){
yu_yu 0:779a9ff709b7 200 red=0;
yu_yu 0:779a9ff709b7 201 green=1;
yu_yu 0:779a9ff709b7 202 blue=0;
yu_yu 0:779a9ff709b7 203 }else if(judge_blue && judge_green){
yu_yu 0:779a9ff709b7 204 red=1;
yu_yu 0:779a9ff709b7 205 green=0;
yu_yu 0:779a9ff709b7 206 blue=0;
yu_yu 0:779a9ff709b7 207 }else if(judge_red){
yu_yu 0:779a9ff709b7 208 red=0;
yu_yu 0:779a9ff709b7 209 green=1;
yu_yu 0:779a9ff709b7 210 blue=1;
yu_yu 0:779a9ff709b7 211 }else if(judge_green){
yu_yu 0:779a9ff709b7 212 red=1;
yu_yu 0:779a9ff709b7 213 green=0;
yu_yu 0:779a9ff709b7 214 blue=1;
yu_yu 0:779a9ff709b7 215 }else if(judge_blue){
yu_yu 0:779a9ff709b7 216 red=1;
yu_yu 0:779a9ff709b7 217 green=1;
yu_yu 0:779a9ff709b7 218 blue=0;
yu_yu 0:779a9ff709b7 219 }else{
yu_yu 0:779a9ff709b7 220 red=1;
yu_yu 0:779a9ff709b7 221 green=1;
yu_yu 0:779a9ff709b7 222 blue=1;
yu_yu 0:779a9ff709b7 223 flag = 0;
yu_yu 0:779a9ff709b7 224 }
yu_yu 0:779a9ff709b7 225 return flag;
yu_yu 0:779a9ff709b7 226 }
yu_yu 0:779a9ff709b7 227