This program is for "LEDCUBE4mbed". You can change the mode for changing the value of "debug".

Dependencies:   ConfigFile FatFileSystem SDFileSystem mbed

Committer:
ds074704261
Date:
Sun Nov 04 09:04:32 2012 +0000
Revision:
4:9470f95e46a2
Parent:
3:b98db4a46561
Final.; You can change the mode for changing the value of "debug".

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ds074704261 0:bedae49a4612 1 #include "mbed.h"
ds074704261 0:bedae49a4612 2 #include "ConfigFile.h"
ds074704261 0:bedae49a4612 3 //#include "SDFileSystem.h"
ds074704261 0:bedae49a4612 4
ds074704261 0:bedae49a4612 5 ConfigFile cfg;
ds074704261 0:bedae49a4612 6 LocalFileSystem local("local");
ds074704261 0:bedae49a4612 7
ds074704261 0:bedae49a4612 8 /*
ds074704261 0:bedae49a4612 9 * ==================================================
ds074704261 0:bedae49a4612 10 * Definition of "LINE"
ds074704261 0:bedae49a4612 11 * ==================================================
ds074704261 0:bedae49a4612 12 *
ds074704261 0:bedae49a4612 13 * C1 C2 C3 C4 C5
ds074704261 0:bedae49a4612 14 * --------------------
ds074704261 0:bedae49a4612 15 * L1 L2 L3 L4 L5
ds074704261 0:bedae49a4612 16 * L6 L7 L8 L9 L10
ds074704261 0:bedae49a4612 17 * L11 L12 L13 L14 L15
ds074704261 0:bedae49a4612 18 * L16 L17 L18 L19 L20
ds074704261 0:bedae49a4612 19 * L21 L22 L23 L24 L25
ds074704261 0:bedae49a4612 20 *
ds074704261 0:bedae49a4612 21 * ==================================================
ds074704261 0:bedae49a4612 22 */
ds074704261 0:bedae49a4612 23
ds074704261 0:bedae49a4612 24 BusOut leds(LED1, LED2, LED3, LED4);
ds074704261 3:b98db4a46561 25 DigitalOut led1(LED1);
ds074704261 3:b98db4a46561 26 DigitalOut led2(LED2);
ds074704261 3:b98db4a46561 27 DigitalOut led3(LED3);
ds074704261 3:b98db4a46561 28 DigitalOut led4(LED4);
ds074704261 0:bedae49a4612 29 DigitalOut C1(p25); //line1 to line5
ds074704261 0:bedae49a4612 30 DigitalOut C2(p24); //line6 to line10
ds074704261 0:bedae49a4612 31 DigitalOut C3(p23); //line11 to line15
ds074704261 0:bedae49a4612 32 DigitalOut C4(p22); //line16 to line20
ds074704261 0:bedae49a4612 33 DigitalOut C5(p21); //line21 to line25
ds074704261 2:96833c69287d 34 //DigitalOut Call[] = {p25, p24, p23, p22, p21};
ds074704261 0:bedae49a4612 35 DigitalOut mclock(p5); //mainclock
ds074704261 0:bedae49a4612 36 DigitalOut sclock(p6); //subclock
ds074704261 2:96833c69287d 37 AnalogIn volume(p20);
ds074704261 2:96833c69287d 38 DigitalIn resets(p19);
ds074704261 2:96833c69287d 39 DigitalIn replay(p18);
ds074704261 2:96833c69287d 40 DigitalIn start(p17);
ds074704261 3:b98db4a46561 41 Ticker timer;
ds074704261 0:bedae49a4612 42
ds074704261 0:bedae49a4612 43 /* ==================================================
ds074704261 0:bedae49a4612 44 * Not implemented
ds074704261 0:bedae49a4612 45 * ==================================================
ds074704261 2:96833c69287d 46
ds074704261 0:bedae49a4612 47 // MicroSD Ssytem
ds074704261 0:bedae49a4612 48 #include "SDFileSystem.h"
ds074704261 0:bedae49a4612 49 #define SD_MOSI p5
ds074704261 0:bedae49a4612 50 #define SD_MISO p6
ds074704261 0:bedae49a4612 51 #define SD_SCLK p7
ds074704261 0:bedae49a4612 52 #define SD_CS p8
ds074704261 0:bedae49a4612 53
ds074704261 2:96833c69287d 54 //SDFileSystem sd(p11, p12, p13, p9, "sd"); // mosi, miso, sclk, cs, name
ds074704261 0:bedae49a4612 55 SDFileSystem sd(SD_MOSI, SD_MISO, SD_SCLK, SD_CS, "sd"); // mosi, miso, sclk, cs, name (HW modification candidate)
ds074704261 0:bedae49a4612 56 */
ds074704261 0:bedae49a4612 57
ds074704261 3:b98db4a46561 58 /* ==================================================
ds074704261 3:b98db4a46561 59 * Debug mode switch
ds074704261 3:b98db4a46561 60 * ==================================================
ds074704261 3:b98db4a46561 61 * if(debug == 1)
ds074704261 3:b98db4a46561 62 * {
ds074704261 3:b98db4a46561 63 * printf("");
ds074704261 3:b98db4a46561 64 * }
ds074704261 3:b98db4a46561 65 * if(debug == 0)
ds074704261 3:b98db4a46561 66 * {
ds074704261 3:b98db4a46561 67 * //printf("");
ds074704261 3:b98db4a46561 68 * }
ds074704261 3:b98db4a46561 69 */
ds074704261 3:b98db4a46561 70 int debug = 0;
ds074704261 3:b98db4a46561 71
ds074704261 3:b98db4a46561 72 void time() {
ds074704261 3:b98db4a46561 73 led1 = 1;
ds074704261 3:b98db4a46561 74 wait_ms(50);
ds074704261 3:b98db4a46561 75 led1 = 0;
ds074704261 3:b98db4a46561 76 wait_ms(50);
ds074704261 3:b98db4a46561 77 }
ds074704261 3:b98db4a46561 78
ds074704261 0:bedae49a4612 79 int main() {
ds074704261 3:b98db4a46561 80 start:
ds074704261 3:b98db4a46561 81 if(debug == 1){
ds074704261 3:b98db4a46561 82 printf("LoadingProgram...\n");
ds074704261 3:b98db4a46561 83 printf("Loaded.\n");
ds074704261 3:b98db4a46561 84 }
ds074704261 2:96833c69287d 85 while(1){
ds074704261 2:96833c69287d 86 if(start == 1){
ds074704261 3:b98db4a46561 87 if(debug == 1){
ds074704261 3:b98db4a46561 88 printf("Start!\n");
ds074704261 3:b98db4a46561 89 }
ds074704261 2:96833c69287d 90 goto replay;
ds074704261 2:96833c69287d 91 } else {
ds074704261 3:b98db4a46561 92 //timer.attach(&time, 0.05);
ds074704261 3:b98db4a46561 93 led4 = 1;
ds074704261 3:b98db4a46561 94 wait(volume);
ds074704261 3:b98db4a46561 95 led4 = 0;
ds074704261 3:b98db4a46561 96 wait(volume);
ds074704261 2:96833c69287d 97 }//else
ds074704261 2:96833c69287d 98 }//while
ds074704261 2:96833c69287d 99 replay:
ds074704261 2:96833c69287d 100 float speed = volume;
ds074704261 3:b98db4a46561 101 if(debug == 1){
ds074704261 3:b98db4a46561 102 printf("This program will Set Pattern in %f sec.\n",speed);
ds074704261 3:b98db4a46561 103 }
ds074704261 0:bedae49a4612 104 //error
ds074704261 0:bedae49a4612 105 if (!cfg.read("/local/pattern.cfg")) {
ds074704261 3:b98db4a46561 106 if(debug == 1){
ds074704261 3:b98db4a46561 107 printf("Failure to read a configuration file.\n");
ds074704261 3:b98db4a46561 108 }
ds074704261 0:bedae49a4612 109 while(1){
ds074704261 0:bedae49a4612 110 leds = 15;
ds074704261 0:bedae49a4612 111 wait(0.1);
ds074704261 0:bedae49a4612 112 leds = 0;
ds074704261 0:bedae49a4612 113 wait(0.1);
ds074704261 0:bedae49a4612 114 }
ds074704261 0:bedae49a4612 115 }
ds074704261 0:bedae49a4612 116
ds074704261 0:bedae49a4612 117 //read file
ds074704261 3:b98db4a46561 118 if(debug == 1){
ds074704261 3:b98db4a46561 119 printf("reading file...\n");
ds074704261 3:b98db4a46561 120 }
ds074704261 0:bedae49a4612 121 cfg.read("/local/pattern.cfg");
ds074704261 0:bedae49a4612 122
ds074704261 0:bedae49a4612 123 const int cnt = cfg.getCount();
ds074704261 0:bedae49a4612 124 char buf_key[BUFSIZ];
ds074704261 0:bedae49a4612 125 char buf_value[BUFSIZ];
ds074704261 0:bedae49a4612 126
ds074704261 0:bedae49a4612 127 long sin2;
ds074704261 0:bedae49a4612 128
ds074704261 0:bedae49a4612 129 for (int i = 0; i < cnt; i++) {
ds074704261 1:0991aefbe7be 130 leds = 0;
ds074704261 0:bedae49a4612 131 if (cfg.getKeyAndValue(i, buf_key, sizeof(buf_key), buf_value, sizeof(buf_value))) {
ds074704261 0:bedae49a4612 132
ds074704261 0:bedae49a4612 133 sin2 = strtol(buf_value, NULL, 2);
ds074704261 3:b98db4a46561 134 if(debug == 1){
ds074704261 3:b98db4a46561 135 printf("%d = %d\n", i+1, sin2);
ds074704261 3:b98db4a46561 136 }
ds074704261 0:bedae49a4612 137
ds074704261 2:96833c69287d 138 //SetPattern
ds074704261 3:b98db4a46561 139 if(debug == 1){
ds074704261 3:b98db4a46561 140 printf("SetPattern\n");
ds074704261 3:b98db4a46561 141 }
ds074704261 2:96833c69287d 142 if((i+1) % 5 == 0){
ds074704261 3:b98db4a46561 143 if(debug == 1){
ds074704261 3:b98db4a46561 144 printf("(i+1) % 5 == 0\n");
ds074704261 3:b98db4a46561 145 }
ds074704261 2:96833c69287d 146 } else {
ds074704261 2:96833c69287d 147 C5 = sin2 & 0x1;
ds074704261 2:96833c69287d 148 C4 = (sin2 >> 1) & 0x1;
ds074704261 2:96833c69287d 149 C3 = (sin2 >> 2) & 0x1;
ds074704261 2:96833c69287d 150 C2 = (sin2 >> 3) & 0x1;
ds074704261 2:96833c69287d 151 C1 = (sin2 >> 4) & 0x1;
ds074704261 3:b98db4a46561 152 if(debug == 1){
ds074704261 3:b98db4a46561 153 printf("C1:%d,C2:%d,C3:%d,C4:%d,C5:%d\n",(sin2 >> 4) & 0x1,(sin2 >> 3) & 0x1,(sin2 >> 2) & 0x1,(sin2 >> 1) & 0x1,sin2 & 0x1);
ds074704261 3:b98db4a46561 154 }
ds074704261 2:96833c69287d 155 sclock = 1;
ds074704261 2:96833c69287d 156 leds = i+1;
ds074704261 2:96833c69287d 157 wait_ms(50);
ds074704261 2:96833c69287d 158 leds = 0;
ds074704261 2:96833c69287d 159 //Switch to Next Pattern
ds074704261 2:96833c69287d 160 if((i+1) % 5 == 4){
ds074704261 2:96833c69287d 161 mclock = 1;
ds074704261 2:96833c69287d 162 leds = 15;
ds074704261 2:96833c69287d 163 wait(volume);
ds074704261 3:b98db4a46561 164 if(debug == 1){
ds074704261 3:b98db4a46561 165 printf("Switch to Next Pattern\n");
ds074704261 3:b98db4a46561 166 }
ds074704261 2:96833c69287d 167 }
ds074704261 2:96833c69287d 168 sclock = 0;
ds074704261 2:96833c69287d 169 mclock = 0;
ds074704261 2:96833c69287d 170 }
ds074704261 0:bedae49a4612 171 } else {
ds074704261 3:b98db4a46561 172 if(debug == 1){
ds074704261 3:b98db4a46561 173 printf("No.%3d:Failure to get a configuration.\n", i);
ds074704261 3:b98db4a46561 174 }
ds074704261 2:96833c69287d 175 }//else
ds074704261 2:96833c69287d 176 }//for
ds074704261 3:b98db4a46561 177 if(debug == 1){
ds074704261 3:b98db4a46561 178 printf("Done.\n");
ds074704261 3:b98db4a46561 179 }
ds074704261 2:96833c69287d 180 while(1){
ds074704261 2:96833c69287d 181 if(resets == 1){
ds074704261 3:b98db4a46561 182 if(debug == 1){
ds074704261 3:b98db4a46561 183 printf("Reset!\n");
ds074704261 3:b98db4a46561 184 }
ds074704261 2:96833c69287d 185 C1 = 0;
ds074704261 2:96833c69287d 186 C2 = 0;
ds074704261 2:96833c69287d 187 C3 = 0;
ds074704261 2:96833c69287d 188 C4 = 0;
ds074704261 2:96833c69287d 189 C5 = 0;
ds074704261 2:96833c69287d 190 for(int i = 0; i < 5; i++){
ds074704261 2:96833c69287d 191 sclock = 1;
ds074704261 2:96833c69287d 192 wait_ms(10);
ds074704261 2:96833c69287d 193 sclock = 0;
ds074704261 2:96833c69287d 194 }//for
ds074704261 2:96833c69287d 195 for(int i = 0; i < 5; i++){
ds074704261 2:96833c69287d 196 mclock = 1;
ds074704261 2:96833c69287d 197 wait_ms(10);
ds074704261 2:96833c69287d 198 mclock = 0;
ds074704261 2:96833c69287d 199 }//for
ds074704261 3:b98db4a46561 200 goto start;
ds074704261 2:96833c69287d 201 }//if
ds074704261 2:96833c69287d 202 if(replay == 1){
ds074704261 3:b98db4a46561 203 if(debug == 1){
ds074704261 3:b98db4a46561 204 printf("Restart!\n");
ds074704261 3:b98db4a46561 205 }
ds074704261 2:96833c69287d 206 goto replay;
ds074704261 0:bedae49a4612 207 }
ds074704261 2:96833c69287d 208 }//while
ds074704261 3:b98db4a46561 209 goto start;
ds074704261 2:96833c69287d 210 }//main