Demonstrates the use of the LPC1114_Deep_Power_Down library with the NOKIA_5110 library
Dependencies: LPC1114_Deep_Power_Down NOKIA_5110 mbed
main.cpp@0:5459444bb4f0, 2015-01-03 (annotated)
- 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?
User | Revision | Line number | New 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 |