Jack Hooper / Mbed 2 deprecated IoT_Blinds_Control

Dependencies:   4DGL-uLCD-SE ESP8266NodeMCUInterface Motor mbed

Fork of IoT_Blinds_Control by Jack Hooper

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "TCPSocketConnection.h"
00003 #include "ESP8266Interface.h"
00004 #include "uLCD_4DGL.h"
00005 #include "Motor.h"
00006 
00007 ESP8266Interface wifi(p28, p27, p26);
00008 TCPSocketConnection socket;
00009 //Serial pc(USBTX, USBRX); //Used for testing functionality without wifi
00010 Motor m1(p23, p5, p6); //pwm, fwd, rev //this one is for raising/lowering blinds
00011 Motor m2(p24, p7, p8); //this one is for changing the tilt of them.
00012 DigitalOut led1(LED1);
00013 DigitalOut led2(LED2);
00014 DigitalOut led3(LED3);
00015 DigitalOut led4(LED4);
00016 
00017 int heightpos=0;
00018 int tiltpos=0;
00019 float mspeed=1; //can be changed based on rate here;
00020 char inData[5];
00021 char previnData[5];
00022 char inChar;
00023 int index=0;
00024 
00025 //CHANGE THESE
00026 const char* wifissid = "SSID";
00027 const char* password = "Pass";
00028 const char* ipaddress="IP";
00029 const int port = PORT;
00030 
00031 void closetiltup(){//sets front of blinds to be tilted up
00032     while(tiltpos>-10){
00033         m2.speed(-mspeed);
00034         wait(mspeed*.02);
00035         tiltpos=tiltpos-(mspeed);
00036     }
00037     m2.speed(0);
00038 }
00039     
00040 void closetiltdown(){
00041         while(tiltpos<10){
00042             m2.speed(mspeed);
00043             wait(mspeed*.02);
00044             tiltpos=tiltpos+(mspeed);
00045         }
00046         m2.speed(0);
00047 }
00048 
00049 void tiltto(float pos){
00050         if(pos>tiltpos){
00051             m2.speed(mspeed);
00052             while(tiltpos<pos){
00053                 wait(mspeed*.02);
00054                 tiltpos=tiltpos+(mspeed);
00055             }
00056             m2.speed(0);
00057         }
00058         else if(pos<tiltpos){
00059             m2.speed(-mspeed);
00060             while(tiltpos>pos){
00061                 wait(mspeed*.02);
00062                 tiltpos=tiltpos-(mspeed);
00063             }
00064             m2.speed(0);
00065         }
00066         else{
00067         }
00068 }
00069 
00070 void fullup(){
00071     while(heightpos<10){
00072         m1.speed(mspeed);
00073         wait(mspeed*2);
00074         heightpos=heightpos+(mspeed);
00075     }
00076     m1.speed(0);
00077 }
00078 
00079 void fulldown(){
00080     while(heightpos>0){
00081         m1.speed(-mspeed);
00082         wait(mspeed);
00083         heightpos=heightpos-(mspeed);
00084     }
00085     m1.speed(0);
00086 }
00087 
00088 void moveto(float pos){
00089      if(pos>heightpos){
00090             m1.speed(mspeed);
00091             while(heightpos<pos){
00092                 wait(mspeed*1.3);
00093                 heightpos=heightpos+(mspeed);
00094             }
00095             m1.speed(0);
00096         }
00097         else if(pos<heightpos){
00098             m1.speed(-mspeed);
00099             while(heightpos>pos){
00100                 wait(mspeed*.08);
00101                 heightpos=heightpos-(mspeed);
00102             }
00103             m1.speed(0);
00104         }
00105         else{
00106         }
00107 }
00108 
00109 void resettozero(){
00110     moveto(0);
00111     tiltto(0);
00112 }
00113 
00114 int main()
00115 {
00116     uLCD_4DGL ulcd(p9, p10, p11); // this is for an mbed-side print of current status
00117     float num;
00118     float prevnum;
00119     int n;
00120     wifi.init();
00121     bool result;    
00122     result = wifi.connect(wifissid, password);
00123     if(!result){
00124         ulcd.printf("error");
00125         while(!result){
00126             result=wifi.connect(wifissid, password);
00127         }
00128     }
00129     ulcd.printf("wifi c");
00130     if(socket.connect(ipaddress, port)<0){
00131         ulcd.printf("\ndevice nc");//hosted via laptop
00132         while(socket.connect(ipaddress,port)<0){
00133         }
00134     }
00135     ulcd.printf("\ndevice c");
00136     //socket.send("1", 1);
00137     while(1){
00138     /*    if(!wifi.is_connected()){
00139                 result = wifi.connect(wifissid, password);
00140             if(!result){
00141                 ulcd.printf("error");
00142                 while(!result){
00143                     result=wifi.connect(wifissid, password);
00144                 }
00145             }
00146         }
00147     while(wifi.is_connected()){*/
00148         led1=!led1;
00149       /*  if(!socket.is_connected()){
00150                while(socket.connect(ipaddress,port)<0){
00151                    led2=!led2;
00152                }
00153         }*/
00154         n=0;
00155         socket.send("1",1);
00156        // socket.close();
00157         //while(socket.connect(ipaddress,port)<0){
00158             led2=!led2;
00159        // }
00160         n=socket.receive(inData, sizeof(inData));
00161         led3=!led3;
00162         ulcd.cls();
00163       //  ulcd.printf("\n%c%c%c%c%c", inData[0], inData[1], inData[2], inData[3], inData[4]);
00164         prevnum=num;
00165         num = ((inData[3]-48)*10)+(inData[4]-48);
00166       //  ulcd.printf("\n%f", num);
00167         if(inData[2]=='-')
00168             num=-num;
00169         if((num>10)or(num<-10))
00170             num=prevnum; //do nothing if invalid input
00171         index=0;
00172         if(inData[0]=='0')
00173             resettozero();
00174         else if(inData[0]=='1')
00175             closetiltup();
00176         else if(inData[0]=='2')
00177             closetiltdown();
00178         else if(inData[0]=='3')
00179             tiltto(num);
00180         else if(inData[0]=='4')
00181             fullup();
00182         else if(inData[0]=='5')
00183             fulldown();
00184         else if(inData[0]=='6'){
00185             if(num>=0)
00186                 moveto(num);
00187         }
00188         ulcd.locate(0,0);
00189         ulcd.printf("Height is %i\n Tilt is %i\n", heightpos, tiltpos);
00190         //if(n>-1){
00191             socket.close();
00192           //  if(!socket.is_connected()){
00193             //    ulcd.printf("\ndevice nc");//hosted via laptop
00194                 while(socket.connect(ipaddress,port)<0){
00195                     led4=!led4;
00196                 }
00197                 ulcd.printf("\ndevice rc");
00198             //}
00199         //}
00200     }//}
00201     socket.close();
00202     wifi.disconnect();
00203 }
00204