Demonstrates the use of the LPC1114_Deep_Power_Down library with the NOKIA_5110 library

Dependencies:   LPC1114_Deep_Power_Down NOKIA_5110 mbed

Committer:
bundgus
Date:
Sat Jan 03 17:33:30 2015 +0000
Revision:
0:5459444bb4f0
Child:
1:118bef2666a8
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bundgus 0:5459444bb4f0 1 /*
bundgus 0:5459444bb4f0 2 * LPC1114_5110_PIR
bundgus 0:5459444bb4f0 3 *
bundgus 0:5459444bb4f0 4 * Created on: Dec 26, 2014
bundgus 0:5459444bb4f0 5 * Author: bundgus
bundgus 0:5459444bb4f0 6 *
bundgus 0:5459444bb4f0 7 * Demonstrates the use of the LPC1114_Deep_Power_Down library with the NOKIA_5110 library
bundgus 0:5459444bb4f0 8 */
bundgus 0:5459444bb4f0 9
bundgus 0:5459444bb4f0 10 #include "mbed.h"
bundgus 0:5459444bb4f0 11 #include "DeepPowerDown.h"
bundgus 0:5459444bb4f0 12 #include "NOKIA_5110.h"
bundgus 0:5459444bb4f0 13 #include <string>
bundgus 0:5459444bb4f0 14
bundgus 0:5459444bb4f0 15 #define startup_countdown 5
bundgus 0:5459444bb4f0 16
bundgus 0:5459444bb4f0 17 // high-level hardware interfaces
bundgus 0:5459444bb4f0 18 DeepPowerDown pd;
bundgus 0:5459444bb4f0 19 LcdPins myLcdPins = { dp2, NC, dp6, dp4, dp5, dp1 }; // mosi, miso, sclk, dc, sce, rst
bundgus 0:5459444bb4f0 20 NokiaLcd myLcd( myLcdPins );
bundgus 0:5459444bb4f0 21 DigitalOut backlight(dp14);
bundgus 0:5459444bb4f0 22
bundgus 0:5459444bb4f0 23 void startup(){
bundgus 0:5459444bb4f0 24 // Turn on LCD Backlight
bundgus 0:5459444bb4f0 25 backlight = 1;
bundgus 0:5459444bb4f0 26
bundgus 0:5459444bb4f0 27 // Start the LCD
bundgus 0:5459444bb4f0 28 myLcd.InitLcd();
bundgus 0:5459444bb4f0 29 myLcd.ClearLcdMem();
bundgus 0:5459444bb4f0 30 }
bundgus 0:5459444bb4f0 31
bundgus 0:5459444bb4f0 32 void shutdown(){
bundgus 0:5459444bb4f0 33 myLcd.ShutdownLcd();
bundgus 0:5459444bb4f0 34 backlight = 0;
bundgus 0:5459444bb4f0 35 pd.powerDown();
bundgus 0:5459444bb4f0 36 }
bundgus 0:5459444bb4f0 37
bundgus 0:5459444bb4f0 38 void s_firstRun(){
bundgus 0:5459444bb4f0 39 pd.setGPREG4(1); // set next startup state to motionWake
bundgus 0:5459444bb4f0 40 myLcd.SetXY(0,2);
bundgus 0:5459444bb4f0 41 myLcd.DrawString(" Arming in ");
bundgus 0:5459444bb4f0 42
bundgus 0:5459444bb4f0 43 char cd_c[14];
bundgus 0:5459444bb4f0 44
bundgus 0:5459444bb4f0 45 for (int cd = startup_countdown; cd>0 ; cd--){
bundgus 0:5459444bb4f0 46 myLcd.SetXY(0,3);
bundgus 0:5459444bb4f0 47 myLcd.DrawString(" ");
bundgus 0:5459444bb4f0 48 if (cd < 10){
bundgus 0:5459444bb4f0 49 myLcd.DrawString("0");
bundgus 0:5459444bb4f0 50 }
bundgus 0:5459444bb4f0 51 sprintf (cd_c, "%ld", cd);
bundgus 0:5459444bb4f0 52 myLcd.DrawString(cd_c);
bundgus 0:5459444bb4f0 53 myLcd.SetXY(0,4);
bundgus 0:5459444bb4f0 54 myLcd.DrawString(" seconds ");
bundgus 0:5459444bb4f0 55 wait_ms(1000);
bundgus 0:5459444bb4f0 56 }
bundgus 0:5459444bb4f0 57 }
bundgus 0:5459444bb4f0 58
bundgus 0:5459444bb4f0 59 void s_motionWake(){
bundgus 0:5459444bb4f0 60 myLcd.SetXY(0,0);
bundgus 0:5459444bb4f0 61 myLcd.DrawString(" MOTION ");
bundgus 0:5459444bb4f0 62 myLcd.DrawString(" DETECTED ");
bundgus 0:5459444bb4f0 63 // buffer for gpr 0-4 register string values - 84 columns / 6 columns per char = 14
bundgus 0:5459444bb4f0 64 char gpreg0_c[14];
bundgus 0:5459444bb4f0 65
bundgus 0:5459444bb4f0 66 unsigned int gpreg0_i = pd.getGPREG0();
bundgus 0:5459444bb4f0 67
bundgus 0:5459444bb4f0 68 sprintf (gpreg0_c, "%ld", gpreg0_i);
bundgus 0:5459444bb4f0 69
bundgus 0:5459444bb4f0 70 myLcd.SetXY(42-((int)log10((float)gpreg0_i) + 1)*3,2);
bundgus 0:5459444bb4f0 71 myLcd.DrawString(gpreg0_c);
bundgus 0:5459444bb4f0 72
bundgus 0:5459444bb4f0 73 myLcd.SetXY(0,3);
bundgus 0:5459444bb4f0 74 myLcd.DrawString(" TIMES ");
bundgus 0:5459444bb4f0 75
bundgus 0:5459444bb4f0 76 wait_ms(20000);
bundgus 0:5459444bb4f0 77 pd.setGPREG0(gpreg0_i + 1);
bundgus 0:5459444bb4f0 78
bundgus 0:5459444bb4f0 79 }
bundgus 0:5459444bb4f0 80
bundgus 0:5459444bb4f0 81 int main(void) {
bundgus 0:5459444bb4f0 82 unsigned int gpreg4_i = pd.getGPREG4(); // gpreg4 = next application start state
bundgus 0:5459444bb4f0 83
bundgus 0:5459444bb4f0 84 startup();
bundgus 0:5459444bb4f0 85
bundgus 0:5459444bb4f0 86 switch(gpreg4_i){
bundgus 0:5459444bb4f0 87 case 0 :
bundgus 0:5459444bb4f0 88 s_firstRun();
bundgus 0:5459444bb4f0 89 break;
bundgus 0:5459444bb4f0 90 case 1 :
bundgus 0:5459444bb4f0 91 s_motionWake();
bundgus 0:5459444bb4f0 92 break;
bundgus 0:5459444bb4f0 93 default : /* Optional */
bundgus 0:5459444bb4f0 94 break;// unknown state
bundgus 0:5459444bb4f0 95 }
bundgus 0:5459444bb4f0 96
bundgus 0:5459444bb4f0 97 shutdown();
bundgus 0:5459444bb4f0 98 }
bundgus 0:5459444bb4f0 99
bundgus 0:5459444bb4f0 100
bundgus 0:5459444bb4f0 101