8x8x8 Led Cube driven by 4x PCF8575 for the columns and 1x PCF8574 for the layers

Committer:
Bas
Date:
Thu Nov 01 22:31:54 2012 +0000
Revision:
1:e08a4d27f534
Parent:
0:920c5ed65a45
Added several simple graphic functions helping to create animations

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Bas 1:e08a4d27f534 1 #ifndef __LED_CUBE_H
Bas 1:e08a4d27f534 2 #define __LED_CUBE_H
Bas 1:e08a4d27f534 3
Bas 1:e08a4d27f534 4 #define VERSION 1.0
Bas 1:e08a4d27f534 5
Bas 1:e08a4d27f534 6 #include <mbed.h>
Bas 1:e08a4d27f534 7 #include "pcf8574.h"
Bas 1:e08a4d27f534 8 #include "pcf8575.h"
Bas 1:e08a4d27f534 9
Bas 1:e08a4d27f534 10 #define AXIS_X 1
Bas 1:e08a4d27f534 11 #define AXIS_Y 2
Bas 1:e08a4d27f534 12 #define AXIS_Z 3
Bas 1:e08a4d27f534 13 #define PI 3.14159265
Bas 1:e08a4d27f534 14 #define center 3.5
Bas 1:e08a4d27f534 15 #define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
Bas 1:e08a4d27f534 16
Bas 1:e08a4d27f534 17 class LED_CUBE
Bas 1:e08a4d27f534 18 {
Bas 1:e08a4d27f534 19 public:
Bas 1:e08a4d27f534 20 LED_CUBE(I2C* _interface);
Bas 1:e08a4d27f534 21 ~LED_CUBE(void);
Bas 1:e08a4d27f534 22
Bas 1:e08a4d27f534 23 void clear_cube(void);
Bas 1:e08a4d27f534 24 void setVoxel(unsigned char x, unsigned char y, unsigned char z);
Bas 1:e08a4d27f534 25 void clearVoxel(unsigned char x, unsigned char y, unsigned char z);
Bas 1:e08a4d27f534 26 unsigned char getVoxel(unsigned char x, unsigned char y, unsigned char z);
Bas 1:e08a4d27f534 27 void copyColumn(unsigned char x, unsigned char y, unsigned char col);
Bas 1:e08a4d27f534 28 void alterVoxel(unsigned char x, unsigned char y, unsigned char z, unsigned char state);
Bas 1:e08a4d27f534 29 void flipVoxel(unsigned char x, unsigned char y, unsigned char z);
Bas 1:e08a4d27f534 30 void setPlane_x (int x);
Bas 1:e08a4d27f534 31 void clearPlane_x (int x);
Bas 1:e08a4d27f534 32 void setPlane_y (int y);
Bas 1:e08a4d27f534 33 void clearPlane_y (int y);
Bas 1:e08a4d27f534 34 void setPlane_z (int z);
Bas 1:e08a4d27f534 35 void clearPlane_z (int z);
Bas 1:e08a4d27f534 36 void setPlane (char axis, unsigned char i);
Bas 1:e08a4d27f534 37 void clearPlane (char axis, unsigned char i);
Bas 1:e08a4d27f534 38 void setSlope_XY(int x1, int y1, int x2, int y2);
Bas 1:e08a4d27f534 39 void setSlope_XZ(int x1, int z1, int x2, int z2);
Bas 1:e08a4d27f534 40 void setSlope_YZ(int y1, int z1, int y2, int z2);
Bas 1:e08a4d27f534 41 void clearVoxels(void);
Bas 1:e08a4d27f534 42 void fill (unsigned char pattern);
Bas 1:e08a4d27f534 43 void box_filled(int x1, int y1, int z1, int x2, int y2, int z2);
Bas 1:e08a4d27f534 44 void box_walls(int x1, int y1, int z1, int x2, int y2, int z2);
Bas 1:e08a4d27f534 45 void box_wireframe(int x1, int y1, int z1, int x2, int y2, int z2);
Bas 1:e08a4d27f534 46 void line(int x1, int y1, int z1, int x2, int y2, int z2);
Bas 1:e08a4d27f534 47 void circle(int xr, int yr, int zr, int d ,char axis);
Bas 1:e08a4d27f534 48 void CopyBlock(int x1, int y1, int z1, int x2, int y2, int z2, int xc, int yc, int zc);
Bas 1:e08a4d27f534 49 void MoveBlock(int x1, int y1, int z1, int x2, int y2, int z2, int xm, int ym, int zm);
Bas 1:e08a4d27f534 50 void RotateBlock(int x1, int y1, int height, char axis, char dir);
Bas 1:e08a4d27f534 51
Bas 1:e08a4d27f534 52 private:
Bas 1:e08a4d27f534 53 PCF8574 row;
Bas 1:e08a4d27f534 54 PCF8575 colums_0_1;
Bas 1:e08a4d27f534 55 PCF8575 colums_2_3;
Bas 1:e08a4d27f534 56 PCF8575 colums_4_5;
Bas 1:e08a4d27f534 57 PCF8575 colums_6_7;
Bas 1:e08a4d27f534 58 unsigned char cubeData[64];
Bas 1:e08a4d27f534 59 Ticker duty;
Bas 1:e08a4d27f534 60 void UpdateRow(void);
Bas 1:e08a4d27f534 61 char byteline (int start, int end);
Bas 1:e08a4d27f534 62 unsigned char inrange(int x, int y, int z);
Bas 1:e08a4d27f534 63 void argorder(int ix1, int ix2, int *ox1, int *ox2);
Bas 1:e08a4d27f534 64 double map(double in, double inMin, double inMax, double outMin, double outMax);
Bas 1:e08a4d27f534 65 };
Bas 0:920c5ed65a45 66 #endif