DOGS-102 Graphic LCD module Example. Based on Igor Skochinsky's "DOGLCDDemo" program.

Dependencies:   DOG-S_GraphicLCD mbed

Fork of DOGLCDDemo by Igor Skochinsky

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?

UserRevisionLine numberNew 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 }