Binary Calculator code and directories
Dependencies: 4DGL-uLCD-SE DebounceIn PinDetect mbed
Fork of uLCD144G2_demo by
Code for binary calculator which calculates AND OR NOR NAND and binary addition and subtraction
Demo video showing the calculator and the functions: /media/uploads/nickw0606/img_0261.mov
Diff: main.cpp
- Revision:
- 6:f752accd632c
- Parent:
- 5:a1ef40ff0f78
- Child:
- 7:7bd7397ab89f
diff -r a1ef40ff0f78 -r f752accd632c main.cpp --- a/main.cpp Wed Nov 20 03:26:19 2013 +0000 +++ b/main.cpp Fri Nov 22 02:45:05 2013 +0000 @@ -19,15 +19,15 @@ #include "mbed.h" #include "uLCD_4DGL.h" -#define SIZE_X 128 -#define SIZE_Y 128 +//#define SIZE_X 128 +//#define SIZE_Y 128 // uLCD_4DGL uLCD(p9,p10,p11); // serial tx, serial rx, reset pin; int main() { - int pixelcolors[40][40]; + // 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..."); @@ -40,8 +40,9 @@ wait(.5); } uLCD.cls(); - uLCD.baudrate(256000); //jack up baud rate to max - //demo graphics + uLCD.baudrate(600000); //jack up baud rate to max for fast display + //if demo hangs here - try lower baud rates + //demo graphics commands uLCD.background_color(DGREY); uLCD.circle(60, 50, 30, 0xFF00FF); uLCD.triangle(120, 100, 40, 40, 10, 100, 0x0000FF); @@ -52,9 +53,11 @@ uLCD.circle(120, 60, 10, BLACK); uLCD.set_font(FONT_7X8); uLCD.text_mode(TRANSPARENT); + uLCD.text_bold(ON); uLCD.text_char('B', 9, 8, BLACK); uLCD.text_char('I',10, 8, BLACK); uLCD.text_char('G',11, 8, BLACK); + uLCD.text_italic(ON); uLCD.text_string("This is a test of string", 1, 4, FONT_7X8, WHITE); wait(2); // printf text only mode demo @@ -71,23 +74,38 @@ uLCD.printf("TxtLine %2D Page %D\n",i%16,i/16 ); i++; //16 lines with 18 charaters per line } -//draw an image using BLIT (Block Image Transfer) fastest way to transfer pixel data + wait(0.5); +//Bouncing Ball Demo + int x=50,y=21,vx=1,vy=1, radius=4; uLCD.background_color(BLACK); uLCD.cls(); - for(int i=0; i<40; i++) { - for(int k=0; k<40; k++) { - pixelcolors[i][k] = RED; - } + //draw walls + uLCD.line(0, 0, 127, 0, WHITE); + uLCD.line(127, 0, 127, 127, WHITE); + uLCD.line(127, 127, 0, 127, WHITE); + uLCD.line(0, 127, 0, 0, WHITE); + for (int i=0; i<1000; i++) { + //draw ball + uLCD.circle(x, y, radius, RED); + //bounce off edge walls? + if ((x<=radius+1) || (x>=126-radius)) vx = -vx; + if ((y<=radius+1) || (y>=126-radius)) vy = -vy; + //erase old ball location + uLCD.circle(x, y, radius, BLACK); + //move ball + x=x+vx; + y=y+vy; } - uLCD.BLIT(50, 50, 40, 40, &pixelcolors[0][0]); - wait(5); + wait(1); //draw an image pixel by pixel + int pixelcolors[50][50]; uLCD.background_color(BLACK); uLCD.cls(); -//compute Mandelbrot image for display +//compute Mandelbrot set image for display //image size in pixels and setup const unsigned ImageHeight=128; const unsigned ImageWidth=128; + //region to display double MinRe = -0.75104; double MaxRe = -0.7408; double MinIm = 0.10511; @@ -100,26 +118,26 @@ 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 & 0xF00)<<12)+((niterations & 0xF0)<<8)+((niterations & 0x0F)<<4) ); + if (niterations!=(MaxIterations-1)) + uLCD.pixel(x,y,((niterations & 0xF00)<<12)+((niterations & 0xF0)<<8)+((niterations & 0x0F)<<4) ); } } wait(5); - // PLASMA wave BLIT animation +// PLASMA wave BLIT animation +//draw an image using BLIT (Block Image Transfer) fastest way to transfer pixel data uLCD.cls(); - int num_cols=40; - int num_rows=40; + int num_cols=50; + int num_rows=50; double a,b,c=0.0; while(1) { for (int k=0; k<num_cols; k++) { @@ -131,15 +149,15 @@ // uses a and b to compute pixel colors based on rol and col location in array // also keeps colors at the same brightness level if ((a+b) <.667) - pixelcolors[i][k] = (255-(int(240.0*((a+b)/0.667)))<<16) | (int(240.0*((a+b)/0.667))<<8) | 0; + pixelcolors[i][k] = (255-(int(254.0*((a+b)/0.667)))<<16) | (int(254.0*((a+b)/0.667))<<8) | 0; else if ((a+b)<1.333) - pixelcolors[i][k] = (0 <<16) | (255-(int (240.0*((a+b-0.667)/0.667)))<<8) | int(240.0*((a+b-0.667)/0.667)); + pixelcolors[i][k] = (0 <<16) | (255-(int (254.0*((a+b-0.667)/0.667)))<<8) | int(254.0*((a+b-0.667)/0.667)); else - pixelcolors[i][k] = (int(255*((a+b-1.333)/0.667))<<16) | (0<<8) | (255-(int (240.0*((a+b-1.333)/0.667)))); + pixelcolors[i][k] = (int(255*((a+b-1.333)/0.667))<<16) | (0<<8) | (255-(int (254.0*((a+b-1.333)/0.667)))); } } - uLCD.BLIT(50, 50, 40, 40, &pixelcolors[0][0]); + uLCD.BLIT(39, 39, 50, 50, &pixelcolors[0][0]); c = c + 0.0314159*3.0; if (c > 6.2831) c = 0.0; } -} \ No newline at end of file +}