Smart-Home-TX Test

Dependencies:   4DGL-uLCD-SE PinDetect

Fork of Xbee-Smart-Home-Outside by prana koirala

Committer:
pkoirala3
Date:
Wed Apr 26 14:52:11 2017 +0000
Revision:
3:80ca319bd924
Parent:
2:b549ccada3c3
Child:
4:f87a36946c09
Optimized V2.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pkoirala3 0:9d604b1e5409 1 #include "mbed.h"
pkoirala3 0:9d604b1e5409 2 #include <string>
pkoirala3 1:7d069ab3f551 3 #include <stdio.h>
pkoirala3 0:9d604b1e5409 4 #include "uLCD_4DGL.h"
pkoirala3 1:7d069ab3f551 5 #include "rtos.h"
pkoirala3 3:80ca319bd924 6 #include "PinDetect.h"
pkoirala3 1:7d069ab3f551 7 // #include "jpegutil.h"
pkoirala3 1:7d069ab3f551 8
pkoirala3 1:7d069ab3f551 9 Serial pc(USBTX, USBRX);
pkoirala3 1:7d069ab3f551 10 uLCD_4DGL lcd(p28,p27,p24);
pkoirala3 0:9d604b1e5409 11 Serial xbee(p9, p10);
pkoirala3 0:9d604b1e5409 12 DigitalOut reset(p8);
pkoirala3 0:9d604b1e5409 13 DigitalOut led1(LED1);
pkoirala3 0:9d604b1e5409 14 DigitalOut led2(LED2);
pkoirala3 3:80ca319bd924 15 PinDetect getStatus(p16);
pkoirala3 3:80ca319bd924 16 PinDetect toggleLight(p17);
pkoirala3 1:7d069ab3f551 17
pkoirala3 1:7d069ab3f551 18 // LocalFileSystem local("local"); /
pkoirala3 1:7d069ab3f551 19
pkoirala3 1:7d069ab3f551 20 volatile bool statusReq = false;
pkoirala3 1:7d069ab3f551 21 volatile bool flipLed = false;
pkoirala3 1:7d069ab3f551 22
pkoirala3 1:7d069ab3f551 23 Thread t1;
pkoirala3 2:b549ccada3c3 24 // Mutex serialMutex;
pkoirala3 1:7d069ab3f551 25
pkoirala3 1:7d069ab3f551 26 char buffer[50];
pkoirala3 1:7d069ab3f551 27
pkoirala3 1:7d069ab3f551 28 void statusRequest()
pkoirala3 1:7d069ab3f551 29 {
pkoirala3 2:b549ccada3c3 30 led1 = 1;
pkoirala3 1:7d069ab3f551 31 statusReq = true;
pkoirala3 1:7d069ab3f551 32 }
pkoirala3 1:7d069ab3f551 33
pkoirala3 1:7d069ab3f551 34 void flipLight()
pkoirala3 1:7d069ab3f551 35 {
pkoirala3 2:b549ccada3c3 36 led2 = 1;
pkoirala3 1:7d069ab3f551 37 flipLed = true;
pkoirala3 1:7d069ab3f551 38 }
pkoirala3 1:7d069ab3f551 39
pkoirala3 1:7d069ab3f551 40 void sendcommand(char out)
pkoirala3 1:7d069ab3f551 41 {
pkoirala3 3:80ca319bd924 42 if(xbee.writeable()) {
pkoirala3 1:7d069ab3f551 43 led2 = 1;
pkoirala3 1:7d069ab3f551 44 char outbuf = out;
pkoirala3 1:7d069ab3f551 45 xbee.putc(outbuf);
pkoirala3 2:b549ccada3c3 46 pc.putc(outbuf);
pkoirala3 1:7d069ab3f551 47 led2 = 0;
pkoirala3 1:7d069ab3f551 48 }
pkoirala3 1:7d069ab3f551 49 }
pkoirala3 1:7d069ab3f551 50
pkoirala3 1:7d069ab3f551 51 void getcommand()
pkoirala3 1:7d069ab3f551 52 {
pkoirala3 1:7d069ab3f551 53 while(1) {
pkoirala3 1:7d069ab3f551 54 if(xbee.readable()) {
pkoirala3 1:7d069ab3f551 55 led1 = 1;
pkoirala3 1:7d069ab3f551 56 int x = 0;
pkoirala3 1:7d069ab3f551 57 while(xbee.readable()) {
pkoirala3 1:7d069ab3f551 58 buffer[x] = xbee.getc();
pkoirala3 1:7d069ab3f551 59 x++;
pkoirala3 1:7d069ab3f551 60 }
pkoirala3 1:7d069ab3f551 61 led1 = 0;
pkoirala3 1:7d069ab3f551 62 const char s[2] = "|";
pkoirala3 1:7d069ab3f551 63 char *token;
pkoirala3 1:7d069ab3f551 64 token = strtok(buffer, s); // get the first token
pkoirala3 2:b549ccada3c3 65 int j = 2;
pkoirala3 1:7d069ab3f551 66 while( token != NULL ) { // walk through other tokens
pkoirala3 1:7d069ab3f551 67 lcd.locate(11,j); // Print in correct place of LCD
pkoirala3 1:7d069ab3f551 68 lcd.printf( "%s", token );
pkoirala3 1:7d069ab3f551 69 token = strtok(NULL, s);
pkoirala3 1:7d069ab3f551 70 j++;
pkoirala3 1:7d069ab3f551 71 }
pkoirala3 1:7d069ab3f551 72 }
pkoirala3 1:7d069ab3f551 73 Thread::wait(1000);
pkoirala3 1:7d069ab3f551 74 }
pkoirala3 1:7d069ab3f551 75 }
pkoirala3 1:7d069ab3f551 76
pkoirala3 0:9d604b1e5409 77 int main()
pkoirala3 0:9d604b1e5409 78 {
pkoirala3 0:9d604b1e5409 79 reset = 0;
pkoirala3 0:9d604b1e5409 80 wait_ms(1);
pkoirala3 0:9d604b1e5409 81 reset = 1;
pkoirala3 0:9d604b1e5409 82 wait_ms(1);
pkoirala3 3:80ca319bd924 83
pkoirala3 2:b549ccada3c3 84 getStatus.mode(PullDown);
pkoirala3 3:80ca319bd924 85 getStatus.attach_asserted( &statusRequest );
pkoirala3 3:80ca319bd924 86 getStatus.setSampleFrequency(); // Defaults to 20ms.
pkoirala3 3:80ca319bd924 87
pkoirala3 2:b549ccada3c3 88 toggleLight.mode(PullDown);
pkoirala3 3:80ca319bd924 89 toggleLight.attach_asserted( &flipLight );
pkoirala3 3:80ca319bd924 90 toggleLight.setSampleFrequency(); // Defaults to 20ms.
pkoirala3 3:80ca319bd924 91
pkoirala3 1:7d069ab3f551 92 // lcd.baudrate(300000);
pkoirala3 1:7d069ab3f551 93 lcd.cls();
pkoirala3 1:7d069ab3f551 94 lcd.locate(0,0);
pkoirala3 1:7d069ab3f551 95 lcd.line(0, 5, 128, 5, 0xFF0000);
pkoirala3 1:7d069ab3f551 96 lcd.printf("\r\nStatus:");
pkoirala3 1:7d069ab3f551 97 lcd.printf("\r\n");
pkoirala3 1:7d069ab3f551 98 lcd.printf("Temp degC:\r\n");
pkoirala3 1:7d069ab3f551 99 lcd.printf("Humidity %:\r\n");
pkoirala3 1:7d069ab3f551 100 lcd.printf("Lights: \r\n");
pkoirala3 1:7d069ab3f551 101 lcd.line(0, 45, 128, 45, 0xFF0000);
pkoirala3 1:7d069ab3f551 102 // xbee.baud(115200); // May need to latter
pkoirala3 1:7d069ab3f551 103 t1.start(getcommand);
pkoirala3 3:80ca319bd924 104 wait(0.5);
pkoirala3 3:80ca319bd924 105 sendcommand('s');
pkoirala3 1:7d069ab3f551 106
pkoirala3 1:7d069ab3f551 107 while(1) {
pkoirala3 1:7d069ab3f551 108 if (statusReq == true) {
pkoirala3 2:b549ccada3c3 109 sendcommand('s');
pkoirala3 2:b549ccada3c3 110 statusReq = false;
pkoirala3 1:7d069ab3f551 111 } else if (flipLed == true) {
pkoirala3 1:7d069ab3f551 112 sendcommand('l');
pkoirala3 2:b549ccada3c3 113 flipLed = false;
pkoirala3 0:9d604b1e5409 114 }
pkoirala3 2:b549ccada3c3 115 Thread::wait(2000);
pkoirala3 1:7d069ab3f551 116
pkoirala3 0:9d604b1e5409 117 }
pkoirala3 1:7d069ab3f551 118 }
pkoirala3 1:7d069ab3f551 119
pkoirala3 1:7d069ab3f551 120 /*
pkoirala3 1:7d069ab3f551 121 string file = "/local/PICT003.jpg";
pkoirala3 1:7d069ab3f551 122 lcd.locate(0, 6);
pkoirala3 1:7d069ab3f551 123 ReadJPEGFromFile(file.c_str());
pkoirala3 1:7d069ab3f551 124 lcd.printf("Image Displaying:\r\n");
pkoirala3 1:7d069ab3f551 125 lcd.BLIT(0, 60, 60, 80, &color[0]);
pkoirala3 1:7d069ab3f551 126 led1 = 1;
pkoirala3 1:7d069ab3f551 127
pkoirala3 1:7d069ab3f551 128 BLIT(int x, int y, int w, int h, int *colors)
pkoirala3 1:7d069ab3f551 129 x is the left-edge of the region.
pkoirala3 1:7d069ab3f551 130 y is the top-edge of the region.
pkoirala3 1:7d069ab3f551 131 w specifies the width of the region.
pkoirala3 1:7d069ab3f551 132 h specifies the height of the region.
pkoirala3 1:7d069ab3f551 133 colour is a pointer to the array with size = w * h.
pkoirala3 1:7d069ab3f551 134 */