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.
Dependencies: mbed
main.cpp
00001 #include "mbed.h" 00002 #include "iteadstudio_colourshield.h" 00003 uint8_t frame[8][8][3]= {0}; 00004 char mode = '1'; 00005 char read = '0'; 00006 char readon,readi,readj; 00007 char trig = '0'; 00008 char trigkey; 00009 uint8_t keyarray[4][4] = {{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}}; 00010 DigitalIn usrin(PC_13); 00011 inline void midicon_display(uint8_t array[4][4],uint8_t BGR_col_map[4][4][3]); 00012 inline void midi_rythm_display(uint8_t BGR_col_map88[8][8][3]); 00013 Serial master(PA_11,PA_12); 00014 Serial pc(USBTX, USBRX); 00015 Timer timer; 00016 Timer timer2; 00017 int scount; 00018 00019 00020 int begin; 00021 void callback() 00022 { 00023 // Note: you need to actually read from the serial to clear the RX interrupt 00024 if(pc.getc()=='#') { 00025 mode = pc.getc(); 00026 pc.putc(mode); 00027 } 00028 } 00029 void callbackmaster() 00030 { 00031 // Note: you need to actually read from the serial to clear the RX interrupt 00032 read =master.getc(); 00033 if(read=='#') { 00034 mode = master.getc(); 00035 pc.putc(mode); 00036 } else if(read == '$') { 00037 //pc.putc(read); 00038 readon = master.getc(); 00039 //pc.putc(readon); 00040 readi=master.getc(); 00041 //pc.putc(readi); 00042 readj=master.getc(); 00043 //pc.putc(readj); 00044 //pc.putc('\n'); 00045 if(readon=='1') { 00046 keyarray[3-(readj-'0')][(readi-'0')] =1; 00047 } 00048 if(readon=='0') { 00049 //pc.putc('X'); 00050 keyarray[3-(readj-'0')][readi-'0'] = 0; 00051 } 00052 } else if(read == '*') { 00053 trig ='1'; 00054 pc.putc('!'); 00055 trigkey = master.getc(); 00056 pc.putc(trigkey); 00057 pc.putc('\n'); 00058 } else { 00059 pc.putc('-'); 00060 pc.putc(read); 00061 pc.putc('-'); 00062 pc.putc('\n'); 00063 } 00064 } 00065 int main() 00066 { 00067 timer.start(); 00068 pc.baud(115200); 00069 pc.attach(&callback); 00070 master.baud(115200); 00071 master.attach(&callbackmaster); 00072 00073 char wb[3]= {100,100,100}; 00074 INITRGB(wb); 00075 float r,g,b; 00076 //float HSV[3]; 00077 00078 while(1) { 00079 if(mode=='0') { 00080 for(int i =0; i<8; i++) { 00081 for(int j= 0; j<8; j++) { 00082 HSVtoRGB(&r,&g,&b,i*j*360/49,1,1); 00083 frame[i][j][0]=(uint8_t)(b*230); 00084 frame[i][j][1]=(uint8_t)(g*255); 00085 frame[i][j][2]=(uint8_t)(r*155); 00086 00087 } 00088 } 00089 while(mode == '0') { 00090 sendframe(frame); 00091 displayRGB(); 00092 00093 00094 } 00095 } 00096 if(mode=='1') { 00097 //rainbow keymap 00098 00099 uint8_t bgr_col_map[4][4][3]; 00100 00101 int key = 0; 00102 for(int i=0 ; i<4; i++) { 00103 for(int j=0 ; j<4; j++) { 00104 HSVtoRGB(&r,&g,&b,key*360/15,1,1); 00105 bgr_col_map[j][i][0] = (uint8_t)(b*230); 00106 bgr_col_map[j][i][1] = (uint8_t)(g*255); 00107 bgr_col_map[j][i][2] = (uint8_t)(r*155); 00108 key++; 00109 } 00110 } 00111 00112 while(mode == '1') { 00113 midicon_display(keyarray,bgr_col_map); 00114 } 00115 00116 } else if(mode=='2') { 00117 uint8_t rythm_col_map[8][8][3]; 00118 //first col 00119 for(int i = 0; i<2; i++) { 00120 for(int j =0; j<6; j++) { 00121 HSVtoRGB(&r,&g,&b,0,0,1); 00122 rythm_col_map[i][j][0]=(uint8_t)(b*230); 00123 rythm_col_map[i][j][1]=(uint8_t)(g*255); 00124 rythm_col_map[i][j][2]=(uint8_t)(r*155); 00125 } 00126 } 00127 //second col 00128 for(int i = 2; i<4; i++) { 00129 for(int j =0; j<6; j++) { 00130 HSVtoRGB(&r,&g,&b,0,0,1); 00131 rythm_col_map[i][j][0]=(uint8_t)(b*230); 00132 rythm_col_map[i][j][1]=(uint8_t)(g*255); 00133 rythm_col_map[i][j][2]=(uint8_t)(r*155); 00134 } 00135 } 00136 //third col 00137 for(int i = 4; i<6; i++) { 00138 for(int j =0; j<6; j++) { 00139 HSVtoRGB(&r,&g,&b,0,0,1); 00140 rythm_col_map[i][j][0]=(uint8_t)(b*230); 00141 rythm_col_map[i][j][1]=(uint8_t)(g*255); 00142 rythm_col_map[i][j][2]=(uint8_t)(r*155); 00143 } 00144 } 00145 //last col 00146 for(int i = 6; i<8; i++) { 00147 for(int j =0; j<6; j++) { 00148 HSVtoRGB(&r,&g,&b,0,0,1); 00149 rythm_col_map[i][j][0]=(uint8_t)(b*230); 00150 rythm_col_map[i][j][1]=(uint8_t)(g*255); 00151 rythm_col_map[i][j][2]=(uint8_t)(r*155); 00152 } 00153 } 00154 //allbutton 00155 for(int i = 0; i<8; i++) { 00156 for(int j =6; j<8; j++) { 00157 HSVtoRGB(&r,&g,&b,0,0,1); 00158 rythm_col_map[i][j][0]=(uint8_t)(b*230); 00159 rythm_col_map[i][j][1]=(uint8_t)(g*255); 00160 rythm_col_map[i][j][2]=(uint8_t)(r*155); 00161 } 00162 } 00163 00164 uint8_t canvas[8][8][3]; 00165 //int velocity_ms = 100; 00166 uint8_t padobject[4][6][2] = {0}; //col,maxnumber of obj,avalibility,pos 00167 int i2; 00168 memcpy(canvas,rythm_col_map,sizeof(canvas)); 00169 while(mode == '2') { 00170 00171 00172 00173 00174 if(trig=='1') { 00175 memcpy(canvas,rythm_col_map,sizeof(canvas)); 00176 trig='0'; 00177 for(int i = 0 ; i<6; i++) { 00178 if(trigkey-'0'!=0) 00179 if(padobject[trigkey-'0'-1][i][0]==0) { 00180 padobject[trigkey-'0'-1][i][0]=1; 00181 break; 00182 } 00183 } 00184 for(int i =0; i<4; i++) { 00185 for(int j= 0; j<6; j++) { 00186 if(padobject[i][j][0]==1) { 00187 if(padobject[i][j][1]>5) { 00188 padobject[i][j][0] = 0; 00189 padobject[i][j][1] = 0; 00190 } else { 00191 //pc.putc('#'); 00192 i2 = i*2; 00193 canvas[i2][padobject[i][j][1]][0]=(uint8_t)(230); 00194 canvas[i2][padobject[i][j][1]][1]=(uint8_t)(204); 00195 canvas[i2][padobject[i][j][1]][2]=(uint8_t)(0); 00196 canvas[i2+1][padobject[i][j][1]][0]=(uint8_t)(230); 00197 canvas[i2+1][padobject[i][j][1]][1]=(uint8_t)(204); 00198 canvas[i2+1][padobject[i][j][1]][2]=(uint8_t)(0); 00199 padobject[i][j][1]++; 00200 } 00201 } 00202 } 00203 } 00204 } 00205 sendframe(canvas); 00206 displayRGB(); 00207 } 00208 } 00209 } 00210 } 00211 inline void midicon_display(uint8_t array[4][4],uint8_t BGR_col_map44[4][4][3]) 00212 { 00213 uint8_t frameX[8][8][3]= {0}; 00214 //memset(frameX,30,sizeof(frameX)); 00215 //memcpy(frameX,BGR_bac_map88,sizeof(frameX)); 00216 int n_x,n_y; 00217 for( int x=0; x<4; x++) { 00218 for( int y=0; y<4; y++) { 00219 if(array[x][y]==1) { 00220 00221 00222 n_x = x*2; 00223 n_y = y*2; 00224 frameX[n_x][n_y][0] = BGR_col_map44[x][y][0]; 00225 frameX[n_x][n_y][1] = BGR_col_map44[x][y][1]; 00226 frameX[n_x][n_y][2] = BGR_col_map44[x][y][2]; 00227 00228 frameX[n_x+1][n_y][0] = BGR_col_map44[x][y][0]; 00229 frameX[n_x+1][n_y][1] = BGR_col_map44[x][y][1]; 00230 frameX[n_x+1][n_y][2] = BGR_col_map44[x][y][2]; 00231 00232 frameX[n_x][n_y+1][0] = BGR_col_map44[x][y][0]; 00233 frameX[n_x][n_y+1][1] = BGR_col_map44[x][y][1]; 00234 frameX[n_x][n_y+1][2] = BGR_col_map44[x][y][2]; 00235 00236 frameX[n_x+1][n_y+1][0] = BGR_col_map44[x][y][0]; 00237 frameX[n_x+1][n_y+1][1] = BGR_col_map44[x][y][1]; 00238 frameX[n_x+1][n_y+1][2] = BGR_col_map44[x][y][2]; 00239 00240 00241 00242 } 00243 } 00244 } 00245 sendframe(frameX); 00246 displayRGB(); 00247 } 00248 00249
Generated on Sat Jul 23 2022 04:24:59 by
1.7.2