Smart-Home-TX Test

Dependencies:   4DGL-uLCD-SE PinDetect

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

Committer:
pkoirala3
Date:
Wed Apr 26 04:10:40 2017 +0000
Revision:
2:b549ccada3c3
Parent:
1:7d069ab3f551
Child:
3:80ca319bd924
Minor Bug Fix

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