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 // Wrapper function for PinDetect providing
isonno 0:6da5625a6946 2 // simple "pushbutton" functionality
isonno 0:6da5625a6946 3
isonno 0:6da5625a6946 4 #ifndef _PUSHBUTTON_
isonno 0:6da5625a6946 5 #define _PUSHBUTTON_
isonno 0:6da5625a6946 6
isonno 0:6da5625a6946 7 #ifndef MBED_H
isonno 0:6da5625a6946 8 #include "mbed.h"
isonno 0:6da5625a6946 9 #endif
isonno 0:6da5625a6946 10
isonno 0:6da5625a6946 11 class PushButton
isonno 0:6da5625a6946 12 {
isonno 0:6da5625a6946 13 public:
isonno 0:6da5625a6946 14 PushButton( PinName pin, const char * name = NULL ) : fPin( pin )
isonno 0:6da5625a6946 15 {
isonno 0:6da5625a6946 16 if (name && strlen(name) < sizeof(fName))
isonno 0:6da5625a6946 17 strcpy( fName, name );
isonno 0:6da5625a6946 18 else
isonno 0:6da5625a6946 19 strcpy( fName, "UNKNOWN" );
isonno 0:6da5625a6946 20 fPin.setSampleFrequency( 3000 );
isonno 0:6da5625a6946 21 fPin.mode( PullUp );
isonno 0:6da5625a6946 22 fPin.attach_deasserted( this, &PushButton::SwitchHit );
isonno 0:6da5625a6946 23 }
isonno 0:6da5625a6946 24
isonno 0:6da5625a6946 25 template<typename T>
isonno 0:6da5625a6946 26 void attach(T* tptr, void (T::*mptr)(void))
isonno 0:6da5625a6946 27 {
isonno 0:6da5625a6946 28 if((mptr != NULL) && (tptr != NULL))
isonno 0:6da5625a6946 29 fPin.attach_deasserted( tptr, mptr );
isonno 0:6da5625a6946 30 }
isonno 0:6da5625a6946 31
isonno 0:6da5625a6946 32 void detach() { fPin.detach(); }
isonno 0:6da5625a6946 33
isonno 0:6da5625a6946 34 void SwitchHit()
isonno 0:6da5625a6946 35 {
isonno 0:6da5625a6946 36 printf("Pushbutton %s is hit!\n\r", fName);
isonno 0:6da5625a6946 37 }
isonno 0:6da5625a6946 38
isonno 0:6da5625a6946 39 private:
isonno 0:6da5625a6946 40 PinDetect fPin;
isonno 0:6da5625a6946 41 char fName[20];
isonno 0:6da5625a6946 42 };
isonno 0:6da5625a6946 43
isonno 0:6da5625a6946 44 #endif