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

/media/uploads/isonno/nxp3872_controllerclose.jpg

System Block Diagram

/media/uploads/isonno/blockdiagram.png

Committer:
isonno
Date:
Thu Dec 29 01:59:53 2011 +0000
Revision:
0:6da5625a6946
Contest submission version

Who changed what in which revision?

UserRevisionLine numberNew 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