This program is for "LEDCUBE4mbed". You can change the mode for changing the value of "debug".
Dependencies: ConfigFile FatFileSystem SDFileSystem mbed
main.cpp@4:9470f95e46a2, 2012-11-04 (annotated)
- 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?
User | Revision | Line number | New 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 |