DOGS-102 Graphic LCD module Example. Based on Igor Skochinsky's "DOGLCDDemo" program.
Dependencies: DOG-S_GraphicLCD mbed
Fork of DOGLCDDemo by
main.cpp@1:b7a86d680935, 2014-05-03 (annotated)
- Committer:
- ban4jp
- Date:
- Sat May 03 18:12:06 2014 +0000
- Revision:
- 1:b7a86d680935
- Parent:
- 0:2a5dccfd318f
first commit of an example code.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ban4jp | 1:b7a86d680935 | 1 | //#define DEBUG |
ban4jp | 1:b7a86d680935 | 2 | |
igorsk | 0:2a5dccfd318f | 3 | #include "mbed.h" |
ban4jp | 1:b7a86d680935 | 4 | |
ban4jp | 1:b7a86d680935 | 5 | //DOGS102 Library |
ban4jp | 1:b7a86d680935 | 6 | #include "DogLCD.h" |
igorsk | 0:2a5dccfd318f | 7 | #include "Graphics.h" |
igorsk | 0:2a5dccfd318f | 8 | #include "Cuboid.h" |
igorsk | 0:2a5dccfd318f | 9 | #include "TrimeshObject.h" |
ban4jp | 1:b7a86d680935 | 10 | |
ban4jp | 1:b7a86d680935 | 11 | //Demo Data |
igorsk | 0:2a5dccfd318f | 12 | #include "TieFighter.h" |
igorsk | 0:2a5dccfd318f | 13 | #include "hellombed.h" |
igorsk | 0:2a5dccfd318f | 14 | |
ban4jp | 1:b7a86d680935 | 15 | #if defined(TARGET_LPC1768) |
ban4jp | 1:b7a86d680935 | 16 | SPI spi(p11, NC, p13); |
ban4jp | 1:b7a86d680935 | 17 | DogLCD dog(spi, p18, p20, p19); // spi, cs, a0, reset |
ban4jp | 1:b7a86d680935 | 18 | #elif defined(TARGET_LPC1114) |
ban4jp | 1:b7a86d680935 | 19 | SPI spi(dp2, NC, dp6); |
ban4jp | 1:b7a86d680935 | 20 | DogLCD dog(spi, dp9, dp11, dp10); // spi, cs, a0, reset |
ban4jp | 1:b7a86d680935 | 21 | #endif |
ban4jp | 1:b7a86d680935 | 22 | |
igorsk | 0:2a5dccfd318f | 23 | Graphics g(&dog); |
igorsk | 0:2a5dccfd318f | 24 | TrimeshObject tf(tie_fighter_vertices, tie_fighter_faces, TIE_FIGHTER_NUM_FACES); |
igorsk | 0:2a5dccfd318f | 25 | Cuboid cube; |
igorsk | 0:2a5dccfd318f | 26 | |
igorsk | 0:2a5dccfd318f | 27 | int main() |
igorsk | 0:2a5dccfd318f | 28 | { |
igorsk | 0:2a5dccfd318f | 29 | dog.init(); |
igorsk | 0:2a5dccfd318f | 30 | // draw "hello mbed" |
igorsk | 0:2a5dccfd318f | 31 | dog.send_pic(pic_hellombed); |
ban4jp | 1:b7a86d680935 | 32 | wait(1); |
igorsk | 0:2a5dccfd318f | 33 | // draw rectangle around the screen |
igorsk | 0:2a5dccfd318f | 34 | g.line(0, 0, dog.width()-1, 0, 0xFFFFFF); |
ban4jp | 1:b7a86d680935 | 35 | wait(1); |
igorsk | 0:2a5dccfd318f | 36 | g.line(dog.width()-1, 0, dog.width()-1, dog.height()-1, 0xFFFFFF); |
ban4jp | 1:b7a86d680935 | 37 | wait(1); |
igorsk | 0:2a5dccfd318f | 38 | g.line(dog.width()-1, dog.height()-1, 0, dog.height()-1, 0xFFFFFF); |
ban4jp | 1:b7a86d680935 | 39 | wait(1); |
igorsk | 0:2a5dccfd318f | 40 | g.line(0, dog.height()-1, 0, 0, 0xFFFFFF); |
ban4jp | 1:b7a86d680935 | 41 | wait(3); |
igorsk | 0:2a5dccfd318f | 42 | |
igorsk | 0:2a5dccfd318f | 43 | dog.clear_screen(); |
igorsk | 0:2a5dccfd318f | 44 | float rotx = 0, roty = 0, rotz = 0; |
igorsk | 0:2a5dccfd318f | 45 | |
ban4jp | 1:b7a86d680935 | 46 | #ifdef DEBUG |
igorsk | 0:2a5dccfd318f | 47 | Timer timer; |
igorsk | 0:2a5dccfd318f | 48 | timer.start(); |
igorsk | 0:2a5dccfd318f | 49 | int frameno = 0; |
ban4jp | 1:b7a86d680935 | 50 | const int pollcount = 100; |
ban4jp | 1:b7a86d680935 | 51 | #endif |
ban4jp | 1:b7a86d680935 | 52 | |
igorsk | 0:2a5dccfd318f | 53 | // shift 1/4th of screen to the left |
igorsk | 0:2a5dccfd318f | 54 | tf.position(-dog.width() / 4, 0, 0); |
igorsk | 0:2a5dccfd318f | 55 | tf.colour(0xffffff); |
igorsk | 0:2a5dccfd318f | 56 | // shift 1/4th of screen to the right |
igorsk | 0:2a5dccfd318f | 57 | cube.position(+dog.width() / 4, 0, 0); |
igorsk | 0:2a5dccfd318f | 58 | cube.colour(0xffffff); |
igorsk | 0:2a5dccfd318f | 59 | while (1) |
igorsk | 0:2a5dccfd318f | 60 | { |
igorsk | 0:2a5dccfd318f | 61 | rotx += 0.1; |
igorsk | 0:2a5dccfd318f | 62 | roty += 0.08; |
igorsk | 0:2a5dccfd318f | 63 | rotz += 0.05; |
igorsk | 0:2a5dccfd318f | 64 | |
igorsk | 0:2a5dccfd318f | 65 | // set rotation angles |
igorsk | 0:2a5dccfd318f | 66 | tf.rotate(rotx, roty, rotz); |
igorsk | 0:2a5dccfd318f | 67 | cube.rotate(rotx, roty, rotz); |
igorsk | 0:2a5dccfd318f | 68 | // lock update |
igorsk | 0:2a5dccfd318f | 69 | dog.beginupdate(); |
igorsk | 0:2a5dccfd318f | 70 | dog.clear_screen(); |
igorsk | 0:2a5dccfd318f | 71 | // render TieFighter |
igorsk | 0:2a5dccfd318f | 72 | tf.render(g); |
igorsk | 0:2a5dccfd318f | 73 | // and the cube |
igorsk | 0:2a5dccfd318f | 74 | cube.render(g); |
igorsk | 0:2a5dccfd318f | 75 | // unlock update (and draw framebuffer) |
igorsk | 0:2a5dccfd318f | 76 | dog.endupdate(); |
ban4jp | 1:b7a86d680935 | 77 | #ifdef DEBUG |
igorsk | 0:2a5dccfd318f | 78 | if ( ++frameno == pollcount ) |
igorsk | 0:2a5dccfd318f | 79 | { |
igorsk | 0:2a5dccfd318f | 80 | // output fps to serial |
igorsk | 0:2a5dccfd318f | 81 | int end = timer.read_ms(); |
igorsk | 0:2a5dccfd318f | 82 | float fps = pollcount*1000.0/end; |
ban4jp | 1:b7a86d680935 | 83 | printf("%d frames, %d ms, FPS: %f\n", pollcount, end, fps); |
igorsk | 0:2a5dccfd318f | 84 | frameno = 0; |
igorsk | 0:2a5dccfd318f | 85 | timer.reset(); |
igorsk | 0:2a5dccfd318f | 86 | } |
ban4jp | 1:b7a86d680935 | 87 | #endif |
igorsk | 0:2a5dccfd318f | 88 | //dog.fill(40, 40, 52, 52, 0x000000); |
igorsk | 0:2a5dccfd318f | 89 | } |
igorsk | 0:2a5dccfd318f | 90 | } |