![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Cubic Hand project for EECS 249A course.
Dependencies: MMA8451Q TSI cc3000_hostdriver_mbedsocket NVIC_set_all_priorities mbed Multi_WS2811
LedCube.h@56:f95ec9baa4cb, 2014-12-15 (annotated)
- Committer:
- joseoyola
- Date:
- Mon Dec 15 23:55:15 2014 +0000
- Revision:
- 56:f95ec9baa4cb
Changes to LedCube.h and LedCube.cpp; ; Renamed ledCube.h and ledCube.cpp to LedCube.h and LedCube.cpp, added documentation to both, added logic to move cube to allow changing size regardless of current position.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
joseoyola | 56:f95ec9baa4cb | 1 | #include "mbed.h" |
joseoyola | 56:f95ec9baa4cb | 2 | #include "WS2811.h" |
joseoyola | 56:f95ec9baa4cb | 3 | #include "CubeUpdateParameters.h" |
joseoyola | 56:f95ec9baa4cb | 4 | |
joseoyola | 56:f95ec9baa4cb | 5 | #pragma once |
joseoyola | 56:f95ec9baa4cb | 6 | |
joseoyola | 56:f95ec9baa4cb | 7 | class LedCube |
joseoyola | 56:f95ec9baa4cb | 8 | { |
joseoyola | 56:f95ec9baa4cb | 9 | public: |
joseoyola | 56:f95ec9baa4cb | 10 | LedCube(); |
joseoyola | 56:f95ec9baa4cb | 11 | ~LedCube(); |
joseoyola | 56:f95ec9baa4cb | 12 | |
joseoyola | 56:f95ec9baa4cb | 13 | /*Sets the initial size and position of the lighted cube*/ |
joseoyola | 56:f95ec9baa4cb | 14 | void Init(int x, int y, int z); |
joseoyola | 56:f95ec9baa4cb | 15 | |
joseoyola | 56:f95ec9baa4cb | 16 | /* Returns the index of the LED given the cartesian |
joseoyola | 56:f95ec9baa4cb | 17 | * coordinates of the LED on a given panel. The origin |
joseoyola | 56:f95ec9baa4cb | 18 | * is the led at the bottom left of panel 1 when using |
joseoyola | 56:f95ec9baa4cb | 19 | * a three panel cube. |
joseoyola | 56:f95ec9baa4cb | 20 | ________ |
joseoyola | 56:f95ec9baa4cb | 21 | / /| |
joseoyola | 56:f95ec9baa4cb | 22 | / 3 / | |
joseoyola | 56:f95ec9baa4cb | 23 | /_______/ 2| |
joseoyola | 56:f95ec9baa4cb | 24 | | | | |
joseoyola | 56:f95ec9baa4cb | 25 | | 1 | / |
joseoyola | 56:f95ec9baa4cb | 26 | | | |
joseoyola | 56:f95ec9baa4cb | 27 | -------- |
joseoyola | 56:f95ec9baa4cb | 28 | |
joseoyola | 56:f95ec9baa4cb | 29 | Z Y |
joseoyola | 56:f95ec9baa4cb | 30 | | / |
joseoyola | 56:f95ec9baa4cb | 31 | | / |
joseoyola | 56:f95ec9baa4cb | 32 | | / |
joseoyola | 56:f95ec9baa4cb | 33 | |/ |
joseoyola | 56:f95ec9baa4cb | 34 | -------X */ |
joseoyola | 56:f95ec9baa4cb | 35 | int getLedIndex(int panel, int x, int y); |
joseoyola | 56:f95ec9baa4cb | 36 | |
joseoyola | 56:f95ec9baa4cb | 37 | /* Lights up (if on) or turns off (if !on) the LEDs on the LED cube |
joseoyola | 56:f95ec9baa4cb | 38 | * corresponding to the location of the square. All panels will show |
joseoyola | 56:f95ec9baa4cb | 39 | * the cube, with brightness depending on the distance from the |
joseoyola | 56:f95ec9baa4cb | 40 | * square to the panel.*/ |
joseoyola | 56:f95ec9baa4cb | 41 | void updateLEDs(bool on, int size, int x, int y, int z); |
joseoyola | 56:f95ec9baa4cb | 42 | void updateLEDsOld(bool on, int size, int x, int y, int z); |
joseoyola | 56:f95ec9baa4cb | 43 | |
joseoyola | 56:f95ec9baa4cb | 44 | /* Updates the LED cube.*/ |
joseoyola | 56:f95ec9baa4cb | 45 | void cubeUpdate(); |
joseoyola | 56:f95ec9baa4cb | 46 | |
joseoyola | 56:f95ec9baa4cb | 47 | /* Updates the LED cube given the size, hue and offsets in the X, Y and Z axes.*/ |
joseoyola | 56:f95ec9baa4cb | 48 | void UpdateCube(int size, int deltaX, int deltaY, int deltaZ, float hue); |
joseoyola | 56:f95ec9baa4cb | 49 | |
joseoyola | 56:f95ec9baa4cb | 50 | /* Updates the LED cube given parameters in a CubeUpdateParameters struct.*/ |
joseoyola | 56:f95ec9baa4cb | 51 | void UpdateCube2(CubeUpdateParameters cubeParams); |
joseoyola | 56:f95ec9baa4cb | 52 | |
joseoyola | 56:f95ec9baa4cb | 53 | /* Moves the square inside the cube by deltaX in the x-axis, |
joseoyola | 56:f95ec9baa4cb | 54 | * by deltaY in the y-axis, and deltaZ in the z-axis. Returns |
joseoyola | 56:f95ec9baa4cb | 55 | * 1 if movement occured, and -1 if no movement occured.*/ |
joseoyola | 56:f95ec9baa4cb | 56 | int move(int deltaX, int deltaY, int deltaZ); |
joseoyola | 56:f95ec9baa4cb | 57 | |
joseoyola | 56:f95ec9baa4cb | 58 | /* Changes the color of the square in the LED cube to the given hue.*/ |
joseoyola | 56:f95ec9baa4cb | 59 | void changeColor(float hue); |
joseoyola | 56:f95ec9baa4cb | 60 | |
joseoyola | 56:f95ec9baa4cb | 61 | /* Changes the size of the square in the LED cube to the given size. |
joseoyola | 56:f95ec9baa4cb | 62 | * The minimum size is 1, corresponding to a square of a single LED. |
joseoyola | 56:f95ec9baa4cb | 63 | * A size of 2 corresponds to a 2x2 LED square, 3 corresponds to 3x3 |
joseoyola | 56:f95ec9baa4cb | 64 | * and so forth. If square is on an edge, it moves accordingly in |
joseoyola | 56:f95ec9baa4cb | 65 | * order to be able to increase size.*/ |
joseoyola | 56:f95ec9baa4cb | 66 | void changeSize(int newSize); |
joseoyola | 56:f95ec9baa4cb | 67 | |
joseoyola | 56:f95ec9baa4cb | 68 | private: |
joseoyola | 56:f95ec9baa4cb | 69 | unsigned const X; |
joseoyola | 56:f95ec9baa4cb | 70 | unsigned const Y; |
joseoyola | 56:f95ec9baa4cb | 71 | unsigned const Z; |
joseoyola | 56:f95ec9baa4cb | 72 | int pos[3]; |
joseoyola | 56:f95ec9baa4cb | 73 | int prevPos[3]; |
joseoyola | 56:f95ec9baa4cb | 74 | int size; |
joseoyola | 56:f95ec9baa4cb | 75 | int prevSize; |
joseoyola | 56:f95ec9baa4cb | 76 | |
joseoyola | 56:f95ec9baa4cb | 77 | float saturation; |
joseoyola | 56:f95ec9baa4cb | 78 | float brightness; |
joseoyola | 56:f95ec9baa4cb | 79 | uint8_t r; |
joseoyola | 56:f95ec9baa4cb | 80 | uint8_t g; |
joseoyola | 56:f95ec9baa4cb | 81 | uint8_t b; |
joseoyola | 56:f95ec9baa4cb | 82 | WS2811 ledStrip1; |
joseoyola | 56:f95ec9baa4cb | 83 | WS2811 ledStrip2; |
joseoyola | 56:f95ec9baa4cb | 84 | |
joseoyola | 56:f95ec9baa4cb | 85 | }; |