add iphone Support.

Dependencies:   NeoStrip mbed

Fork of Led_demo by ece4180final

Committer:
zchen311
Date:
Mon Apr 28 02:17:00 2014 +0000
Revision:
1:eecf2e4bf4f1
Parent:
0:4c7b2475af40
latest

Who changed what in which revision?

UserRevisionLine numberNew contents of line
zchen311 0:4c7b2475af40 1 #include "mbed.h"
zchen311 0:4c7b2475af40 2 #include "NeoStrip.h"
zchen311 0:4c7b2475af40 3 #include "text.h"
zchen311 0:4c7b2475af40 4 #define N 128
zchen311 0:4c7b2475af40 5 #define PATTERNS 4
zchen311 0:4c7b2475af40 6 #include <string>
zchen311 1:eecf2e4bf4f1 7 #include "helper.h"
zchen311 1:eecf2e4bf4f1 8
zchen311 1:eecf2e4bf4f1 9
zchen311 1:eecf2e4bf4f1 10 NeoStrip strip(p18, N);
zchen311 1:eecf2e4bf4f1 11
zchen311 1:eecf2e4bf4f1 12 //callback function for incoming serial communication
zchen311 1:eecf2e4bf4f1 13 void callback();
zchen311 1:eecf2e4bf4f1 14 //necessary functions for distanceDemo and bikeDemo
zchen311 1:eecf2e4bf4f1 15 void blinkOn();
zchen311 1:eecf2e4bf4f1 16 void blinkOff();
zchen311 1:eecf2e4bf4f1 17 void patternLeft();
zchen311 1:eecf2e4bf4f1 18 void patternRight();
zchen311 1:eecf2e4bf4f1 19 void patternStop();
zchen311 1:eecf2e4bf4f1 20 void patternNone();
zchen311 1:eecf2e4bf4f1 21 void distanceDemo();
zchen311 1:eecf2e4bf4f1 22 void rainBow();
zchen311 1:eecf2e4bf4f1 23 void emojiDemo();
zchen311 1:eecf2e4bf4f1 24 //necessary functions for Animation Demo
zchen311 0:4c7b2475af40 25 void fillBlue();
zchen311 0:4c7b2475af40 26 void progressBar(bool);
zchen311 0:4c7b2475af40 27 void putChar(int row, int col, char ch, int color);
zchen311 0:4c7b2475af40 28 void putString(std::string);
zchen311 1:eecf2e4bf4f1 29 void loopAscii();
zchen311 0:4c7b2475af40 30 void MarioBox();
zchen311 0:4c7b2475af40 31 void drawBox(int row);void emptyBox(int row);
zchen311 0:4c7b2475af40 32 void putCharV(int row, int col, char ch, int color);
zchen311 1:eecf2e4bf4f1 33 int getIndex(int r, int c);
zchen311 1:eecf2e4bf4f1 34
zchen311 1:eecf2e4bf4f1 35
zchen311 0:4c7b2475af40 36
zchen311 1:eecf2e4bf4f1 37 //hardware initilization
zchen311 1:eecf2e4bf4f1 38 Serial device(p13,p14);
zchen311 1:eecf2e4bf4f1 39 AnalogIn ir(p20);
zchen311 1:eecf2e4bf4f1 40 Serial pc(USBTX,USBRX);
zchen311 0:4c7b2475af40 41
zchen311 1:eecf2e4bf4f1 42 //variable initilization
zchen311 1:eecf2e4bf4f1 43 Timer t;
zchen311 0:4c7b2475af40 44 int chars[128];
zchen311 1:eecf2e4bf4f1 45 std::string emoji[9] = {"*_*", "^_^", "$_$", ">_<", "=_=", "+_=", ":)", ":(", ":3"};
zchen311 1:eecf2e4bf4f1 46 void (*patterns[])(void) = {&patternLeft, &patternRight, &patternStop, &patternNone};
zchen311 1:eecf2e4bf4f1 47 int bikeDir;
zchen311 0:4c7b2475af40 48 char ch = 'A';
zchen311 0:4c7b2475af40 49
zchen311 0:4c7b2475af40 50 int main()
zchen311 1:eecf2e4bf4f1 51 {
zchen311 1:eecf2e4bf4f1 52 // std::string emoji[9] = {"*_*", "^_^", "$_$", ">_<", "=_=", "+_=", ":)", ":(", ":3"};
zchen311 0:4c7b2475af40 53 float bright = 0.2; // 20% is plenty for indoor use
zchen311 0:4c7b2475af40 54 strip.setBrightness(bright); // set default brightness
zchen311 1:eecf2e4bf4f1 55
zchen311 1:eecf2e4bf4f1 56 //setup serial device
zchen311 1:eecf2e4bf4f1 57 device.baud(57600);
zchen311 1:eecf2e4bf4f1 58 device.attach(&callback);
zchen311 0:4c7b2475af40 59
zchen311 1:eecf2e4bf4f1 60 //wait until phone is connected
zchen311 1:eecf2e4bf4f1 61 while(1){
zchen311 1:eecf2e4bf4f1 62 if(device.readable()) break;
zchen311 1:eecf2e4bf4f1 63 }
zchen311 1:eecf2e4bf4f1 64 pc.printf("Device connected\n");
zchen311 0:4c7b2475af40 65
zchen311 1:eecf2e4bf4f1 66 //ready for commands, clear serael buffer
zchen311 1:eecf2e4bf4f1 67 while(device.readable()) device.getc();
zchen311 1:eecf2e4bf4f1 68 pc.printf("Device ready for commands;\n");
zchen311 1:eecf2e4bf4f1 69 //phone is disconnected, flash red light warning
zchen311 1:eecf2e4bf4f1 70 while(1){
zchen311 1:eecf2e4bf4f1 71 if(t.read_ms()>3000){
zchen311 1:eecf2e4bf4f1 72 pc.printf("time passed i %d\n",t.read_ms());
zchen311 1:eecf2e4bf4f1 73 blinkOn();
zchen311 1:eecf2e4bf4f1 74 //progressBar(true);
zchen311 1:eecf2e4bf4f1 75 wait_ms(200);
zchen311 1:eecf2e4bf4f1 76 blinkOff();
zchen311 1:eecf2e4bf4f1 77 // wait_ms(200);
zchen311 1:eecf2e4bf4f1 78 }
zchen311 1:eecf2e4bf4f1 79 wait(5);
zchen311 0:4c7b2475af40 80 }
zchen311 1:eecf2e4bf4f1 81
zchen311 1:eecf2e4bf4f1 82
zchen311 1:eecf2e4bf4f1 83
zchen311 0:4c7b2475af40 84 }
zchen311 0:4c7b2475af40 85
zchen311 1:eecf2e4bf4f1 86
zchen311 1:eecf2e4bf4f1 87 void callback(){
zchen311 1:eecf2e4bf4f1 88 pc.printf("new commands arrive \n");
zchen311 1:eecf2e4bf4f1 89 t.reset();
zchen311 1:eecf2e4bf4f1 90 switch(device.getc()){
zchen311 1:eecf2e4bf4f1 91
zchen311 1:eecf2e4bf4f1 92 case PhoneDemo:
zchen311 1:eecf2e4bf4f1 93 pc.printf("Lost Phone Demo\n");
zchen311 1:eecf2e4bf4f1 94 while(device.readable()) device.getc();
zchen311 1:eecf2e4bf4f1 95 //reply ack
zchen311 1:eecf2e4bf4f1 96 device.putc('P');
zchen311 1:eecf2e4bf4f1 97 t.start();
zchen311 1:eecf2e4bf4f1 98 break;
zchen311 1:eecf2e4bf4f1 99
zchen311 1:eecf2e4bf4f1 100 case MusicDemo:
zchen311 1:eecf2e4bf4f1 101 pc.printf("Music Demo\n");
zchen311 1:eecf2e4bf4f1 102 rainBow();
zchen311 1:eecf2e4bf4f1 103 //progressBar(true);
zchen311 1:eecf2e4bf4f1 104 //progressBar(false);
zchen311 1:eecf2e4bf4f1 105 break;
zchen311 1:eecf2e4bf4f1 106
zchen311 1:eecf2e4bf4f1 107 case DistanceDemo:
zchen311 1:eecf2e4bf4f1 108 pc.printf("Distance Demo\n");
zchen311 1:eecf2e4bf4f1 109 device.putc('D');
zchen311 1:eecf2e4bf4f1 110 distanceDemo();
zchen311 1:eecf2e4bf4f1 111 break;
zchen311 1:eecf2e4bf4f1 112
zchen311 1:eecf2e4bf4f1 113 case AnimationOneDemo:
zchen311 1:eecf2e4bf4f1 114 MarioBox();
zchen311 1:eecf2e4bf4f1 115 break;
zchen311 1:eecf2e4bf4f1 116
zchen311 1:eecf2e4bf4f1 117 case AnimationTwoDemo:
zchen311 1:eecf2e4bf4f1 118 pc.printf("Emoji Demo\n");
zchen311 1:eecf2e4bf4f1 119 emojiDemo();
zchen311 1:eecf2e4bf4f1 120 break;
zchen311 1:eecf2e4bf4f1 121
zchen311 1:eecf2e4bf4f1 122 case AnimationThreeDemo:
zchen311 1:eecf2e4bf4f1 123 pc.printf("ascii demo\n");
zchen311 1:eecf2e4bf4f1 124 loopAscii();
zchen311 1:eecf2e4bf4f1 125 break;
zchen311 1:eecf2e4bf4f1 126
zchen311 1:eecf2e4bf4f1 127 case LEFT:
zchen311 1:eecf2e4bf4f1 128 pc.printf("left arrow\n");
zchen311 1:eecf2e4bf4f1 129 patternLeft();
zchen311 1:eecf2e4bf4f1 130 break;
zchen311 1:eecf2e4bf4f1 131
zchen311 1:eecf2e4bf4f1 132 case RIGHT:
zchen311 1:eecf2e4bf4f1 133 pc.printf("right arrow\n");
zchen311 1:eecf2e4bf4f1 134
zchen311 1:eecf2e4bf4f1 135 patternRight();
zchen311 1:eecf2e4bf4f1 136 break;
zchen311 1:eecf2e4bf4f1 137
zchen311 1:eecf2e4bf4f1 138 case STOP:
zchen311 1:eecf2e4bf4f1 139 pc.printf("stop\n");
zchen311 1:eecf2e4bf4f1 140
zchen311 1:eecf2e4bf4f1 141 patternStop();
zchen311 1:eecf2e4bf4f1 142 break;
zchen311 1:eecf2e4bf4f1 143
zchen311 1:eecf2e4bf4f1 144 default:
zchen311 1:eecf2e4bf4f1 145 break;
zchen311 0:4c7b2475af40 146 }
zchen311 0:4c7b2475af40 147
zchen311 0:4c7b2475af40 148
zchen311 0:4c7b2475af40 149 }
zchen311 0:4c7b2475af40 150
zchen311 0:4c7b2475af40 151
zchen311 0:4c7b2475af40 152
zchen311 1:eecf2e4bf4f1 153
zchen311 0:4c7b2475af40 154
zchen311 1:eecf2e4bf4f1 155
zchen311 0:4c7b2475af40 156
zchen311 0:4c7b2475af40 157 void fillBlue(){
zchen311 0:4c7b2475af40 158 for(int i = 0; i < N; i++){
zchen311 0:4c7b2475af40 159 chars[i] = 0x122446;
zchen311 0:4c7b2475af40 160 }
zchen311 0:4c7b2475af40 161 }
zchen311 0:4c7b2475af40 162
zchen311 0:4c7b2475af40 163 void putChar(int row, int col, char ch, int color){
zchen311 1:eecf2e4bf4f1 164 for(int r = 0; r < 8; r++){
zchen311 1:eecf2e4bf4f1 165 for(int c = 0; c < 6; c++){
zchen311 1:eecf2e4bf4f1 166 if(fontdata_6x8[ch * 48 + r * 6 +c]){
zchen311 1:eecf2e4bf4f1 167 int idx = getIndex(row+r, col+c);
zchen311 1:eecf2e4bf4f1 168 if(idx != -1)
zchen311 1:eecf2e4bf4f1 169 chars[idx] = color;
zchen311 0:4c7b2475af40 170 }
zchen311 1:eecf2e4bf4f1 171 }
zchen311 0:4c7b2475af40 172 }
zchen311 0:4c7b2475af40 173 }
zchen311 0:4c7b2475af40 174 void putCharV(int row, int col, char ch, int color){
zchen311 1:eecf2e4bf4f1 175 for(int r = 0; r < 8; r++){
zchen311 1:eecf2e4bf4f1 176 for(int c = 0; c < 6; c++){
zchen311 1:eecf2e4bf4f1 177 if(fontdata_6x8[ch * 48 + r * 6 +c]){
zchen311 1:eecf2e4bf4f1 178 int idx = (row + r) *8 +( col +c);
zchen311 1:eecf2e4bf4f1 179 if(idx != -1)
zchen311 1:eecf2e4bf4f1 180 chars[idx] = color;
zchen311 0:4c7b2475af40 181 }
zchen311 1:eecf2e4bf4f1 182 }
zchen311 0:4c7b2475af40 183 }
zchen311 0:4c7b2475af40 184 }
zchen311 0:4c7b2475af40 185
zchen311 0:4c7b2475af40 186 void MarioBox(){
zchen311 1:eecf2e4bf4f1 187 int color = 0xffff00;
zchen311 1:eecf2e4bf4f1 188 // int red = 0xff0000;
zchen311 1:eecf2e4bf4f1 189
zchen311 1:eecf2e4bf4f1 190 drawBox(8);
zchen311 1:eecf2e4bf4f1 191 strip.setPixels(0, N, chars);
zchen311 1:eecf2e4bf4f1 192 strip.write();
zchen311 1:eecf2e4bf4f1 193 wait(5);
zchen311 1:eecf2e4bf4f1 194
zchen311 1:eecf2e4bf4f1 195 for(int i = 1; i < 3; i++){
zchen311 1:eecf2e4bf4f1 196 fillBlue();
zchen311 1:eecf2e4bf4f1 197 drawBox(8-i);
zchen311 0:4c7b2475af40 198 strip.setPixels(0, N, chars);
zchen311 0:4c7b2475af40 199 strip.write();
zchen311 1:eecf2e4bf4f1 200 wait(0.3);
zchen311 1:eecf2e4bf4f1 201 }
zchen311 1:eecf2e4bf4f1 202 for(int i = 0; i < 3; i++){
zchen311 1:eecf2e4bf4f1 203 fillBlue();
zchen311 1:eecf2e4bf4f1 204 drawBox(6 + i);
zchen311 1:eecf2e4bf4f1 205 strip.setPixels(0, N, chars);
zchen311 1:eecf2e4bf4f1 206 strip.write();
zchen311 1:eecf2e4bf4f1 207 wait(0.3);
zchen311 1:eecf2e4bf4f1 208 }
zchen311 1:eecf2e4bf4f1 209 fillBlue();
zchen311 1:eecf2e4bf4f1 210 emptyBox(8);
zchen311 1:eecf2e4bf4f1 211 putChar(0,0,'0',color);
zchen311 1:eecf2e4bf4f1 212 strip.setPixels(0, N, chars);
zchen311 1:eecf2e4bf4f1 213 strip.write();
zchen311 1:eecf2e4bf4f1 214 wait(5);
zchen311 1:eecf2e4bf4f1 215 strip.clear();
zchen311 1:eecf2e4bf4f1 216 strip.write();
zchen311 0:4c7b2475af40 217
zchen311 0:4c7b2475af40 218 }
zchen311 0:4c7b2475af40 219 void putString(std::string str){
zchen311 0:4c7b2475af40 220 int color = 0xffff00;
zchen311 0:4c7b2475af40 221 for(int i = 0; i < str.length(); ++i){
zchen311 1:eecf2e4bf4f1 222 putChar(0,5*i,str[i], color);
zchen311 1:eecf2e4bf4f1 223 strip.setPixels(0, N, chars);
zchen311 0:4c7b2475af40 224 }
zchen311 0:4c7b2475af40 225 strip.write();
zchen311 1:eecf2e4bf4f1 226 wait_ms(100);
zchen311 0:4c7b2475af40 227 }
zchen311 0:4c7b2475af40 228
zchen311 1:eecf2e4bf4f1 229 void loopAscii(){
zchen311 0:4c7b2475af40 230 int color = 0xffff00;
zchen311 1:eecf2e4bf4f1 231 char ch = 'A';
zchen311 1:eecf2e4bf4f1 232 int count = 50;
zchen311 1:eecf2e4bf4f1 233
zchen311 1:eecf2e4bf4f1 234 for(int i = 0; i < count; i+=2) {
zchen311 1:eecf2e4bf4f1 235 putChar(0,0,ch+i,color);
zchen311 1:eecf2e4bf4f1 236 putChar(0,7,ch+i+1,color);
zchen311 1:eecf2e4bf4f1 237 strip.setPixels(0, N, chars);
zchen311 1:eecf2e4bf4f1 238 strip.write();
zchen311 1:eecf2e4bf4f1 239 wait_ms(200);
zchen311 1:eecf2e4bf4f1 240 }
zchen311 1:eecf2e4bf4f1 241
zchen311 0:4c7b2475af40 242 }
zchen311 0:4c7b2475af40 243
zchen311 0:4c7b2475af40 244 void drawBox(int row){
zchen311 0:4c7b2475af40 245 for(int i = 0; i < 64; ++i)
zchen311 0:4c7b2475af40 246 chars[row*8 + i] = 0x000000;
zchen311 0:4c7b2475af40 247 putCharV(row,0,'?',0xffff00);
zchen311 0:4c7b2475af40 248 }
zchen311 0:4c7b2475af40 249 void emptyBox(int row){
zchen311 0:4c7b2475af40 250 for(int i = 0; i < 64; ++i)
zchen311 0:4c7b2475af40 251 chars[row*8 + i] = 0x000000;
zchen311 0:4c7b2475af40 252 }
zchen311 0:4c7b2475af40 253 void progressBar(bool up){
zchen311 0:4c7b2475af40 254 int index;
zchen311 0:4c7b2475af40 255 int init;
zchen311 0:4c7b2475af40 256 int increment;
zchen311 0:4c7b2475af40 257 int color;
zchen311 0:4c7b2475af40 258 if(up == true){
zchen311 1:eecf2e4bf4f1 259 init = 0;
zchen311 1:eecf2e4bf4f1 260 increment = 1;
zchen311 1:eecf2e4bf4f1 261 color = 0x122446;
zchen311 1:eecf2e4bf4f1 262 }else {
zchen311 1:eecf2e4bf4f1 263 init = 15;
zchen311 1:eecf2e4bf4f1 264 increment = -1;
zchen311 1:eecf2e4bf4f1 265 fillBlue();
zchen311 1:eecf2e4bf4f1 266 color = 0x000000;
zchen311 1:eecf2e4bf4f1 267 }
zchen311 1:eecf2e4bf4f1 268
zchen311 1:eecf2e4bf4f1 269 for(int x = 0; x < 16 ; x++){
zchen311 1:eecf2e4bf4f1 270
zchen311 1:eecf2e4bf4f1 271 for (int j = 0; j < 8; j++){
zchen311 1:eecf2e4bf4f1 272 index = getIndex(j,init + increment * x);
zchen311 1:eecf2e4bf4f1 273 chars[index] = color;
zchen311 0:4c7b2475af40 274 }
zchen311 1:eecf2e4bf4f1 275 strip.setPixels(0, N, chars);
zchen311 1:eecf2e4bf4f1 276 strip.write();
zchen311 1:eecf2e4bf4f1 277 wait_ms(200);
zchen311 1:eecf2e4bf4f1 278 }
zchen311 1:eecf2e4bf4f1 279 }
zchen311 1:eecf2e4bf4f1 280
zchen311 1:eecf2e4bf4f1 281
zchen311 1:eecf2e4bf4f1 282 void rainBow(){
zchen311 1:eecf2e4bf4f1 283 int index;
zchen311 1:eecf2e4bf4f1 284 unsigned int black = 0x000000;
zchen311 1:eecf2e4bf4f1 285 unsigned int color[7] = {0x5b00ff,0xff0d19, 0xf0ff03, 0x17ff29, 0x1fffee,0x0d65ff, 0xfb12ff};
zchen311 1:eecf2e4bf4f1 286 int init = 0;
zchen311 1:eecf2e4bf4f1 287 int increment = 1;
zchen311 1:eecf2e4bf4f1 288
zchen311 0:4c7b2475af40 289 for(int x = 0; x < 16 ; x++){
zchen311 1:eecf2e4bf4f1 290 for (int j = 0; j < 8; j++){
zchen311 1:eecf2e4bf4f1 291 index = getIndex(j,init + increment * x);
zchen311 1:eecf2e4bf4f1 292 chars[index] = color[index%7];
zchen311 1:eecf2e4bf4f1 293 }
zchen311 1:eecf2e4bf4f1 294 strip.setPixels(0, N, chars);
zchen311 1:eecf2e4bf4f1 295 strip.write();
zchen311 1:eecf2e4bf4f1 296 wait_ms(200);
zchen311 1:eecf2e4bf4f1 297 }
zchen311 1:eecf2e4bf4f1 298
zchen311 1:eecf2e4bf4f1 299 for(int x = 15; x >= 0 ; x--){
zchen311 0:4c7b2475af40 300 for (int j = 0; j < 8; j++){
zchen311 0:4c7b2475af40 301 index = getIndex(j,init + increment * x);
zchen311 1:eecf2e4bf4f1 302 chars[index] = black;
zchen311 1:eecf2e4bf4f1 303 }
zchen311 1:eecf2e4bf4f1 304
zchen311 1:eecf2e4bf4f1 305 strip.setPixels(0, N, chars);
zchen311 1:eecf2e4bf4f1 306 strip.write();
zchen311 1:eecf2e4bf4f1 307 wait_ms(200);
zchen311 1:eecf2e4bf4f1 308 }
zchen311 1:eecf2e4bf4f1 309
zchen311 1:eecf2e4bf4f1 310 }
zchen311 1:eecf2e4bf4f1 311
zchen311 1:eecf2e4bf4f1 312
zchen311 1:eecf2e4bf4f1 313
zchen311 1:eecf2e4bf4f1 314 void patternLeft()
zchen311 1:eecf2e4bf4f1 315 {
zchen311 1:eecf2e4bf4f1 316 for(int j=0;j<3;j++){
zchen311 1:eecf2e4bf4f1 317 for (int i = 0; i < N; i++)
zchen311 1:eecf2e4bf4f1 318 {
zchen311 1:eecf2e4bf4f1 319 if (maskLeft128[i] == 1)
zchen311 1:eecf2e4bf4f1 320 chars[i]=0x00FF00;
zchen311 1:eecf2e4bf4f1 321 else
zchen311 1:eecf2e4bf4f1 322 chars[i]=0x000000;
zchen311 1:eecf2e4bf4f1 323 }
zchen311 1:eecf2e4bf4f1 324
zchen311 1:eecf2e4bf4f1 325 strip.setPixels(0, N, chars);
zchen311 1:eecf2e4bf4f1 326 strip.write();
zchen311 1:eecf2e4bf4f1 327 wait_ms(200);
zchen311 1:eecf2e4bf4f1 328 strip.clear();
zchen311 1:eecf2e4bf4f1 329 strip.write();
zchen311 1:eecf2e4bf4f1 330 wait_ms(200);
zchen311 1:eecf2e4bf4f1 331
zchen311 1:eecf2e4bf4f1 332 }
zchen311 1:eecf2e4bf4f1 333 }
zchen311 1:eecf2e4bf4f1 334
zchen311 1:eecf2e4bf4f1 335 void patternRight()
zchen311 1:eecf2e4bf4f1 336 {
zchen311 1:eecf2e4bf4f1 337 for(int j=0;j<3;j++){
zchen311 1:eecf2e4bf4f1 338 for (int i = 0; i < N; i++)
zchen311 1:eecf2e4bf4f1 339 {
zchen311 1:eecf2e4bf4f1 340 if (maskRight128[i] == 1)
zchen311 1:eecf2e4bf4f1 341 chars[i]=0x00FF00;
zchen311 1:eecf2e4bf4f1 342 else
zchen311 1:eecf2e4bf4f1 343 chars[i]=0x000000;
zchen311 0:4c7b2475af40 344 }
zchen311 1:eecf2e4bf4f1 345 strip.setPixels(0, N, chars);
zchen311 1:eecf2e4bf4f1 346 strip.write();
zchen311 1:eecf2e4bf4f1 347 wait_ms(200);
zchen311 1:eecf2e4bf4f1 348 strip.clear();
zchen311 1:eecf2e4bf4f1 349 strip.write();
zchen311 1:eecf2e4bf4f1 350 wait_ms(200);
zchen311 1:eecf2e4bf4f1 351
zchen311 1:eecf2e4bf4f1 352 }
zchen311 1:eecf2e4bf4f1 353
zchen311 1:eecf2e4bf4f1 354 }
zchen311 1:eecf2e4bf4f1 355
zchen311 1:eecf2e4bf4f1 356 void patternStop()
zchen311 1:eecf2e4bf4f1 357 {
zchen311 1:eecf2e4bf4f1 358 for(int j=0;j<3;j++){
zchen311 1:eecf2e4bf4f1 359 for (int i = 0; i < N; i++)
zchen311 1:eecf2e4bf4f1 360 {
zchen311 1:eecf2e4bf4f1 361 if (maskStop128[i] == 1)
zchen311 1:eecf2e4bf4f1 362 chars[i]=0xFF0000;
zchen311 1:eecf2e4bf4f1 363 else
zchen311 1:eecf2e4bf4f1 364 chars[i]=0x000000;
zchen311 1:eecf2e4bf4f1 365 }
zchen311 1:eecf2e4bf4f1 366 strip.setPixels(0, N, chars);
zchen311 1:eecf2e4bf4f1 367 strip.write();
zchen311 1:eecf2e4bf4f1 368 wait_ms(200);
zchen311 1:eecf2e4bf4f1 369 strip.clear();
zchen311 1:eecf2e4bf4f1 370 strip.write();
zchen311 1:eecf2e4bf4f1 371 wait_ms(200);
zchen311 1:eecf2e4bf4f1 372
zchen311 1:eecf2e4bf4f1 373 }
zchen311 1:eecf2e4bf4f1 374
zchen311 1:eecf2e4bf4f1 375 }
zchen311 1:eecf2e4bf4f1 376
zchen311 1:eecf2e4bf4f1 377 void patternNone()
zchen311 1:eecf2e4bf4f1 378 {
zchen311 1:eecf2e4bf4f1 379 strip.clear();
zchen311 1:eecf2e4bf4f1 380 }
zchen311 1:eecf2e4bf4f1 381
zchen311 1:eecf2e4bf4f1 382
zchen311 1:eecf2e4bf4f1 383
zchen311 1:eecf2e4bf4f1 384 void blinkOn()
zchen311 1:eecf2e4bf4f1 385 {
zchen311 1:eecf2e4bf4f1 386 strip.clear();
zchen311 1:eecf2e4bf4f1 387 for (int i = 0; i < N; i++)
zchen311 1:eecf2e4bf4f1 388 {
zchen311 1:eecf2e4bf4f1 389 chars[i]=0xFF0000;
zchen311 1:eecf2e4bf4f1 390 }
zchen311 1:eecf2e4bf4f1 391
zchen311 0:4c7b2475af40 392 strip.setPixels(0, N, chars);
zchen311 0:4c7b2475af40 393 strip.write();
zchen311 1:eecf2e4bf4f1 394 wait_ms(200);
zchen311 1:eecf2e4bf4f1 395 }
zchen311 1:eecf2e4bf4f1 396
zchen311 1:eecf2e4bf4f1 397 void blinkOff()
zchen311 1:eecf2e4bf4f1 398 {
zchen311 1:eecf2e4bf4f1 399 strip.clear();
zchen311 1:eecf2e4bf4f1 400 for (int i = 0; i < N; i++)
zchen311 1:eecf2e4bf4f1 401 {
zchen311 1:eecf2e4bf4f1 402 chars[i]=0x000000;
zchen311 1:eecf2e4bf4f1 403 }
zchen311 1:eecf2e4bf4f1 404 strip.setPixels(0, N, chars);
zchen311 1:eecf2e4bf4f1 405 strip.write();
zchen311 1:eecf2e4bf4f1 406 wait_ms(200);
zchen311 1:eecf2e4bf4f1 407 }
zchen311 1:eecf2e4bf4f1 408
zchen311 1:eecf2e4bf4f1 409
zchen311 1:eecf2e4bf4f1 410
zchen311 1:eecf2e4bf4f1 411 void distanceDemo(){
zchen311 1:eecf2e4bf4f1 412 float val = 21/ir;
zchen311 1:eecf2e4bf4f1 413 pc.printf("dist avg=%f\n",val);
zchen311 1:eecf2e4bf4f1 414
zchen311 1:eecf2e4bf4f1 415 if(val<70) {
zchen311 1:eecf2e4bf4f1 416 blinkOn();
zchen311 1:eecf2e4bf4f1 417 wait_ms(200);
zchen311 1:eecf2e4bf4f1 418 blinkOff();
zchen311 1:eecf2e4bf4f1 419 }
zchen311 1:eecf2e4bf4f1 420
zchen311 1:eecf2e4bf4f1 421 }
zchen311 1:eecf2e4bf4f1 422
zchen311 1:eecf2e4bf4f1 423 void emojiDemo(){
zchen311 1:eecf2e4bf4f1 424 for(int i=0;i<8;i++){
zchen311 1:eecf2e4bf4f1 425 putString(emoji[i]);
zchen311 1:eecf2e4bf4f1 426 wait_ms(200);
zchen311 1:eecf2e4bf4f1 427 strip.write();
zchen311 1:eecf2e4bf4f1 428 wait_ms(200);
zchen311 1:eecf2e4bf4f1 429 strip.clear();
zchen311 1:eecf2e4bf4f1 430 strip.write();
zchen311 1:eecf2e4bf4f1 431 wait_ms(200);
zchen311 1:eecf2e4bf4f1 432 }
zchen311 1:eecf2e4bf4f1 433 }
zchen311 1:eecf2e4bf4f1 434
zchen311 1:eecf2e4bf4f1 435
zchen311 1:eecf2e4bf4f1 436 int getIndex(int r, int c){
zchen311 1:eecf2e4bf4f1 437 if(c < 8){
zchen311 1:eecf2e4bf4f1 438 return (r * 8 + c);
zchen311 1:eecf2e4bf4f1 439 }else if(c > 15){
zchen311 1:eecf2e4bf4f1 440 return -1;
zchen311 1:eecf2e4bf4f1 441 }
zchen311 1:eecf2e4bf4f1 442 else{
zchen311 1:eecf2e4bf4f1 443 return (64 + r * 8 + (c-8));
zchen311 0:4c7b2475af40 444 }
zchen311 0:4c7b2475af40 445 }