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
JunkTestCode.cpp@4:cfef06d8bb96, 2013-02-11 (annotated)
- Committer:
- isonno
- Date:
- Mon Feb 11 05:04:18 2013 +0000
- Revision:
- 4:cfef06d8bb96
- Parent:
- 0:6da5625a6946
Minor changes to add backlight routines. Not hooked up yet, shouldn't affect build operation.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
isonno |
0:6da5625a6946 | 1 | // This code was scaffolding used to test the hardware design. |
isonno |
0:6da5625a6946 | 2 | // It's deprecated, and here for reference only. |
isonno |
0:6da5625a6946 | 3 | |
isonno |
0:6da5625a6946 | 4 | #ifdef notdef |
isonno |
0:6da5625a6946 | 5 | |
isonno |
0:6da5625a6946 | 6 | void lcdnumber( CheapLCD * lcd, int y, int32_t value ) |
isonno |
0:6da5625a6946 | 7 | { |
isonno |
0:6da5625a6946 | 8 | HoldInterrupts noIR; |
isonno |
0:6da5625a6946 | 9 | leds[0] = 0; |
isonno |
0:6da5625a6946 | 10 | leds[1] = 0; |
isonno |
0:6da5625a6946 | 11 | lcd->clear( BLACK, (byte)10, (byte)(y-2), (byte) 80, (byte)(y+12) ); |
isonno |
0:6da5625a6946 | 12 | lcd->draw_number( WHITE, BLACK, (byte)10, (byte)y, value ); |
isonno |
0:6da5625a6946 | 13 | } |
isonno |
0:6da5625a6946 | 14 | |
isonno |
0:6da5625a6946 | 15 | |
isonno |
0:6da5625a6946 | 16 | class KnobTest |
isonno |
0:6da5625a6946 | 17 | { |
isonno |
0:6da5625a6946 | 18 | public: |
isonno |
0:6da5625a6946 | 19 | KnobTest( CheapLCD * lcd, |
isonno |
0:6da5625a6946 | 20 | RotaryEncoder * knob, |
isonno |
0:6da5625a6946 | 21 | LightString * lights ) : fLCDLED( p22, p23, p24 ) |
isonno |
0:6da5625a6946 | 22 | { |
isonno |
0:6da5625a6946 | 23 | fLCD = lcd; |
isonno |
0:6da5625a6946 | 24 | fKnob = knob; |
isonno |
0:6da5625a6946 | 25 | fKnobValue = 0; |
isonno |
0:6da5625a6946 | 26 | fLights = lights; |
isonno |
0:6da5625a6946 | 27 | |
isonno |
0:6da5625a6946 | 28 | fKnob->attach( this, &KnobTest::knobMoved ); |
isonno |
0:6da5625a6946 | 29 | } |
isonno |
0:6da5625a6946 | 30 | |
isonno |
0:6da5625a6946 | 31 | int32_t knobMoved( int32_t step ) |
isonno |
0:6da5625a6946 | 32 | { |
isonno |
0:6da5625a6946 | 33 | const int lcdledValues[] = { 0, 700, 70, 7, 111, 222, 333, 444, 555, 666, 777 }; |
isonno |
0:6da5625a6946 | 34 | fKnobValue += step; |
isonno |
0:6da5625a6946 | 35 | lcdnumber( fLCD, 50, fKnobValue ); |
isonno |
0:6da5625a6946 | 36 | |
isonno |
0:6da5625a6946 | 37 | if ((fKnobValue >= 0)&& (fKnobValue <= 10)) |
isonno |
0:6da5625a6946 | 38 | fLCDLED.Set( lcdledValues[fKnobValue] ); |
isonno |
0:6da5625a6946 | 39 | |
isonno |
0:6da5625a6946 | 40 | switch (fKnobValue) |
isonno |
0:6da5625a6946 | 41 | { |
isonno |
0:6da5625a6946 | 42 | case -2: fLights->InitLights(); break; |
isonno |
0:6da5625a6946 | 43 | case 0: fLights->Off(); break; |
isonno |
0:6da5625a6946 | 44 | case 1: fLights->Red(); break; |
isonno |
0:6da5625a6946 | 45 | case 2: fLights->Green(); break; |
isonno |
0:6da5625a6946 | 46 | case 3: fLights->Blue(); break; |
isonno |
0:6da5625a6946 | 47 | case 4: |
isonno |
0:6da5625a6946 | 48 | case 5: |
isonno |
0:6da5625a6946 | 49 | case 6: |
isonno |
0:6da5625a6946 | 50 | case 7: |
isonno |
0:6da5625a6946 | 51 | case 8: |
isonno |
0:6da5625a6946 | 52 | case 9: fLights->SetAllLights( (fKnobValue-2) * 111 ); break; |
isonno |
0:6da5625a6946 | 53 | default :; |
isonno |
0:6da5625a6946 | 54 | } |
isonno |
0:6da5625a6946 | 55 | |
isonno |
0:6da5625a6946 | 56 | fLCD->fade_backlight(fKnobValue != 0); |
isonno |
0:6da5625a6946 | 57 | return 0; |
isonno |
0:6da5625a6946 | 58 | } |
isonno |
0:6da5625a6946 | 59 | |
isonno |
0:6da5625a6946 | 60 | private: |
isonno |
0:6da5625a6946 | 61 | LCDLED fLCDLED; |
isonno |
0:6da5625a6946 | 62 | CheapLCD * fLCD; |
isonno |
0:6da5625a6946 | 63 | RotaryEncoder * fKnob; |
isonno |
0:6da5625a6946 | 64 | int32_t fKnobValue; |
isonno |
0:6da5625a6946 | 65 | LightString * fLights; |
isonno |
0:6da5625a6946 | 66 | }; |
isonno |
0:6da5625a6946 | 67 | |
isonno |
0:6da5625a6946 | 68 | #endif |