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.
Diff: main.cpp
- Revision:
- 2:8499d6246b2e
- Parent:
- 1:dc680896cbaa
- Child:
- 3:fda302b6edd8
--- 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;
-
-
-}
-