Source code for the Curilights Controller. See http://www.saccade.com/writing/projects/CuriController/ for details.
Dependencies: FatFileSystem mbed
This is the source code for the Curilights controller. This lets you interactively control a string of Curilights. It provides a simple click-wheel user interface for changing colors, brightness and behavior. It responds to movement and lighting.
Finished Controller
System Block Diagram
RotaryEncoder.h@2:965388eecf95, 2012-01-16 (annotated)
- Committer:
- isonno
- Date:
- Mon Jan 16 06:33:34 2012 +0000
- Revision:
- 2:965388eecf95
- Parent:
- 0:6da5625a6946
Experiment with MODSERIAL - just hung....
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
isonno |
0:6da5625a6946 | 1 | // Rotary Encoder |
isonno |
0:6da5625a6946 | 2 | // Support for the rotary encoder control, |
isonno |
0:6da5625a6946 | 3 | // typically a knob with quadrature output. |
isonno |
0:6da5625a6946 | 4 | |
isonno |
0:6da5625a6946 | 5 | #ifndef _ROTARY_ENCODER_ |
isonno |
0:6da5625a6946 | 6 | #define _ROTARY_ENCODER_ |
isonno |
0:6da5625a6946 | 7 | |
isonno |
0:6da5625a6946 | 8 | #ifndef MBED_H |
isonno |
0:6da5625a6946 | 9 | #include "mbed.h" |
isonno |
0:6da5625a6946 | 10 | #endif |
isonno |
0:6da5625a6946 | 11 | |
isonno |
0:6da5625a6946 | 12 | #ifndef AJK_PIN_DETECT_H |
isonno |
0:6da5625a6946 | 13 | #include "PinDetect.h" |
isonno |
0:6da5625a6946 | 14 | #endif |
isonno |
0:6da5625a6946 | 15 | |
isonno |
0:6da5625a6946 | 16 | #ifndef AJK_FPOINTER_H |
isonno |
0:6da5625a6946 | 17 | #include "FPointer.h" |
isonno |
0:6da5625a6946 | 18 | #endif |
isonno |
0:6da5625a6946 | 19 | |
isonno |
0:6da5625a6946 | 20 | class RotaryEncoder |
isonno |
0:6da5625a6946 | 21 | { |
isonno |
0:6da5625a6946 | 22 | public: |
isonno |
0:6da5625a6946 | 23 | RotaryEncoder( PinName a, PinName b, PinMode mode = PullDown ); |
isonno |
0:6da5625a6946 | 24 | |
isonno |
0:6da5625a6946 | 25 | void attach( int32_t (*function)(int32_t) = 0) |
isonno |
0:6da5625a6946 | 26 | { fCallback.attach( function ); } |
isonno |
0:6da5625a6946 | 27 | |
isonno |
0:6da5625a6946 | 28 | template<typename T> |
isonno |
0:6da5625a6946 | 29 | void attach(T* item, int32_t (T::*method)(int32_t)) |
isonno |
0:6da5625a6946 | 30 | { fCallback.attach( item, method ); } |
isonno |
0:6da5625a6946 | 31 | |
isonno |
0:6da5625a6946 | 32 | void detach() { fCallback = FPointer(); } |
isonno |
0:6da5625a6946 | 33 | |
isonno |
0:6da5625a6946 | 34 | private: |
isonno |
0:6da5625a6946 | 35 | DigitalIn fPinA; |
isonno |
0:6da5625a6946 | 36 | PinDetect fPinB; |
isonno |
0:6da5625a6946 | 37 | |
isonno |
0:6da5625a6946 | 38 | FPointer fCallback; |
isonno |
0:6da5625a6946 | 39 | |
isonno |
0:6da5625a6946 | 40 | void debug( const char *where ); |
isonno |
0:6da5625a6946 | 41 | |
isonno |
0:6da5625a6946 | 42 | void bRise(); |
isonno |
0:6da5625a6946 | 43 | |
isonno |
0:6da5625a6946 | 44 | }; |
isonno |
0:6da5625a6946 | 45 | #endif |