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:
Mon Feb 11 05:04:18 2013 +0000
Revision:
4:cfef06d8bb96
Parent:
3:0ac64c4ca40f
Minor changes to add backlight routines.  Not hooked up yet, shouldn't affect build operation.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
isonno 0:6da5625a6946 1 // Motion detector support for the Zilog ePIR Motion Detection ZDots SBC
isonno 0:6da5625a6946 2
isonno 0:6da5625a6946 3 #include "mbed.h"
isonno 0:6da5625a6946 4 #include "ZMotionDetector.h"
isonno 0:6da5625a6946 5 #include "HoldInterrupts.h"
isonno 0:6da5625a6946 6
isonno 0:6da5625a6946 7 //const char NACK = 0x15;
isonno 0:6da5625a6946 8 const char ACK = 0x06;
isonno 0:6da5625a6946 9
isonno 0:6da5625a6946 10 ZMotionDetector::ZMotionDetector( PinName ztx, PinName zrx )
isonno 0:6da5625a6946 11 : fMDPort( ztx, zrx )
isonno 0:6da5625a6946 12 {}
isonno 0:6da5625a6946 13
isonno 0:6da5625a6946 14 bool
isonno 0:6da5625a6946 15 ZMotionDetector::IsMotionDetected()
isonno 0:6da5625a6946 16 {
isonno 3:0ac64c4ca40f 17 // HoldInterrupts noir;
isonno 0:6da5625a6946 18
isonno 0:6da5625a6946 19 fMDPort.putc('a'); // Read Motion status
isonno 0:6da5625a6946 20 return fMDPort.getc() == 'Y';
isonno 0:6da5625a6946 21 }
isonno 0:6da5625a6946 22
isonno 0:6da5625a6946 23 void
isonno 0:6da5625a6946 24 ZMotionDetector::SetExtendedRange( bool on )
isonno 0:6da5625a6946 25 {
isonno 0:6da5625a6946 26 HoldInterrupts noir;
isonno 0:6da5625a6946 27
isonno 0:6da5625a6946 28 fMDPort.putc('E');
isonno 0:6da5625a6946 29 fMDPort.getc(); // Current value
isonno 0:6da5625a6946 30 fMDPort.putc( on ? 'Y' : 'N' );
isonno 0:6da5625a6946 31 if (fMDPort.getc() != ACK)
isonno 0:6da5625a6946 32 printf("Error setting extended motion detector range\r\n");
isonno 0:6da5625a6946 33 }
isonno 0:6da5625a6946 34
isonno 0:6da5625a6946 35 void
isonno 0:6da5625a6946 36 ZMotionDetector::SetAsyncMode( bool on )
isonno 0:6da5625a6946 37 {
isonno 0:6da5625a6946 38 HoldInterrupts noir;
isonno 0:6da5625a6946 39
isonno 0:6da5625a6946 40 if (! on)
isonno 0:6da5625a6946 41 fMDPort.attach( NULL );
isonno 0:6da5625a6946 42 fMDPort.putc('M');
isonno 0:6da5625a6946 43 fMDPort.getc(); // Gets the current mode setting)
isonno 0:6da5625a6946 44 fMDPort.putc( on ? 'Y' : 'N' );
isonno 0:6da5625a6946 45 if (fMDPort.getc() != ACK)
isonno 0:6da5625a6946 46 printf("Error setting motion detector async mode\r\n");
isonno 0:6da5625a6946 47 else
isonno 0:6da5625a6946 48 if (on)
isonno 0:6da5625a6946 49 fMDPort.attach( this, &ZMotionDetector::Motion );
isonno 0:6da5625a6946 50 }
isonno 0:6da5625a6946 51
isonno 0:6da5625a6946 52 void
isonno 0:6da5625a6946 53 ZMotionDetector::Motion()
isonno 0:6da5625a6946 54 {
isonno 0:6da5625a6946 55 printf("Motion!!\r\n");
isonno 0:6da5625a6946 56 }