有哉 藤田 / Mbed 2 deprecated 2020_verserwriter

Dependencies:   mbed

Revision:
2:8499d6246b2e
Parent:
1:dc680896cbaa
Child:
3:fda302b6edd8
diff -r dc680896cbaa -r 8499d6246b2e main.cpp
--- a/main.cpp	Thu Oct 15 13:59:53 2020 +0000
+++ b/main.cpp	Fri Oct 16 12:57:12 2020 +0000
@@ -12,6 +12,8 @@
 #define BAR8 0x8
 #define BAR9 0x10
 
+const char bar[10] = {BAR0, BAR1, BAR2, BAR3, BAR4, BAR5, BAR6, BAR7, BAR8, BAR9};
+
 #define TIME 25     //us
 
 
@@ -33,18 +35,31 @@
 Serial pc(USBTX, USBRX);
 Ticker timer;
 
-char RGB(int, char, char);
-void TMR0_ISR();
-
+char RGB(char , char, char);
+void TMred0_ISR();
+void swap_ary(char (*after)[2], char const before[180][2]){
+    for(int i = 0; i < 180; i++){
+        for(int j = 0; j < 2;j++){
+            after[i][j] = before[i][j];
+            pc.printf("test\n");
+        }
+    }
+}
+void print_ary(char (*after)[2]){
+    for(int i = 0; i < 180; i++){
+        for(int j = 0; j < 2;j++){
+            pc.printf("%d\n", after[i][j]);
+        }
+    }
+}
 int main(){
     bool tim_flag = 0;
     char tim = 250;
     char chr;
-    timer.attach(&TMR0_ISR, 0.001);
+    timer.attach(&TMred0_ISR, 0.1);
     pc.baud(115200);
     while(1){
-        //pc.printf("order0");
-        pc.scanf("%c", &chr);
+        //pc.printf("ordered0");
         
         if(chr == 'w'){
             tim ++;
@@ -57,19 +72,117 @@
         if(tim_flag){
             pc.printf("period: %d, freq: %f\n", tim, float(1/tim));
             timer.detach();
-            timer.attach_us(&TMR0_ISR, tim);
+            timer.attach_us(&TMred0_ISR, tim);
             tim_flag = 0;
         }
     }
 }
- 
-char RGB(int row, char col, char bar){
-    char color;
+
+void TMred0_ISR(void)
+{
+    static char i = 0;
+    static short j = 0;
+    static char time = 0;
+    static char phase = 0;
+    static char red_v[180][2] = {0};
+    static char green_v[180][2] = {0};
+    static char blue_v[180][2] = {0};
+    static char col = 0;
     char judge_red = 0, judge_green = 0, judge_blue = 0;
 
-    judge_red = r0[row][col] & bar;
-    judge_green = g0[row][col] & bar;
-    judge_blue = b0[row][col] & bar;
+    pc.printf("%d\n", time);
+    if(time == 50){
+        phase ++;
+        time = 0;
+        switch(phase){
+            case 1:
+                swap_ary(red_v, full);
+                swap_ary(green_v, emp);
+                swap_ary(blue_v, emp);
+                    print_ary(red_v);
+                break;
+            case 2:
+                swap_ary(red_v, emp);
+                swap_ary(green_v, full);
+                swap_ary(blue_v, emp);
+                break;
+            case 3:
+                swap_ary(red_v, emp);
+                swap_ary(green_v, emp);
+                swap_ary(blue_v, full);
+                break;
+            case 4:
+                swap_ary(red_v, emp);
+                swap_ary(green_v, emp);
+                swap_ary(blue_v, emp);
+                phase = 0;
+                break;
+        }
+    }
+    //pc.printf("%d\n", i);
+
+    judge_red = red_v[j][col] & bar[i];
+    judge_green = green_v[j][col] & bar[i];
+    judge_blue = blue_v[j][col] & bar[i];
+    
+    switch(i){
+        case 0:
+            bar9 = 0;
+            bar0 = RGB(judge_red, judge_green, judge_blue);
+            break;
+        case 1:
+            bar0 = 0;
+            bar1 = RGB( judge_red, judge_green, judge_blue);            
+            break;
+        case 2:
+            bar1 = 0;
+            bar2 = RGB(judge_red, judge_green, judge_blue);
+            break;
+        case 3:
+            bar2 = 0;
+            bar3 = RGB(judge_red, judge_green, judge_blue);
+            break;
+        case 4:
+            bar3 = 0;
+            bar4 = RGB(judge_red, judge_green, judge_blue);
+            col = 1;
+            break;
+        case 5:
+            bar4 = 0;
+            bar5 = RGB(judge_red, judge_green, judge_blue);
+            break;
+        case 6:
+            bar5 = 0;
+            bar6 = RGB(judge_red, judge_green, judge_blue);
+            break;
+        case 7:
+            bar6 = 0;
+            bar7 = RGB(judge_red, judge_green, judge_blue);
+            break;
+        case 8:
+            bar7 = 0;
+            bar8 = RGB(judge_red, judge_green, judge_blue);
+            break;
+        case 9:
+            bar8 = 0;
+            bar9 = RGB(judge_red, judge_green, judge_blue);
+            col = 0;
+            break; 
+    }
+    
+    i++;
+    j++;
+    time++;
+    if(i > 9)
+        i = 0;
+    if(j > 180)
+        j = 0;
+
+
+}
+
+char RGB(char judge_red, char judge_green, char judge_blue){
+    char color;
     
     char flag = 1;
     
@@ -112,137 +225,3 @@
     return flag;
 }
 
-void TMR0_ISR(void)
-{
-    static char i = 0;
-    static short j = 0;
-    static char time = 0;
-    static char phase = 0;
-    static char red_v[180][2] = {0};
-    static char green_v[180][2] = {0};
-    static char blue_v[180][2] = {0};
-
-//    if(time == 50){
-//        phase ++;
-//        time = 0;
-//        switch(phase){
-//            case 1:
-//                memcpy(red_v, r0, sizeof(emp_r));
-//                memcpy(green_v, g0, sizeof(emp_g));
-//                memcpy(blue_v, b0, sizeof(emp_b));
-//                break;
-//            case 2:
-//                memcpy(red_v, r0, sizeof(emp_r));
-//                memcpy(green_v, g0, sizeof(emp_g));
-//                memcpy(blue_v, b0, sizeof(emp_b));
-//                break;
-//            case 3:
-//                memcpy(red_v, r0, sizeof(emp_r));
-//                memcpy(green_v, g0, sizeof(emp_g));
-//                memcpy(blue_v, b0, sizeof(emp_b));
-//                break;
-//            case 4:
-//                memcpy(red_v, emp_r, sizeof(emp_r));
-//                memcpy(green_v, emp_g, sizeof(emp_g));
-//                memcpy(blue_v, emp_b, sizeof(emp_b));
-//                wait(5);
-//                break;
-//            case 5:
-//                memcpy(red_v, emp_r, sizeof(emp_r));
-//                memcpy(green_v, emp_g, sizeof(emp_g));
-//                memcpy(blue_v, emp_b, sizeof(emp_b));
-//                break;
-//            case 6:
-//                memcpy(red_v, emp_r, sizeof(emp_r));
-//                memcpy(green_v, emp_g, sizeof(emp_g));
-//                memcpy(blue_v, emp_b, sizeof(emp_b));
-//                break;
-//            case 7:
-//                memcpy(red_v, emp_r, sizeof(emp_r));
-//                memcpy(green_v, emp_g, sizeof(emp_g));
-//                memcpy(blue_v, emp_b, sizeof(emp_b));
-//                break;
-//            case 8:
-//                memcpy(red_v, emp_r, sizeof(emp_r));
-//                memcpy(green_v, emp_g, sizeof(emp_g));
-//                memcpy(blue_v, emp_b, sizeof(emp_b));
-//                wait(5);
-//                break;
-//            case 9:
-//                memcpy(red_v, emp_r, sizeof(emp_r));
-//                memcpy(green_v, emp_g, sizeof(emp_g));
-//                memcpy(blue_v, emp_b, sizeof(emp_b));
-//                break;
-//            case 10:
-//                memcpy(red_v, emp_r, sizeof(emp_r));
-//                memcpy(green_v, emp_g, sizeof(emp_g));
-//                memcpy(blue_v, emp_b, sizeof(emp_b));
-//                break;
-//            case 11:
-//                memcpy(red_v, emp_r, sizeof(emp_r));
-//                memcpy(green_v, emp_g, sizeof(emp_g));
-//                memcpy(blue_v, emp_b, sizeof(emp_b));
-//                break;
-//            case 12:
-//                memcpy(red_v, emp_r, sizeof(emp_r));
-//                memcpy(green_v, emp_g, sizeof(emp_g));
-//                memcpy(blue_v, emp_b, sizeof(emp_b));
-//                wait(5);
-//                break;
-//        }
-//    }
-    pc.printf("%d\n", i);
-
-    switch(i){
-        case 0:
-            bar9 = 0;
-            bar0 = RGB(j, 0, BAR0 );
-            break;
-        case 1:
-            bar0 = 0;
-            bar1 = RGB(j, 0, BAR1 );            
-            break;
-        case 2:
-            bar1 = 0;
-            bar2 = RGB(j, 0, BAR2 );
-            break;
-        case 3:
-            bar2 = 0;
-            bar3 = RGB(j, 0, BAR3 );
-            break;
-        case 4:
-            bar3 = 0;
-            bar4 = RGB(j, 0, BAR4 );
-            break;
-        case 5:
-            bar4 = 0;
-            bar5 = RGB(j, 1, BAR5 );
-            break;
-        case 6:
-            bar5 = 0;
-            bar6 = RGB(j, 1, BAR6 );
-            break;
-        case 7:
-            bar6 = 0;
-            bar7 = RGB(j, 1, BAR7 );
-            break;
-        case 8:
-            bar7 = 0;
-            bar8 = RGB(j, 1, BAR8 );
-            break;
-        case 9:
-            bar8 = 0;
-            bar9 = RGB(j, 1, BAR9 );
-            break; 
-    }
-    
-    i++;
-    j++;
-    if(i > 9)
-        i = 0;
-    if(j > 180)
-        j = 0;
-
-
-}
-