pierre masala
/
MeARM
Mearm colorsorting with web application
Revision 7:3b1ce80e424c, committed 2018-01-30
- Comitter:
- pierre11
- Date:
- Tue Jan 30 10:53:08 2018 +0000
- Parent:
- 6:60ab0d214512
- Commit message:
- MeARM +TCS3200
Changed in this revision
TCS3200.lib | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 60ab0d214512 -r 3b1ce80e424c TCS3200.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TCS3200.lib Tue Jan 30 10:53:08 2018 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/grantphillips/code/TCS3200/#b98e768bc655
diff -r 60ab0d214512 -r 3b1ce80e424c main.cpp --- a/main.cpp Thu Dec 14 13:24:01 2017 +0000 +++ b/main.cpp Tue Jan 30 10:53:08 2018 +0000 @@ -7,45 +7,57 @@ #include "TCPServer.h" #include "TCPSocket.h" #include "Servo.h" -uint8_t http[1024]; +#include "TCS3200.h" + +TCS3200 color(PF_6, PF_7, PF_8, PF_9, PA_0); //Create a TCS3200 object + // S0 S1 S2 S3 OUT + +uint8_t httpr1[1024]={200,200}; uint8_t httpr[1024]={200,200}; -uint8_t httpr1[300]={2,2,2,2}; -//static void SendWebPage( float ,float ,float , float ); +int colour(); +Servo Servo1(PD_15); +Servo Servo2(PD_12); +Servo Servo3(PD_13); +Servo Servo4(PD_14); - +int pos1 =0,pos2=0,pos4=0,pos3=0; +DigitalOut myled1(LED1); +DigitalOut myled2(LED2); +DigitalOut myled3(LED3); + int main() { - Servo Servo1(PD_13); - Servo Servo2(PD_12); - Servo Servo3(PD_14); - Servo Servo4(PD_15); + - Servo1.Enable(1500,20000); - Servo2.Enable(1500,20000); - Servo3.Enable(1500,20000); + Servo1.Enable(0,20000); + Servo2.Enable(0,20000); + Servo3.Enable(0,20000); + Servo4.Enable(0,20000); + pos3=2500; + Servo3.SetPosition(pos3); + wait_ms(10); + pos1=950; + Servo1.SetPosition(pos1); + wait_ms(10); + pos2=600; + Servo2.SetPosition(pos2); + wait_ms(10); + pos4=600; + Servo4.SetPosition(pos4); + wait_ms(10); - int pos,i=0,a=0,a1=0; - printf("Basic HTTP server example\n"); - - + int pos,i=0,a=0,a1=0,x=0; + printf("Pierre Program\n"); EthernetInterface eth; eth.connect(); - printf("The target IP address is '%s'\n", eth.get_ip_address()); - TCPServer srv; - TCPSocket clt_sock; - SocketAddress clt_addr; - - /* Open the server on ethernet stack */ srv.open(ð); - - /* Bind the HTTP port (TCP 80) to the server */ //srv.bind(eth.get_ip_address(), 80); srv.bind(eth.get_ip_address(), 5001); @@ -58,16 +70,8 @@ while (true) { //========================== - for ( pos = 500; pos < 2000; pos += 25) - { - Servo1.SetPosition(pos); - httpr[i]=8; - wait_ms(20); - i++; - } - - //i=0; - // SendWebPage(pos,v2,v3,v4); + + srv.accept(&clt_sock, &clt_addr); printf("accept %s:%d\n", clt_addr.get_ip_address(), clt_addr.get_port()); a = clt_sock.send(httpr, strlen((char *)httpr)); @@ -82,6 +86,237 @@ } clt_sock.close(); printf("accept voir %d\n",httpr1[0]); + + switch(httpr1[0]) + { + case 49: + //=================== + + for ( pos2 = 600; pos2 <= 2000; pos2 += 25) + { + Servo2.SetPosition(pos2); + wait_ms(10); + } + wait_ms(1000); + + for ( pos3 = 2500; pos3 >= 1650; pos3 -= 25) + { + Servo3.SetPosition(pos3); + wait_ms(10); + } + wait_ms(1000); + + for ( pos1 = 950; pos1 <= 1650; pos1 += 25) + { + Servo1.SetPosition(pos1); + wait_ms(10); + } + + wait_ms(1000); + for ( pos4 = 600; pos4 <= 2000; pos4 += 25) + { + Servo4.SetPosition(pos4); + wait_ms(10); + if(pos4==2000) + { + pos1=950; + Servo1.SetPosition(pos1); + wait_ms(1000); + pos3=2500; + Servo3.SetPosition(pos3); + wait_ms(1000); + + } + } + + for ( pos2 = 2000; pos2 <= 2600; pos2 += 25) + { + Servo2.SetPosition(pos2); + wait_ms(10); + } + wait_ms(1000); + + + for ( pos3 = 2500; pos3 >= 1650; pos3 -= 25) + { + Servo3.SetPosition(pos3); + wait_ms(10); + } + wait_ms(1000); + + for ( pos1 = 950; pos1 <= 1650; pos1 += 25) + { + Servo1.SetPosition(pos1); + wait_ms(10); + } + + // ==sensor + if(colour()== 1) + { + printf("RED\n"); + myled1 = 0; + myled2 = 0; + myled3 = 1; + pos2=600; + strcpy((char *)httpr, (char *)"R"); + + } + else + { + if(colour() == 2) + { + printf("GREEN\n"); + myled1 = 1; + myled2 = 0; + myled3 = 0; + pos2=900; + strcpy((char *)httpr, (char *)"G"); + } + if(colour() == 3) + { + printf("BLUE\n"); + myled1 = 0; + myled2 = 1; + myled3 = 0; + + pos2=1010; + strcpy((char *)httpr, (char *)"B"); + + + } + } + + Servo2.SetPosition(pos2); + wait_ms(1000); + //====== + + + pos1=950; + Servo1.SetPosition(pos1); + wait_ms(1000); + pos3=2500; + Servo3.SetPosition(pos3); + wait_ms(1000); + pos2=600; + Servo2.SetPosition(pos2); + wait_ms(1000); + + + for ( pos3 = 2500; pos3 >= 1650; pos3 -= 25) + { + Servo3.SetPosition(pos3); + wait_ms(10); + } + wait_ms(1000); + + for ( pos1 = 950; pos1 <= 1650; pos1 += 25) + { + Servo1.SetPosition(pos1); + wait_ms(10); + if(pos1==2050) + { + pos4=1400; + Servo4.SetPosition(pos4); + wait_ms(10); + } + } + pos1 =950; + Servo1.SetPosition(pos1); + wait_ms(1000); + + pos3=2500; + Servo3.SetPosition(pos3); + wait_ms(1000); + + //=================== + break; + case 50: + //=================== + // move_3(); + pos3=2500; + Servo3.SetPosition(pos3); + wait_ms(10); + pos1=950; + Servo1.SetPosition(pos1); + wait_ms(10); + pos2=600; + Servo2.SetPosition(pos2); + wait_ms(10); + pos4=600; + Servo4.SetPosition(pos4); + wait_ms(10); + strcpy((char *)httpr, (char *)"M2"); + //=================== + break; + case 51: + //===================== + // move_1(); + strcpy((char *)httpr, (char *)"M3"); + //===================== + break; + case 52: + //========================= + // move_4(); + strcpy((char *)httpr, (char *)"M4"); + //========================= + break; + } } -} \ No newline at end of file +} +int colour() +{ + color.SetMode(TCS3200::SCALE_100); + long red, green, blue, clear; + int r = 0,g = 0, b =0 ; + for(int c=0 ; c < 10; c++) +{ + + red = color.ReadRed(); + green = color.ReadGreen(); + blue = color.ReadBlue(); + clear = color.ReadClear(); + + if((red < blue) && (red < green)) + { + r++; // red + } + if((green < blue) && (green < red)) + { + g++;//green + } + if(blue < red && blue < green) + { + b++;//blue + } + +} + + if((r > b) && (r > g)) + { + return 1; //red + } + else + { + if(g > b && g > r) + { + return 2; //green + } + else + { + if(b > g && b > r) + { + return 3; + } + else + { + return 4; + } + //blue + + } + + + } + +}