![](/media/cache/profiles/266dc8d468ccd5a7def18714b2647e92.jpg.50x50_q85.jpg)
DOGS-102 Graphic LCD module Example. Many circles are drawn and it further rebounds.
Dependencies: DOG-S_GraphicLCD mbed
Diff: main.cpp
- Revision:
- 0:d6cd1606ca86
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat May 03 18:12:21 2014 +0000 @@ -0,0 +1,74 @@ +//#define DEBUG + +#include "mbed.h" + +//DOGS102 Library +#include "DogLCD.h" +#include "Graphics.h" + +#if defined(TARGET_LPC1768) +SPI spi(p11, NC, p13); +DogLCD dog(spi, p18, p20, p19); // spi, cs, a0, reset +#elif defined(TARGET_LPC1114) +SPI spi(dp2, NC, dp6); +DogLCD dog(spi, dp9, dp11, dp10); // spi, cs, a0, reset +#endif + +Graphics g(&dog); + +int main() +{ + dog.init(); + dog.clear_screen(); + + int i; + int px[5] = {5,10,20,30,60}, py[5] = {10,40,30,20,5}, cr[5] = {7,9,11,13,15}; + int ax[5] = {1,1,1,-1,-1}, ay[5] = {1,1,-1,-1,1}; + +#ifdef DEBUG + Timer timer; + timer.start(); + int frameno = 0; + const int pollcount = 100; +#endif + + while(1) + { + // lock update + dog.beginupdate(); + dog.clear_screen(); + + g.line(0, 0, dog.width()-1, 0, 0xFFFFFF); + g.line(dog.width()-1, 0, dog.width()-1, dog.height()-1, 0xFFFFFF); + g.line(dog.width()-1, dog.height()-1, 0, dog.height()-1, 0xFFFFFF); + g.line(0, dog.height()-1, 0, 0, 0xFFFFFF); + + for(i = 0; i < 5; i++) + { + g.circle(px[i]+cr[i], py[i]+cr[i], cr[i], 0xFFFFFF); + + px[i] += ax[i]; + py[i] += ay[i]; + + if(px[i] <= 0 || px[i] >= dog.width() -cr[i]*2-1) ax[i] *= -1; + if(py[i] <= 0 || py[i] >= dog.height()-cr[i]*2-1) ay[i] *= -1; + } + + // unlock update (and draw framebuffer) + dog.endupdate(); + +#ifdef DEBUG + if ( ++frameno == pollcount ) + { + // output fps to serial + int end = timer.read_ms(); + float fps = pollcount*1000.0/end; + printf("%d frames, %d ms, FPS: %f\n", pollcount, end, fps); + frameno = 0; + timer.reset(); + } +#endif + + wait_ms(40); + } +}