Advertisement
ptnega

Untitled

May 18th, 2015
506
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.75 KB | None | 0 0
  1. #include <SPI.h>
  2. #include <WiFi.h>
  3. #include <Servo.h>
  4. #include <WiFiUdp.h>
  5.  
  6. char ssid[] = "";                    //    name
  7. char pass[] = "";
  8. int PORT = 6969;
  9.  
  10. bool F = 0, L = 0, R = 0;
  11.  
  12. // Sensor setup
  13. int echoPin = 2;
  14. int initPin = 3;
  15. long pulseTime = 0;
  16. long distance = 0;
  17.  
  18. Servo myServo;
  19. int servoPin = 9;
  20. int pos = 0;
  21.  
  22. // Motor setup
  23. int in[] = {0, 4, 5, 6, 7};
  24.  
  25. // Controling Setup
  26. void process(int t){
  27.     switch (t){
  28.         case 1:
  29.             F = true;
  30.             break;
  31.         case 2:
  32.             F = false;
  33.             break;
  34.         case 3:
  35.             L = true;
  36.             break;
  37.         case 4:
  38.             L = false;
  39.             break;
  40.         case 5:
  41.             R = true;
  42.             break;
  43.         case 6:
  44.             R = false;
  45.             break;
  46.         default:
  47.             Serial.println("Command invalid");
  48.     }
  49. }
  50.  
  51. int speed = 100;
  52.  
  53. void MoveFoward(int iMotor){
  54.     if (iMotor == 1){
  55.         digitalWrite(in[1],HIGH);
  56.         analogWrite(in[2],255-speed);
  57.     } else {
  58.         digitalWrite(in[4],LOW);
  59.         analogWrite(in[3],speed);
  60.     }
  61. }
  62.  
  63. void MoveBackward(int iMotor){
  64.     if (iMotor == 1){
  65.         digitalWrite(in[1], LOW);
  66.         analogWrite(in[2], speed);
  67.     } else {
  68.         digitalWrite(in[4], HIGH);
  69.         analogWrite(in[3],255 - speed);
  70.     }
  71. }
  72.  
  73. void MoveFoward(){
  74.     MoveFoward(1);
  75.     MoveFoward(2);
  76. }
  77.  
  78. void MoveBackward(){
  79.     MoveBackward(1);
  80.     MoveBackward(2);
  81. }
  82.  
  83. void TurnLeft(){
  84.     MoveBackward(1);
  85.     MoveFoward(2);
  86. }
  87.  
  88. void TurnRight(){
  89.     MoveBackward(2);
  90.     MoveFoward(1);
  91. }
  92. void StopMotor(int iMotor){  
  93.   if (iMotor == 1){
  94.     digitalWrite(in[1],LOW);
  95.     analogWrite(in[2],0);
  96.   }
  97.   else{
  98.     digitalWrite(in[4],HIGH);
  99.     analogWrite(in[3],255);
  100.   }
  101. }
  102.  
  103. void StopMotors(){
  104.     StopMotor(1);
  105.     StopMotor(2);
  106. }
  107.  
  108. void DistanceCalculate(){
  109.     digitalWrite(initPin,LOW);
  110.     digitalWrite(initPin,HIGH);
  111.     delayMicroseconds(10);
  112.     digitalWrite(initPin,LOW);
  113.     pulseTime = pulseIn(echoPin,HIGH);
  114.     distance = pulseTime/58;
  115.     delay(10);
  116. }
  117.  
  118. void ServoTurn(Servo svr, int pos){
  119.     svr.write(pos);
  120. }
  121.  
  122. void ServoSweep(int delayTime){
  123.     for (pos = 0; pos < 180; pos += 1){
  124.         ServoTurn(myServo,pos);
  125.         delay(delayTime);
  126.     }
  127.  
  128.     for (pos = 180; pos > 0; pos -= 1){
  129.         ServoTurn(myServo,pos);
  130.         delay(delayTime);
  131.     }
  132. }
  133.  
  134. // Server Setup
  135.  
  136. int keyIndex = 0;                        // network key Index number (needed only for WEP)
  137. int status = WL_IDLE_STATUS;
  138. WiFiServer server(PORT);
  139. bool alreadyConnected = false; // whether or not the client was connected previously
  140.  
  141. void setup() {
  142.     Serial.begin(9600);
  143.  
  144.     myServo.attach(servoPin); // Servo attach
  145.     // Sensor in-out
  146.     pinMode(initPin,OUTPUT);
  147.     pinMode(echoPin,INPUT);
  148.  
  149.     for (int i = 1 ; i <= 4 ; i += 1) pinMode(in[i],OUTPUT); // Motor
  150.  
  151.     //while (!Serial) {}
  152.     if (WiFi.status() == WL_NO_SHIELD) {
  153.         Serial.println("WiFi shield not present");
  154.         while(true);
  155.     }
  156.  
  157.     String fv = WiFi.firmwareVersion();
  158.     if (fv != "1.1.0") Serial.println("Firmware outdated");
  159.  
  160.     // attempt to connect to Wifi network:
  161.     while (status != WL_CONNECTED) {
  162.         Serial.print("Attempting to connect to SSID: ");
  163.         Serial.println(ssid);
  164.         // Connect to WPA/WPA2 network
  165.         status = WiFi.begin(ssid, pass);
  166.  
  167.         delay(5000);
  168.     }
  169.     server.begin();
  170.     printWifiStatus();
  171.  }
  172.  
  173.  
  174. void loop() {
  175.     WiFiClient client = server.available();
  176.    DistanceCalculate();
  177.     if (client) { // first byte
  178.         if (!alreadyConnected) {
  179.             client.flush();
  180.             client.print("xxx");
  181.             Serial.println("New client");
  182.             alreadyConnected = true;
  183.         }
  184.         if (client.available() > 0) {
  185.             // read incoming bytes from the client
  186.             int thisChar = client.read();
  187.             Serial.println(thisChar);
  188.             process(thisChar);
  189.             // echo back to the client
  190.             Serial.println("Nhan cmnr");
  191.             server.write(thisChar);
  192.             Serial.println("Gui cmnr");
  193.         }
  194.         if (L) TurnLeft();
  195.         else if (R) TurnRight();
  196.         if (F) MoveFoward();
  197.        
  198.         if (!L && !R && !F) StopMotors();
  199.         if ((distance < 200 && distance > 2)){
  200.           int x[] = {7, distance, pos};
  201.           for (int i = 0; i < 3; ++i) server.write(x[i]);
  202.         }
  203.     }
  204. }
  205.  
  206.  
  207. void printWifiStatus() {
  208.     Serial.print("SSID: ");
  209.     Serial.println(WiFi.SSID());
  210.  
  211.     IPAddress ip = WiFi.localIP();
  212.     Serial.print("IP Address: ");
  213.     Serial.println(ip);
  214.  
  215.     long rssi = WiFi.RSSI();
  216.     Serial.print("signal strength (RSSI):");
  217.     Serial.print(rssi);
  218.     Serial.println(" dBm");
  219. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement