DICE ROLLER
Dependencies: mbed wave_player Servo mbed-rtos 4DGL-uLCD-SE SDFileSystem_OldbutworkswithRTOS PinDetect MMA8452
Diff: main.cpp
- Revision:
- 3:454d1f4c8fd7
- Parent:
- 2:75727e89a717
- Child:
- 4:25a266a74a4c
diff -r 75727e89a717 -r 454d1f4c8fd7 main.cpp --- a/main.cpp Mon Nov 11 01:33:12 2013 +0000 +++ b/main.cpp Sun Nov 17 04:37:03 2013 +0000 @@ -27,8 +27,20 @@ int main() { - - uLCD.baudrate(115200); + // basic printf demo = 16 by 18 characters on screen + uLCD.printf("\nHello uLCD World\n"); //Default Green on black text + uLCD.printf("\n Starting Demo..."); + uLCD.text_width(4); //4X size text + uLCD.text_height(4); + uLCD.color(RED); + for (int i=10; i>=0; --i) { + uLCD.locate(1,2); + uLCD.printf("%2D",i); + wait(.5); + } + uLCD.cls(); + uLCD.baudrate(256000); //jack up baud rate to max + //demo graphics uLCD.background_color(DGREY); uLCD.circle(60, 50, 30, 0xFF00FF); uLCD.triangle(120, 100, 40, 40, 10, 100, 0x0000FF); @@ -37,11 +49,59 @@ uLCD.pixel(60, 60, BLACK); uLCD.read_pixel(120, 70); uLCD.circle(120, 60, 10, BLACK); - uLCD.set_font(FONT_8X8); + uLCD.set_font(FONT_7X8); uLCD.text_mode(TRANSPARENT); uLCD.text_char('B', 9, 8, BLACK); uLCD.text_char('I',10, 8, BLACK); uLCD.text_char('G',11, 8, BLACK); - uLCD.text_string("This is a test of string", 1, 14, FONT_5X7, WHITE); - + uLCD.text_string("This is a test of string", 1, 4, FONT_7X8, WHITE); + wait(2); + // printf text only mode demo + uLCD.background_color(BLUE); + uLCD.cls(); + uLCD.locate(0,0); + uLCD.color(WHITE); + uLCD.textbackground_color(BLUE); + uLCD.set_font(FONT_7X8); + uLCD.text_mode(OPAQUE); + int i=0; + while(i<64) { + if(i%16==0) uLCD.cls(); + uLCD.printf("TxtLine %2D Page %D\n",i%16,i/16 ); + i++; //16 lines with 18 charaters per line + } +//draw an image pixel by pixel + uLCD.background_color(BLACK); + uLCD.cls(); +//compute Mandelbrot image for display +//image size in pixels and setup + const unsigned ImageHeight=128; + const unsigned ImageWidth=128; + double MinRe = -0.75104; + double MaxRe = -0.7408; + double MinIm = 0.10511; + double MaxIm = MinIm+(MaxRe-MinRe)*ImageHeight/ImageWidth; + double Re_factor = (MaxRe-MinRe)/(ImageWidth-1); + double Im_factor = (MaxIm-MinIm)/(ImageHeight-1); + unsigned MaxIterations = 4096; + for(unsigned y=0; y<ImageHeight; ++y) { + double c_im = MaxIm - y*Im_factor; + for(unsigned x=0; x<ImageWidth; ++x) { + double c_re = MinRe + x*Re_factor; + double Z_re = c_re, Z_im = c_im; + bool isInside = true; + int niterations=0; + for(unsigned n=0; n<MaxIterations; ++n) { + double Z_re2 = Z_re*Z_re, Z_im2 = Z_im*Z_im; + if(Z_re2 + Z_im2 > 4) { + niterations = n; + isInside = false; + break; + } + Z_im = 2*Z_re*Z_im + c_im; + Z_re = Z_re2 - Z_im2 + c_re; + } + if(isInside==false) uLCD.pixel(x,y,((niterations & 0xFC0)<<14)+((niterations & 0x38)<<9)+((niterations & 0x07)<<5) ); + } + } }