GroupZ - 05012018 1511

main.cpp

Committer:
mslade
Date:
2018-01-05
Revision:
0:1c898341428b
Child:
1:84581acd1333

File content as of revision 0:1c898341428b:

#include "mbed.h"
#include "TextLCD.h"
#include "math.h"
#include "EthernetInterface.h"
#include "TCPServer.h"
#include "TCPSocket.h"
#include "BMP280.h"
#include <string>
#include <iostream>
#define HTTP_STATUS_LINE "HTTP/1.0 200 OK"
#define HTTP_HEADER_FIELDS "Content-Type: text/html; charset=utf-8"
#define HTTP_RESPONSE HTTP_STATUS_LINE "\r\n"   \
                      HTTP_HEADER_FIELDS "\r\n" \
                      "\r\n"                    \
                      HTTP_MESSAGE_BODY "\r\n"

#define IP        "10.0.0.10"
#define NETMASK   "255.0.0.0"
#define GATEWAY   "10.0.0.1"


BMP280 BMP(D14, D15);
Serial myserial(USBTX,USBRX);
TextLCD mylcd(D9,D8,D7,D6,D5,D4);
BusOut leds(D11,D12);
DigitalIn toggle(D2);
bool pressed = false;
int counter = 0;
AnalogIn ldrin(A0);
Thread thread;
Thread thread2;
Semaphore mysem(10);
char buffer[10];
char buffer2[10];
char buffer3[10];
void enet(void const *name);

int main(){
    myserial.baud(115200);
    mylcd.cls();
    thread.start(callback(enet, (void *) "Thread\r\n")); 
    while(true) {
        mysem.wait();
        leds = 1; 
        float ldr = floor(ldrin*30000)/100;
        float temp = BMP.getTemperature();
        float pressure = BMP.getPressure() ;
        //if (counter > 7) {counter = 0;}
        //leds = counter;
        //if (toggle == false) {if (pressed == false) {counter++; pressed = true;} } else {pressed = false;}
        //int x = floor(ldr*8);
        //leds = counter;
        sprintf(buffer , "%2.2f", ldr);
        sprintf(buffer2, "%2.2f", temp);
        sprintf(buffer3, "%3.2f", pressure);
        mylcd.locate(9,1); mylcd.printf("L:%s ", buffer );
        mylcd.locate(0,1); mylcd.printf("T:%s ", buffer2);
        mylcd.locate(4,0); mylcd.printf("P:%s ", buffer3);
        myserial.printf("ldr=%s temp=%s pres=%s \r\n", buffer, buffer2, buffer3);
        
        Thread::wait(1000);
        leds = 0;
        mysem.release();
    }
}


void enet(void const *name)
{
    //Configure an ethernet connection
    EthernetInterface eth;
    eth.set_network(IP, NETMASK, GATEWAY);
    eth.connect();
    printf("The target IP address is '%s'\n", eth.get_ip_address());
    
    //Now setup a web server
    TCPServer srv;           //TCP/IP Server
    //TCPSocket clt_sock;      //Socket for communication
    SocketAddress clt_addr;  //Address of incoming connection
    
    /* Open the server on ethernet stack */
    srv.open(&eth);
    
    /* Bind the HTTP port (TCP 80) to the server */
    srv.bind(eth.get_ip_address(), 80);
    
    /* Can handle 5 simultaneous connections */
    srv.listen(5);
    
    while (true) {
        mysem.wait();
        using namespace std;
        TCPSocket clt_sock;
        srv.accept(&clt_sock, &clt_addr);
        string response;
        response =  "<html> \r\n ";
        response += "<meta http-equiv=\"refresh\" content=\"1; url=http://10.0.0.10\">";
        response += "\r\n <h1 style=\"color:black; font-size: 400%; position: fixed; top:11%; left:37%;\"> ";
        response += "16:34";
        response += "</h1> \r\n <h1 style=\"color:black; font-size: 200%; position: fixed; top:17.5%; left:55.5%;\">";
        response += "31/12/2017";
        response += "</h1> \r\n <h1 style=\"color:black; font-size: 400%; position: fixed; top:30%; left:46%;\">";
        response += buffer;
        response += "</h1> \r\n <h1 style=\"color:black; font-size: 400%; position: fixed; top:51%; left:46%;\">";
        response += buffer2;
        response += "</h1> \r\n <h1 style=\"color:black; font-size: 400%; position: fixed; top:72%; left:46%;\">";
        response += buffer3;
        response += "</h1> \r\n <body style=\"background-image:url(https://image.ibb.co/nyTj9w/pic2.png); background-size: 100% 100%;\"></body> ";
        response += "\r\n </html>";
        clt_sock.send(response.c_str(), response.size()+1);
        Thread::wait(10);
        mysem.release();
    }
}