有哉 藤田 / Mbed 2 deprecated 2020_verserwriter

Dependencies:   mbed

main.cpp

Committer:
yu_yu
Date:
2020-10-13
Revision:
0:779a9ff709b7
Child:
1:dc680896cbaa

File content as of revision 0:779a9ff709b7:

#include "mbed.h"
#include "hanabi.h"

#define BAR0 0b00000001
#define BAR1 0b00000010
#define BAR2 0b00000100
#define BAR3 0b00001000
#define BAR4 0b00010000
#define BAR5 0b00000001
#define BAR6 0b00000010
#define BAR7 0b00000100
#define BAR8 0b00001000
#define BAR9 0b00010000

#define TIME 25     //us


DigitalOut red(D12);
DigitalOut blue(D11);
DigitalOut green(D10);

DigitalOut bar0(A0);
DigitalOut bar1(A1);
DigitalOut bar2(A2);
DigitalOut bar3(PA_8);
DigitalOut bar4(PF_1);
DigitalOut bar5(PF_0);
DigitalOut bar6(PB_1);
DigitalOut bar7(PB_0);
DigitalOut bar8(PA_12);
DigitalOut bar9(PA_10);

DigitalIn sw0(D13);
DigitalIn sw1(A6);

Serial pc(USBTX, USBRX);
Ticker timer;

char RGB(int, char, char);
void TMR0_ISR();

int main(){
    bool tim_flag = 0;
    char tim = 25;
    timer.attach_us(&TMR0_ISR, tim);
    pc.baud(115200);
    while(1){
        if(sw0){
            tim --;
            tim_flag = 1;
        }else if(sw1){
            tim ++;
            tim_flag = 1;
        }
        
        if(tim_flag){
            pc.printf("period: %d, freq: %f\n", tim, float(1/tim)
            );
            timer.detach();
            timer.attach_us(&TMR0_ISR, tim);
            tim_flag = 0;
        }
    }
}
 
char RGB(int row, char col, char bar){
    char color;
    char judge_red = 0, judge_green = 0, judge_blue = 0;

    judge_red = red0[row][col] & bar;
    judge_green = green0[row][col & bar];
    judge_blue = blue0[row][col] & bar;
    
    bool flag = 1;
    
    if(judge_red && judge_green && judge_blue){
        red=0;
        green=0;
        blue=0;
    }else if(judge_red && judge_green){
        red=0;
        green=0;
        blue=1;
    }else if(judge_red && judge_blue){
        red=0;
        green=1;
        blue=0;
    }else if(judge_blue && judge_green){
        red=1;
        green=0;
        blue=0;
    }else if(judge_red){
        red=0;
        green=1;
        blue=1;
    }else if(judge_green){
        red=1;
        green=0;
        blue=1;
    }else if(judge_blue){
        red=1;
        green=1;
        blue=0;
    }else{
        red=1;
        green=1;
        blue=1;
        flag = 0;
    }
    return flag;
}

void TMR0_ISR(void)
{
    static char i = 0;
    static short j = 0;
    switch(i){
        case 0:
            bar0 = RGB(j, 0, BAR0);
            break;
        case 1:
            bar1 = RGB(j, 0, BAR1);            
            break;
        case 2:
            bar2 = RGB(j, 0, BAR2);
            break;
        case 3:
            bar3 = RGB(j, 0, BAR3);
            break;
        case 4:
            bar4 = RGB(j, 0, BAR4);
            break;
        case 5:
            bar5 = RGB(j, 1, BAR5);
            break;
        case 6:
            bar6 = RGB(j, 1, BAR6);
            break;
        case 7:
            bar7 = RGB(j, 1, BAR7);
            break;
        case 8:
            bar8 = RGB(j, 1, BAR8);
            break;
        case 9:
            bar9 = RGB(j, 1, BAR9);
            break; 
    }
    
    i++;
    j++;
    if(i > 9)
        i = 0;
    if(j > 180)
        j = 0;

}