Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: 4DGL-uLCD-SE ESP8266NodeMCUInterface Motor mbed
Fork of IoT_Blinds_Control by
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
Generated on Sat Jul 16 2022 23:06:11 by
1.7.2
