From 90f8e8d60668f84cc9f7dff87bbfa71588883c1e Mon Sep 17 00:00:00 2001 From: JP Date: Thu, 12 Jun 2014 11:17:32 +1000 Subject: [PATCH] added Rotating Cube example by Jim Lindblom --- 12x24Font.h | 37 ++++++++++ MicroView.cpp | 12 ++++ README.md | 7 +- examples/MicroViewCube/MicroViewCube.ino | 88 ++++++++++++++++++++++++ 4 files changed, 143 insertions(+), 1 deletion(-) create mode 100644 12x24Font.h create mode 100644 examples/MicroViewCube/MicroViewCube.ino diff --git a/12x24Font.h b/12x24Font.h new file mode 100644 index 0000000..c58fd86 --- /dev/null +++ b/12x24Font.h @@ -0,0 +1,37 @@ +//------------------------------------------------------------------------------ +// File generated by LCD Assistant +// http://en.radzio.dxp.pl/bitmap_converter/ +//------------------------------------------------------------------------------ + +#ifndef FONT12X24_H +#define FONT12X24_H +#include +static const unsigned char font12x24 [] PROGMEM = { + // first row defines - FONTWIDTH, FONTHEIGHT, ASCII START CHAR, TOTAL CHARACTERS, FONT MAP WIDTH HIGH, FONT MAP WIDTH LOW (2,56 meaning 256) + 12,24,48,10,1,20, + 0x1F, 0x1F, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x1F, 0x1F, 0xFF, 0xFF, 0x9F, 0x9F, 0x9F, 0x9F, + 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x9F, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, + 0x1F, 0x1F, 0xFF, 0xFF, 0x9F, 0x9F, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x1F, 0x1F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0xE7, 0xE7, + 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xFF, 0xFF, 0x7F, 0x7F, 0x9F, 0x9F, 0xE7, 0xE7, 0xE7, 0xE7, + 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x87, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x07, 0x07, 0xFF, 0xFF, + 0x1F, 0x1F, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x1F, 0x1F, 0xFF, 0xFF, 0x1F, 0x1F, 0xE7, 0xE7, + 0xE7, 0xE7, 0xE7, 0xE7, 0x1F, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7F, 0x7F, 0x9F, 0x9F, 0xE7, 0xE7, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE7, 0xE7, 0xE7, 0xE7, 0x18, 0x18, 0xFF, 0xFF, 0x1F, 0x1F, 0x61, 0x61, 0x7E, 0x7E, 0x00, 0x00, + 0x7F, 0x7F, 0xFF, 0xFF, 0xE0, 0xE0, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x1F, 0x1F, 0xFF, 0xFF, + 0x00, 0x00, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x1F, 0x1F, 0xE1, 0xE1, 0xFE, 0xFE, 0xFF, 0xFF, 0x18, 0x18, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, + 0x18, 0x18, 0xFF, 0xFF, 0xF8, 0xF8, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x00, 0x00, 0xFF, 0xFF, + 0xF8, 0xF8, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xF8, 0xF8, 0xFF, 0xFF, 0xE7, 0xE7, 0xE7, 0xE7, + 0xE0, 0xE0, 0xE7, 0xE7, 0xE7, 0xE7, 0xFF, 0xFF, 0xE1, 0xE1, 0xE6, 0xE6, 0xE7, 0xE7, 0xE7, 0xE7, + 0xE7, 0xE7, 0xFF, 0xFF, 0xF9, 0xF9, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xF8, 0xF8, 0xFF, 0xFF, + 0xFE, 0xFE, 0xFE, 0xFE, 0xE6, 0xE6, 0xE0, 0xE0, 0xE6, 0xE6, 0xFF, 0xFF, 0xF9, 0xF9, 0xE7, 0xE7, + 0xE7, 0xE7, 0xE7, 0xE7, 0xF8, 0xF8, 0xFF, 0xFF, 0xF8, 0xF8, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, + 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xE1, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF8, 0xF8, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xE7, + 0xE7, 0xE7, 0xF9, 0xF9, 0xFE, 0xFE, 0xFF, 0xFF, +}; +#endif + diff --git a/MicroView.cpp b/MicroView.cpp index 77cdbba..f52ca5b 100644 --- a/MicroView.cpp +++ b/MicroView.cpp @@ -77,26 +77,38 @@ static uint8_t screenmemory [] = { // D7 D7.............D7 ---- //SparkFun Electronics LOGO + + // ROW0, BYTE0 to BYTE63 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, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x07, 0x07, 0x06, 0x06, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + // ROW1, BYTE64 to BYTE127 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x07, 0x0F, 0x3F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFC, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + // ROW2, BYTE128 to BYTE191 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + // ROW3, BYTE192 to BYTE255 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + // ROW4, BYTE256 to BYTE319 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x1F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 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, + + // ROW5, BYTE320 to BYTE383 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 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, diff --git a/README.md b/README.md index dbdaeaa..e8136a5 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Arduino library for MicroView. 2. cd libraries 3. mkdir MicroView 4. cd MicroView -5. git clone git@github.com:geekammo/microview.git . +5. git clone https://github.com/geekammo/MicroView-Arduino-Library.git . 6. Start Arduino IDE. 7. MicroView example is located at, File--->Example--->MicroView--->MicroViewDemo @@ -91,6 +91,11 @@ void loop() { ## History +**v1.12b: 11th June 2014 by JP Liew** +* added comments for SparkFun Logo +* added Rotating Cube example by Jim Lindblom @ SparkFun Electronics +* changed git clone instruction to use https + **v1.11b: 9th June 2014 by JP Liew** * added simple tutorials for production sketch * modified OLED RESET pin to 7 diff --git a/examples/MicroViewCube/MicroViewCube.ino b/examples/MicroViewCube/MicroViewCube.ino new file mode 100644 index 0000000..02654cd --- /dev/null +++ b/examples/MicroViewCube/MicroViewCube.ino @@ -0,0 +1,88 @@ +/****************************************************************************** +MicroViewCube.ino +Rotating a 3-D Cube on the MicroView Display +Jim Lindblom @ SparkFun Electronics +Original Creation Date: June 9, 2014 + +This sketch uses the MicroView library to draw a 3-D projected +cube, and rotate it along all three axes. + +Development environment specifics: + IDE: Arduino 1.0.5 + Hardware Platform: MicroView + +This code is beerware; if you see me (or any other SparkFun employee) at the +local, and you've found our code helpful, please buy us a round! + +Distributed as-is; no warranty is given. +******************************************************************************/ +#include + +#define SHAPE_SIZE 600 +#define ROTATION_SPEED 0 // ms delay between cube draws + +int SCREEN_WIDTH = uView.getLCDWidth(); +int SCREEN_HEIGHT = uView.getLCDHeight(); + +float d = 3; +float px[] = { -d, d, d, -d, -d, d, d, -d }; +float py[] = { -d, -d, d, d, -d, -d, d, d }; +float pz[] = { -d, -d, -d, -d, d, d, d, d }; + +float p2x[] = {0,0,0,0,0,0,0,0}; +float p2y[] = {0,0,0,0,0,0,0,0}; + +float r[] = {0,0,0}; + +void setup() +{ + uView.begin(); + uView.clear(ALL); + uView.display(); +} + +void loop() +{ + drawCube(); + delay(ROTATION_SPEED); +} + +void drawCube() +{ + r[0]=r[0]+PI/180.0; // Add a degree + r[1]=r[1]+PI/180.0; // Add a degree + r[2]=r[2]+PI/180.0; // Add a degree + if (r[0] >= 360.0*PI/180.0) r[0] = 0; + if (r[1] >= 360.0*PI/180.0) r[1] = 0; + if (r[2] >= 360.0*PI/180.0) r[2] = 0; + + for (int i=0;i<8;i++) + { + float px2 = px[i]; + float py2 = cos(r[0])*py[i] - sin(r[0])*pz[i]; + float pz2 = sin(r[0])*py[i] + cos(r[0])*pz[i]; + + float px3 = cos(r[1])*px2 + sin(r[1])*pz2; + float py3 = py2; + float pz3 = -sin(r[1])*px2 + cos(r[1])*pz2; + + float ax = cos(r[2])*px3 - sin(r[2])*py3; + float ay = sin(r[2])*px3 + cos(r[2])*py3; + float az = pz3-150; + + p2x[i] = SCREEN_WIDTH/2+ax*SHAPE_SIZE/az; + p2y[i] = SCREEN_HEIGHT/2+ay*SHAPE_SIZE/az; + } + + uView.clear(PAGE); + for (int i=0;i<3;i++) + { + uView.line(p2x[i],p2y[i],p2x[i+1],p2y[i+1]); + uView.line(p2x[i+4],p2y[i+4],p2x[i+5],p2y[i+5]); + uView.line(p2x[i],p2y[i],p2x[i+4],p2y[i+4]); + } + uView.line(p2x[3],p2y[3],p2x[0],p2y[0]); + uView.line(p2x[7],p2y[7],p2x[4],p2y[4]); + uView.line(p2x[3],p2y[3],p2x[7],p2y[7]); + uView.display(); +} \ No newline at end of file