![](/media/cache/profiles/266dc8d468ccd5a7def18714b2647e92.jpg.50x50_q85.jpg)
DOGS-102 Graphic LCD module Example. Based on Igor Skochinsky's "DOGLCDDemo" program.
Dependencies: DOG-S_GraphicLCD mbed
Fork of DOGLCDDemo by
Revision 1:b7a86d680935, committed 2014-05-03
- Comitter:
- ban4jp
- Date:
- Sat May 03 18:12:06 2014 +0000
- Parent:
- 0:2a5dccfd318f
- Commit message:
- first commit of an example code.
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOG-S_GraphicLCD.lib Sat May 03 18:12:06 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/ban4jp/code/DOG-S_GraphicLCD/#2145a74df666
--- a/Graphics/Cuboid.cpp Thu Jan 14 00:49:39 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ -/* - * libmbed-graphics 2D and wireframe 3D graphics library for the MBED - * microcontroller platform - * Copyright (C) <2009> Michael Sheldon <mike@mikeasoft.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include "Cuboid.h" - -// six sides, four vertices in each -int _cube[6][4][3]={ - { - {-10,-10,-10}, - { 10,-10,-10}, - { 10, 10,-10}, - {-10, 10,-10} - },{ - {-10,-10, 10}, - { 10,-10, 10}, - { 10, 10, 10}, - {-10, 10, 10} - },{ - {-10,-10,-10}, - { 10,-10,-10}, - { 10,-10, 10}, - {-10,-10, 10} - },{ - {-10, 10,-10}, - { 10, 10,-10}, - { 10, 10, 10}, - {-10, 10, 10} - },{ - {-10,-10,-10}, - {-10, 10,-10}, - {-10, 10, 10}, - {-10,-10, 10} - },{ - { 10,-10,-10}, - { 10, 10,-10}, - { 10, 10, 10}, - { 10,-10, 10} - } -}; - - -Cuboid::Cuboid() - : Object3D::Object3D() { - -} - -void Cuboid::render(Graphics &g) -{ - int side, v; - int x[4], y[4], z[4]; - - for (side = 0; side < 6; side++) - { - for (v = 0; v < 4; v++) - { - x[v] = _cube[side][v][0]; - y[v] = _cube[side][v][1]; - z[v] = _cube[side][v][2]; - } - rotate3d(x, y, z, _rx, _ry, _rz, 4); - for (v = 0; v < 4; v++) - { - x[v] += _x; - y[v] += _y; - z[v] += _z; - } - for (v = 0; v < 4; v++) - { - g.line3d(x[v], y[v], z[v], x[(v+1)%4], y[(v+1)%4], z[(v+1)%4], _colour); - } - } - - /*x0 = _cube[1][0][0]; - y0 = _cube[1][0][1]; - z0 = _cube[1][0][2]; - rotate3d(&x0, &y0, &z0, _rx, _ry, _rz); - x1 = _cube[0][0][0]; - y1 = _cube[0][0][1]; - z1 = _cube[0][0][2]; - rotate3d(&x1, &y1, &z1, _rx, _ry, _rz); - g.line3d(x0 + _x, y0 + _y, z0 + _z, x1 + _x, y1 + _y, z1 + _z, _colour);*/ -} \ No newline at end of file
--- a/Graphics/Cuboid.h Thu Jan 14 00:49:39 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -/* - * libmbed-graphics 2D and wireframe 3D graphics library for the MBED - * microcontroller platform - * Copyright (C) <2009> Michael Sheldon <mike@mikeasoft.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef MBED_CUBOID_H -#define MBED_CUBOID_H - -#include "Object3D.h" - -/* Class: Cuboid - * Displays a 3D wireframe cuboid. - */ -class Cuboid : public Object3D { - - public: - Cuboid(); - - /* Function: render - * Draws the cuboid to the specified graphical context. - * - * Parameters: - * g - The graphical context to which this cuboid should be rendered. - */ - virtual void render(Graphics &g); - -}; -#endif \ No newline at end of file
--- a/Graphics/Graphics.cpp Thu Jan 14 00:49:39 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,117 +0,0 @@ -/* - * libmbed-graphics 2D and wireframe 3D graphics library for the MBED - * microcontroller platform - * Copyright (C) <2009> Michael Sheldon <mike@mikeasoft.com> - * Optimized and adapted for AbstractLCD interface - * Copyright (C) <2010> Igor Skochinsky <skochinsky@gmail.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include "Graphics.h" - -// swap two values -#define SWAP(a, b) (((a) == (b)) || (((a) ^= (b)), ((b) ^= (a)), ((a) ^= (b)))) - -Graphics::Graphics(AbstractLCD *lcd) - : _lcd(lcd) { - _cx3d = _lcd->width() / 2; - _cy3d = _lcd->height() / 2; - _cz3d = 150; -} - -void Graphics::line(int x0, int y0, int x1, int y1, int colour) { - // Bresenham - //printf("line(%d, %d, %d, %d, %d)\n", x0, y0, x1, y1, colour); - bool steep = abs(y1 - y0) > abs(x1 - x0); - int temp, deltax, deltay, error, ystep, y, x; - if (steep) { - temp = y0; - y0 = x0; - x0 = temp; - temp = y1; - y1 = x1; - x1 = temp; - } - if (x0 > x1) { - temp = x1; - x1 = x0; - x0 = temp; - temp = y1; - y1 = y0; - y0 = temp; - } - deltax = x1 - x0; - deltay = abs(y1 - y0); - error = deltax / 2; - y = y0; - if (y0 < y1) { - ystep = 1; - } else { - ystep = -1; - } - for (x=x0; x<=x1; x++) { - if (steep) { - _lcd->pixel(y, x, colour); - } else { - _lcd->pixel(x, y, colour); - } - error = error - deltay; - if (error < 0) { - y = y + ystep; - error = error + deltax; - } - } -} - -void Graphics::line3d(int x0, int y0, int z0, int x1, int y1, int z1, int colour) { - if (z0 + _cz3d <= 0 || z1 + _cz3d <= 0) { - // Behind the camera - return; - } - - int u0 = _cx3d + x0 * _cz3d / (z0 + _cz3d); - int v0 = _cy3d + y0 * _cz3d / (z0 + _cz3d); - int u1 = _cx3d + x1 * _cz3d / (z1 + _cz3d); - int v1 = _cy3d + y1 * _cz3d / (z1 + _cz3d); - line(u0, v0, u1, v1, colour); -} - -void Graphics::circle(int cx, int cy, int radius, int colour) { - int x = 0; - int y = radius; - int d = 3 - (2 * radius); - - while (x <= y) { - _lcd->pixel(cx + x, cy + y, colour); - _lcd->pixel(cx + y, cy + x, colour); - _lcd->pixel(cx - x, cy + y, colour); - _lcd->pixel(cx + y, cy - x, colour); - _lcd->pixel(cx - x, cy - y, colour); - _lcd->pixel(cx - y, cy - x, colour); - _lcd->pixel(cx + x, cy - y, colour); - _lcd->pixel(cx - y, cy + x, colour); - - if (d<0) - d += (4 * x) + 6; - else - { - d += (4 * (x - y)) + 10; - y--; - } - x++; - } -}
--- a/Graphics/Graphics.h Thu Jan 14 00:49:39 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ -/* - * libmbed-graphics 2D and wireframe 3D graphics library for the MBED - * microcontroller platform - * Copyright (C) <2009> Michael Sheldon <mike@mikeasoft.com> - * Optimized and adapted for AbstractLCD interface - * Copyright (C) <2010> Igor Skochinsky <skochinsky@gmail.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef MBED_GRAPHICS_H -#define MBED_GRAPHICS_H - -#include "mbed.h" -#include "AbstractLCD.h" - -/* Class: Graphics - * A general purpose graphics library providing 2D and wireframe 3D functionality. - * Needs an implementation of AbstractLCD interface to work. - */ -class Graphics -{ - - public: - /* Constructor: Graphics - * Instantiate the graphics library. - * - * Parameters: - * lcd - an implementation of LCD device - */ - Graphics(AbstractLCD *lcd); - - /* Function: line - * Draw a coloured line between two points. - * - * Parameters: - * x0 - X co-ordinate of the start of the line. - * y0 - Y co-ordinate of the start of the line. - * x1 - X co-ordinate of the end of the line. - * y1 - Y co-ordinate of the end of the line. - * colour - The colour of the line. - */ - void line(int x0, int y0, int x1, int y1, int colour); - - /* Function: line3d - * Draws a coloured line in 3D space. The 3D origin point is in - * the centre of the screen. - * - * Parameters: - * x0 - X co-ordinate of the start of the line. - * y0 - Y co-ordinate of the start of the line. - * z0 - Z (depth) co-ordinate of the start of the line. - * x1 - X co-ordinate of the end of the line. - * y1 - Y co-ordinate of the end of the line. - * z1 - Z co-ordinate of the end of the line. - * colour - The colour of the line. - */ - void line3d(int x0, int y0, int z0, int x1, int y1, int z0, int colour); - - /* Function: circle - * Draw a coloured circle. - * - * Parameters: - * cx - X co-ordinate of the centre of the circle. - * cy - Y co-ordinate of the centre of the circle. - * radius - The radius of the circle. - * colour - The colour of the circle. - */ - void circle(int cx, int cy, int radius, int colour); - - protected: - int _cx3d, _cy3d, _cz3d; // 3D focal point - AbstractLCD *_lcd; - -}; - -#endif
--- a/Graphics/Object3D.cpp Thu Jan 14 00:49:39 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,156 +0,0 @@ -/* - * libmbed-graphics 2D and wireframe 3D graphics library for the MBED - * microcontroller platform - * Copyright (C) <2009> Michael Sheldon <mike@mikeasoft.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include "Object3D.h" - -Object3D::Object3D() { - _x = 0; - _y = 0; - _z = 0; - _rx = 0; - _ry = 0; - _rz = 0; - _sx = 1; - _sy = 1; - _sz = 1; - _colour = 0xffffff; -} - -void Object3D::position(int x, int y, int z) { - _x = x; - _y = y; - _z = z; -} - -void Object3D::rotate(float rx, float ry, float rz) { - _rx = rx; - _ry = ry; - _rz = rz; -} - -void Object3D::scale(float sx, float sy, float sz) { - _sx = sx; - _sy = sy; - _sz = sz; -} - -void Object3D::colour(int colour) { - _colour = colour; -} - -#define FASTSINCOS - -#ifdef FASTSINCOS - -// http://www.dspguru.com/dsp/tricks/parabolic-approximation-of-sin-and-cos - -#define M_PI 3.14159265358979323846 -#define M_PI_2 1.57079632679489661923 -#define M_PI_4 0.785398163397448309616 -#define M_C 0.71256755058 - -void sincosf(float angle, float *sinx, float *cosx) -{ - int quarter = int(floor(angle/M_PI_2)); - - float modphase = angle - quarter*M_PI_2; - if ( modphase < 0 ) - modphase += M_PI_2; - - quarter %= 4; - if ( quarter < 0 ) - quarter += 4; - - modphase = modphase/M_PI_2; - - //printf("Angle: %f, q: %d, mod: %f\n", angle, quarter, modphase); - float x, temp; - switch (quarter) - { - case 0: - // First quarter, angle = 0 .. pi/2 - x = modphase - 0.5f; // 1 sub - temp = (2 - 4*M_C)*x*x + M_C; // 2 mul, 1 add - *sinx = temp + x; // 1 add - *cosx = temp - x; // 1 sub - break; - case 1: - // Second quarter, angle = pi/2 .. pi - x = 0.5f - modphase; // 1 sub - temp = (2 - 4*M_C)*x*x + M_C; // 2 mul, 1 add - *sinx = x + temp; // 1 add - *cosx = x - temp; // 1 sub - break; - case 2: - // Third quarter, angle = pi .. 1.5pi - x = modphase - 0.5f; // 1 sub - temp = (4*M_C - 2)*x*x - M_C; // 2 mul, 1 sub - *sinx = temp - x; // 1 sub - *cosx = temp + x; // 1 add - break; - case 3: - // Fourth quarter, angle = 1.5pi..2pi - x = modphase - 0.5f; // 1 sub - temp = (2 - 4*M_C)*x*x + M_C; // 2 mul, 1 add - *sinx = x - temp; // 1 sub - *cosx = x + temp; // 1 add - break; - } -} - -#else // FASTSINCOS - -void sincosf(float angle, float *sinx, float *cosx) -{ - *sinx = sin(angle); - *cosx = cos(angle); -} - -#endif // FASTSINCOS - - -void rotate3d(int *x, int *y, int *z, float anglex, float angley, float anglez, int count) -{ - float sinx, cosx, siny, cosy, sinz, cosz; - sincosf(anglex, &sinx, &cosx); - sincosf(angley, &siny, &cosy); - sincosf(anglez, &sinz, &cosz); - - for ( int i=0; i < count; i++) - { - int x1 = x[i]; - int y1 = y[i]; - int z1 = z[i]; - - int y2 = cosx * y1 - sinx * z1; - int z2 = sinx * y1 + cosx * z1; - - int x2 = cosy * x1 + siny * z2; - int z3 = -siny * x1 + cosy * z2; - - int x3 = cosz * x2 - sinz * y2; - int y3 = sinz * x2 + cosz * y2; - - x[i] = x3; - y[i] = y3; - z[i] = z3; - } -}
--- a/Graphics/Object3D.h Thu Jan 14 00:49:39 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -/* - * libmbed-graphics 2D and wireframe 3D graphics library for the MBED - * microcontroller platform - * Copyright (C) <2009> Michael Sheldon <mike@mikeasoft.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef MBED_OBJECT3D_H -#define MBED_OBJECT3D_H - -#include "Graphics.h" - -/* Class: Object3D - * General purpose 3D base object, new 3D objects should inherit - * from this class. - */ -class Object3D { - - public: - Object3D(); - - /* Function: position - * Specify the position of the object in 3D space. - * - * Parameters: - * x - X co-ordinate of the point that the centre of the object should be placed at. - * y - Y co-ordinate of the point that the centre of the object should be placed at. - * z - Z co-ordinate of the point that the centre of the object should be placed at. - */ - void position(int x, int y, int z); - - /* Function: rotate - * Rotate the object about it's centre point. - * - * Parameters: - * rx - Component of the rotation along the x-axis in radians. - * ry - Component of the rotation along the y-axis in radians. - * rz - Component of the rotation along the z-axis in radians. - */ - void rotate(float rx, float ry, float rz); - - /* Function: scale - * Modify the size of the object. - * - * Parameters: - * sx - Proportion to change the object's size by along the x axis. - * sy - Proportion to change the object's size by along the y axis. - * sz - Proportion to change the object's size by along the z axis. - */ - void scale(float sx, float sy, float sz); - - /* Function: colour - * Sets the colour of the object. - * - * Parameters: - * colour - The colour of the object. - */ - void colour(int colour); - - /* Function: render - * Draws the object on the specified graphical context. - * - * Parameters: - * g - The graphical context to which the object should be rendered. - */ - virtual void render(Graphics &g) = 0; - - protected: - int _x, _y, _z; - float _rx, _ry, _rz; - float _sx, _sy, _sz; - int _colour; -}; - - -/* Function: rotate3d - * Rotates point(s) in 3D space about origin (0,0,0) - * - * Parameters: - * x - Pointer to the x co-ordinate(s) of the point(s) to be rotated. - * y - Pointer to the y co-ordinate(s) of the point(s) to be rotated. - * z - Pointer to the z co-ordinate(s) of the point(s) to be rotated. - * anglex - The angle to rotate the point by around axis x in radians. - * angley - The angle to rotate the point by around axis y in radians. - * anglez - The angle to rotate the point by around axis z in radians. - * count - count of coordinates pointed to by x, y and z - */ -void rotate3d(int *x, int *y, int *z, float anglex, float angley, float anglez, int count = 1); - -#endif \ No newline at end of file
--- a/Graphics/TrimeshObject.cpp Thu Jan 14 00:49:39 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* - * libmbed-graphics 2D and wireframe 3D graphics library for the MBED - * microcontroller platform - * Copyright (C) <2009> Michael Sheldon <mike@mikeasoft.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include "TrimeshObject.h" - -TrimeshObject::TrimeshObject(int vertices[][3], int faces[][3], int num_faces) - : Object3D::Object3D() { - _vertices = vertices; - _faces = faces; - _num_faces = num_faces; -} - -void TrimeshObject::render(Graphics &g) { - int face, fv0, fv1, fv2; - int *v0, *v1, *v2; - int x[3], y[3], z[3]; - for (face = 0; face < _num_faces; face++) { - fv0 = _faces[face][0]; - fv1 = _faces[face][1]; - fv2 = _faces[face][2]; - v0 = _vertices[fv0]; - v1 = _vertices[fv1]; - v2 = _vertices[fv2]; - - x[0] = v0[0]; x[1] = v1[0]; x[2] = v2[0]; - y[0] = v0[1]; y[1] = v1[1]; y[2] = v2[1]; - z[0] = v0[2]; z[1] = v1[2]; z[2] = v2[2]; - rotate3d(x, y, z, _rx, _ry, _rz, 3); - - for ( int i=0; i < 3; i++ ) - { - x[i] += _x; - y[i] += _y; - z[i] += _z; - } - - g.line3d(x[0], y[0], z[0], x[1], y[1], z[1], _colour); - g.line3d(x[1], y[1], z[1], x[2], y[2], z[2], _colour); - g.line3d(x[2], y[2], z[2], x[0], y[0], z[0], _colour); - } -} \ No newline at end of file
--- a/Graphics/TrimeshObject.h Thu Jan 14 00:49:39 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* - * libmbed-graphics 2D and wireframe 3D graphics library for the MBED - * microcontroller platform - * Copyright (C) <2009> Michael Sheldon <mike@mikeasoft.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef MBED_TRIMESHOBJECT_H -#define MBED_TRIMESHOBJECT_H - -#include "Object3D.h" - -/* Class: TrimeshObject - * Constructs 3D objects from triangle meshes specified by lists of - * vertices and faces. - */ -class TrimeshObject : public Object3D { - - public: - /* Constructor: TrimeshObject - * Instantiate a trimesh object. - * - * Parameters: - * vertices - A multidimensional array containing a list of vertices. - * faces - A multidimensional array containing a list of faces, connecting vertices together to form triangles. - * num_faces - The number of faces in the "faces" array. - */ - TrimeshObject(int vertices[][3], int faces[][3], int num_faces); - - /* Function: render - * Draws the trimesh object to the specified graphical context. - * - * Parameters: - * g - The graphical context to which the trimesh object should be rendered. - */ - virtual void render(Graphics &g); - - protected: - int (*_vertices)[3]; - int (*_faces)[3]; - int _num_faces; - -}; - -#endif \ No newline at end of file
--- a/LCD/AbstractLCD.h Thu Jan 14 00:49:39 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -#ifndef MBED_ABSTRACTLCD_H -#define MBED_ABSTRACTLCD_H - -#include "mbed.h" - -/* Class: AbstractLCD - * - */ - -class AbstractLCD -{ -public: - virtual ~AbstractLCD() {}; - // return LDC width - virtual int width() = 0; - // return LDC height - virtual int height() = 0; - // put a pixel on the screen - virtual void pixel(int x, int y, int colour) = 0; - // fill a rectangular area - virtual void fill(int x, int y, int width, int height, int colour) = 0; - // begin an update sequence: - // remember drawing operations but do not update the display - virtual void beginupdate() = 0; - // end an update sequence - // update display to reflect all queued operations - virtual void endupdate() = 0; -}; - -#endif
--- a/LCD/DogLCD.cpp Thu Jan 14 00:49:39 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,207 +0,0 @@ -#include "DogLCD.h" - -// macro to make sure x falls into range from low to high (inclusive) -#define CLAMP(x, low, high) { if ( (x) < (low) ) x = (low); if ( (x) > (high) ) x = (high); } while (0); - -void DogLCD::_send_commands(const unsigned char* buf, size_t size) -{ - // for commands, A0 is low - _spi.format(8,0); - _spi.frequency(10000000); - _cs = 0; - _a0 = 0; - while ( size-- > 0 ) - _spi.write(*buf++); - _cs = 1; -} - -void DogLCD::_send_data(const unsigned char* buf, size_t size) -{ - // for data, A0 is high - _spi.format(8,0); - _spi.frequency(10000000); - _cs = 0; - _a0 = 1; - while ( size-- > 0 ) - _spi.write(*buf++); - _cs = 1; - _a0 = 0; -} - -// set column and page number -void DogLCD::_set_xy(int x, int y) -{ - //printf("_set_xy(%d,%d)\n", x, y); - CLAMP(x, 0, LCDWIDTH-1); - CLAMP(y, 0, LCDPAGES-1); - unsigned char cmd[3]; - cmd[0] = 0xB0 | (y&0xF); - cmd[1] = 0x10 | (x&0xF); - cmd[2] = (x>>4)&0xF; - _send_commands(cmd, 3); -} - -// initialize and turn on the display -void DogLCD::init() -{ - const unsigned char init_seq[] = { - 0x40, //Display start line 0 - 0xa1, //ADC reverse - 0xc0, //Normal COM0...COM63 - 0xa6, //Display normal - 0xa2, //Set Bias 1/9 (Duty 1/65) - 0x2f, //Booster, Regulator and Follower On - 0xf8, //Set internal Booster to 4x - 0x00, - 0x27, //Contrast set - 0x81, - 0x16, - 0xac, //No indicator - 0x00, - 0xaf, //Display on - }; - //printf("Reset=L\n"); - _reset = 0; - //printf("Power=H\n"); - _power = 1; - //wait_ms(1); - //printf("Reset=H\n"); - _reset = 1; - //wait(5); - //printf("Sending init commands\n"); - _send_commands(init_seq, sizeof(init_seq)); -} - -void DogLCD::send_pic(const unsigned char* data) -{ - //printf("Sending picture\n"); - for (int i=0; i<LCDPAGES; i++) - { - _set_xy(0, i); - _send_data(data + i*LCDWIDTH, LCDWIDTH); - } -} - -void DogLCD::clear_screen() -{ - //printf("Clear screen\n"); - memset(_framebuffer, 0, sizeof(_framebuffer)); - if ( _updating == 0 ) - { - send_pic(_framebuffer); - } -} - -void DogLCD::all_on(bool on) -{ - //printf("Sending all on %d\n", on); - unsigned char cmd = 0xA4 | (on ? 1 : 0); - _send_commands(&cmd, 1); -} - -void DogLCD::pixel(int x, int y, int colour) -{ - CLAMP(x, 0, LCDWIDTH-1); - CLAMP(y, 0, LCDHEIGHT-1); - int page = y / 8; - unsigned char mask = 1<<(y%8); - unsigned char *byte = &_framebuffer[page*LCDWIDTH + x]; - if ( colour == 0 ) - *byte &= ~mask; // clear pixel - else - *byte |= mask; // set pixel - if ( !_updating ) - { - _set_xy(x, page); - _send_data(byte, 1); - } -} - -void DogLCD::fill(int x, int y, int width, int height, int colour) -{ - /* - If we need to fill partial pages at the top: - - ......+---+---+..... - ^ | = | = | = : don't touch - | | = | = | * : update - y%8 | = | = | - | | = | = | - v | = | = | - y----> | * | * | - | * | * | - | * | * | - +---+---+ - */ - //printf("fill(x=%d, y=%d, width=%d, height=%d, colour=%x)\n", x, y, width, height, colour); - CLAMP(x, 0, LCDWIDTH-1); - CLAMP(y, 0, LCDHEIGHT-1); - CLAMP(width, 0, LCDWIDTH - x); - CLAMP(height, 0, LCDHEIGHT - y); - int page = y/8; - int firstpage = page; - int partpage = y%8; - if ( partpage != 0 ) - { - // we need to process partial bytes in the top page - unsigned char mask = (1<<partpage) - 1; // this mask has 1s for bits we need to leave - unsigned char *bytes = &_framebuffer[page*LCDWIDTH + x]; - for ( int i = 0; i < width; i++, bytes++ ) - { - // clear "our" bits - *bytes &= mask; - if ( colour != 0 ) - *bytes |= ~mask; // set our bits - } - height -= partpage; - page++; - } - while ( height >= 8 ) - { - memset(&_framebuffer[page*LCDWIDTH + x], colour == 0 ? 0 : 0xFF, width); - page++; - height -= 8; - } - if ( height != 0 ) - { - // we need to process partial bytes in the bottom page - unsigned char mask = ~((1<<partpage) - 1); // this mask has 1s for bits we need to leave - unsigned char *bytes = &_framebuffer[page*LCDWIDTH + x]; - for ( int i = 0; i < width; i++, bytes++ ) - { - // clear "our" bits - *bytes &= mask; - if ( colour != 0 ) - *bytes |= ~mask; // set our bits - } - page++; - } - //printf("_updating=%d\n", _updating); - if ( !_updating ) - { - int laststpage = page; - for ( page = firstpage; page < laststpage; page++) - { - //printf("setting x=%d, page=%d\n", x, page); - _set_xy(x, page); - //printf("sending %d bytes at offset %x\n", width, page*LCDWIDTH + x); - _send_data(&_framebuffer[page*LCDWIDTH + x], width); - } - } -} - -void DogLCD::beginupdate() -{ - _updating++; - //printf("beginupdate: %d\n", _updating); -} - -void DogLCD::endupdate() -{ - _updating--; - //printf("endupdate: %d\n", _updating); - if ( _updating == 0 ) - { - send_pic(_framebuffer); - } -}
--- a/LCD/DogLCD.h Thu Jan 14 00:49:39 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -#ifndef MBED_DOGLCD_H -#define MBED_DOGLCD_H - -#include "AbstractLCD.h" - -/*********** - * Module for Electronic Assembly's DOGL128-6 display module - * Should be compatible with other modules using ST7565 controller - ***********/ - -#define LCDWIDTH 128 -#define LCDHEIGHT 64 -#define LCDPAGES (LCDHEIGHT+7)/8 - -/* - - Each page is 8 lines, one byte per column - - Col0 - +---+-- - | 0 | -Page 0 | 1 | - | 2 | - | 3 | - | 4 | - | 5 | - | 6 | - | 7 | - +---+-- -*/ - -/* - LCD interface class. - Usage: - DogLCD dog(spi, pin_power, pin_cs, pin_a0, pin_reset); - where spi is an instance of SPI class -*/ - -class DogLCD: public AbstractLCD -{ - SPI& _spi; - DigitalOut _cs, _a0, _reset, _power; - int _updating; - void _send_commands(const unsigned char* buf, size_t size); - void _send_data(const unsigned char* buf, size_t size); - void _set_xy(int x, int y); - unsigned char _framebuffer[LCDWIDTH*LCDPAGES]; -public: - DogLCD(SPI& spi, PinName power, PinName cs, PinName a0, PinName reset): - _spi(spi), _cs(cs), _a0(a0), _reset(reset), _power(power), _updating(0) - { - } - // initialize and turn on the display - void init(); - // send a 128x64 picture for the whole screen - void send_pic(const unsigned char* data); - // clear screen - void clear_screen(); - // turn all pixels on - void all_on(bool on = true); - - // AbstractLCD methods - virtual int width() {return LCDWIDTH;}; - virtual int height() {return LCDHEIGHT;}; - virtual void pixel(int x, int y, int colour); - virtual void fill(int x, int y, int width, int height, int colour); - virtual void beginupdate(); - virtual void endupdate(); -}; - -#endif \ No newline at end of file
--- a/hellombed.h Thu Jan 14 00:49:39 2010 +0000 +++ b/hellombed.h Sat May 03 18:12:06 2014 +0000 @@ -1,4 +1,4 @@ -unsigned char pic_hellombed [] = +const unsigned char pic_hellombed [] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -6,62 +6,54 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0xC0, 0xC0, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x80, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, +0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFF, 0xCC, 0x8C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x8F, +0x8F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x7E, +0xFF, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC1, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, +0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x80, 0xC0, 0xC0, +0x60, 0x60, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xC0, 0x60, 0x60, +0x60, 0x60, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0xC0, +0xC0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC1, 0x80, 0x00, 0x00, +0x00, 0x80, 0xC1, 0xFF, 0x7F, 0x00, 0x00, 0x7E, 0xFF, 0xCC, 0x8C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, +0x8F, 0x8F, 0x00, 0x00, 0x7F, 0xFF, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC1, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, +0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, +0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00, -0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x00, 0x00, 0x00, -0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, -0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x60, -0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x60, 0xC0, -0xC0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x00, 0x00, -0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0x00, -0x00, 0x00, 0x00, 0x7E, 0xFF, 0xCC, 0x8C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x8F, 0x8F, 0x00, 0x00, -0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x7E, 0xFF, 0xC1, 0x80, -0x00, 0x00, 0x00, 0x00, 0x80, 0xC1, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC1, -0xFF, 0x7F, 0x00, 0x00, 0x7E, 0xFF, 0xCC, 0x8C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x8F, 0x8F, 0x00, -0x00, 0x7F, 0xFF, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, -0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
--- a/main.cpp Thu Jan 14 00:49:39 2010 +0000 +++ b/main.cpp Sat May 03 18:12:06 2014 +0000 @@ -1,13 +1,25 @@ +//#define DEBUG + #include "mbed.h" + +//DOGS102 Library +#include "DogLCD.h" #include "Graphics.h" #include "Cuboid.h" #include "TrimeshObject.h" + +//Demo Data #include "TieFighter.h" -#include "DogLCD.h" #include "hellombed.h" -SPI spi(p5, NC, p7); -DogLCD dog(spi, p17, p18, p20, p19); // spi, power, cs, a0, reset +#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); TrimeshObject tf(tie_fighter_vertices, tie_fighter_faces, TIE_FIGHTER_NUM_FACES); Cuboid cube; @@ -17,24 +29,27 @@ dog.init(); // draw "hello mbed" dog.send_pic(pic_hellombed); - wait(5); + wait(1); // draw rectangle around the screen g.line(0, 0, dog.width()-1, 0, 0xFFFFFF); - wait(2); + wait(1); g.line(dog.width()-1, 0, dog.width()-1, dog.height()-1, 0xFFFFFF); - wait(2); + wait(1); g.line(dog.width()-1, dog.height()-1, 0, dog.height()-1, 0xFFFFFF); - wait(2); + wait(1); g.line(0, dog.height()-1, 0, 0, 0xFFFFFF); - wait(5); + wait(3); dog.clear_screen(); float rotx = 0, roty = 0, rotz = 0; +#ifdef DEBUG Timer timer; timer.start(); int frameno = 0; - const int pollcount = 10; + const int pollcount = 100; +#endif + // shift 1/4th of screen to the left tf.position(-dog.width() / 4, 0, 0); tf.colour(0xffffff); @@ -59,15 +74,17 @@ cube.render(g); // 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("\r%d frames, %d ms, FPS: %f", pollcount, end, fps); + printf("%d frames, %d ms, FPS: %f\n", pollcount, end, fps); frameno = 0; timer.reset(); } +#endif //dog.fill(40, 40, 52, 52, 0x000000); } }
--- a/mbed.bld Thu Jan 14 00:49:39 2010 +0000 +++ b/mbed.bld Sat May 03 18:12:06 2014 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/49a220cc26e0 +http://mbed.org/users/mbed_official/code/mbed/builds/8a40adfe8776 \ No newline at end of file