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:
Tue Jan 17 13:45:17 2012 +0000
Revision:
3:0ac64c4ca40f
Parent:
1:d1da77023e6a
Child:
4:cfef06d8bb96
LightSensor settings menu; more work (unsuccessful) on serial input from USB.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
isonno 3:0ac64c4ca40f 1 //
isonno 3:0ac64c4ca40f 2 // Settings menu implementation
isonno 3:0ac64c4ca40f 3 //
isonno 3:0ac64c4ca40f 4
isonno 3:0ac64c4ca40f 5 #include "SettingsMenu.h"
isonno 3:0ac64c4ca40f 6 #include "UserInterface.h"
isonno 3:0ac64c4ca40f 7 #include "SystemState.h"
isonno 3:0ac64c4ca40f 8
isonno 3:0ac64c4ca40f 9 /*
isonno 3:0ac64c4ca40f 10 class SettingsMenu : public UIMenu
isonno 3:0ac64c4ca40f 11 {
isonno 3:0ac64c4ca40f 12 public:
isonno 3:0ac64c4ca40f 13 SettingsMenu( CheapLCD * lcd, HomeMenu * parent );
isonno 3:0ac64c4ca40f 14 virtual ~SettingsMenu() {};
isonno 3:0ac64c4ca40f 15
isonno 3:0ac64c4ca40f 16 protected:
isonno 3:0ac64c4ca40f 17 virtual void KnobPushed();
isonno 3:0ac64c4ca40f 18 virtual void AttachButton( PushButton * button )
isonno 3:0ac64c4ca40f 19 { button->attach( this, &SettingsMenu::KnobPushed ); }
isonno 3:0ac64c4ca40f 20
isonno 3:0ac64c4ca40f 21 private:
isonno 3:0ac64c4ca40f 22 HomeMenu * fParent;
isonno 3:0ac64c4ca40f 23 CheapLCD * fLCD;
isonno 3:0ac64c4ca40f 24 };
isonno 3:0ac64c4ca40f 25 */
isonno 3:0ac64c4ca40f 26
isonno 3:0ac64c4ca40f 27 SettingsMenu::SettingsMenu( CheapLCD * lcd, HomeMenu * parent )
isonno 3:0ac64c4ca40f 28 : UIMenu( lcd, "Settings" ),
isonno 3:0ac64c4ca40f 29 fParent( parent ), fLightSensorMenu( lcd, this )
isonno 3:0ac64c4ca40f 30 {
isonno 3:0ac64c4ca40f 31 fLabels.push_back( string( "Light Sensor" ) );
isonno 3:0ac64c4ca40f 32 fLabels.push_back( string( "Motion Sensor" ) );
isonno 3:0ac64c4ca40f 33 fLabels.push_back( string( "Defaults" ) );
isonno 3:0ac64c4ca40f 34 fLabels.push_back( string( "Debug" ) );
isonno 3:0ac64c4ca40f 35 fLabels.push_back( string( "Exit Settings" ) );
isonno 3:0ac64c4ca40f 36 }
isonno 3:0ac64c4ca40f 37
isonno 3:0ac64c4ca40f 38 void SettingsMenu::KnobPushed()
isonno 3:0ac64c4ca40f 39 {
isonno 3:0ac64c4ca40f 40 switch( SelectedItem() )
isonno 3:0ac64c4ca40f 41 {
isonno 3:0ac64c4ca40f 42 case 0:
isonno 3:0ac64c4ca40f 43 SwitchTo( &fLightSensorMenu );
isonno 3:0ac64c4ca40f 44 break;
isonno 3:0ac64c4ca40f 45
isonno 3:0ac64c4ca40f 46 case 4:
isonno 3:0ac64c4ca40f 47 SwitchTo( fParent );
isonno 3:0ac64c4ca40f 48 break;
isonno 3:0ac64c4ca40f 49 }
isonno 3:0ac64c4ca40f 50 }
isonno 3:0ac64c4ca40f 51
isonno 3:0ac64c4ca40f 52 LightSensorMenu::LightSensorMenu( CheapLCD * lcd, SettingsMenu * parent )
isonno 3:0ac64c4ca40f 53 : UIMenu( lcd ),
isonno 3:0ac64c4ca40f 54 fParent( parent )
isonno 3:0ac64c4ca40f 55 {
isonno 3:0ac64c4ca40f 56 fLabels.push_back( string( "Enable" ) );
isonno 3:0ac64c4ca40f 57 fLabels.push_back( string( "Disable" ) );
isonno 3:0ac64c4ca40f 58 fLabels.push_back( string( "Exit" ) );
isonno 3:0ac64c4ca40f 59 fLightState = gSystemState.GetLightSensor();
isonno 3:0ac64c4ca40f 60 fHeader = string( fLightState ? "Lt Sens On" : "Lt Sens Off" );
isonno 3:0ac64c4ca40f 61 }
isonno 3:0ac64c4ca40f 62
isonno 3:0ac64c4ca40f 63 void LightSensorMenu::KnobPushed()
isonno 3:0ac64c4ca40f 64 {
isonno 3:0ac64c4ca40f 65 switch( SelectedItem() )
isonno 3:0ac64c4ca40f 66 {
isonno 3:0ac64c4ca40f 67 case 0:
isonno 3:0ac64c4ca40f 68 fLightState = 1;
isonno 3:0ac64c4ca40f 69 ChangeHeader( "Lt Sens On" );
isonno 3:0ac64c4ca40f 70 break;
isonno 3:0ac64c4ca40f 71
isonno 3:0ac64c4ca40f 72 case 1:
isonno 3:0ac64c4ca40f 73 fLightState = 0;
isonno 3:0ac64c4ca40f 74 ChangeHeader( "Lt Sens Off" );
isonno 3:0ac64c4ca40f 75 break;
isonno 3:0ac64c4ca40f 76
isonno 3:0ac64c4ca40f 77 case 2:
isonno 3:0ac64c4ca40f 78 gSystemState.SetLightSensor( fLightState );
isonno 3:0ac64c4ca40f 79 SwitchTo( fParent );
isonno 3:0ac64c4ca40f 80 break;
isonno 3:0ac64c4ca40f 81 }
isonno 3:0ac64c4ca40f 82 }
isonno 3:0ac64c4ca40f 83