Advertisement
Victoryus82

wifi_udp_dc_servo

May 15th, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.35 KB | None | 0 0
  1. #include <ESP8266WiFi.h>
  2. #include <WiFiUdp.h>
  3. #include <Adafruit_MotorShield.h>
  4. #include <Servo.h>
  5.  
  6. // --------------------------------[ config ]-------------------------------------
  7.   //--LED
  8.     const int ledPin = 14; //teszt jelleggel, sck led
  9.  
  10.   //---SERVO motor megadása
  11.     Servo myservo;
  12.  
  13.   //--wifi config
  14.     #ifndef APSSID
  15.     #define APSSID "WEMOS"
  16.     #define APPSK  "nincs"
  17.     #endif
  18.     const char *ssid = APSSID;
  19.     const char *password = APPSK;
  20.     IPAddress ip(192, 168, 1, 10); // Wemos ip címe
  21.     IPAddress netmask(255, 255, 255, 0); //netmask
  22.  
  23.   //--udp config
  24.     WiFiUDP UDPTestServer;
  25.     unsigned int UDPPort = 4000; //udp szerver portja
  26.     const int packetSize = 20; // csomag mérete
  27.     char packetBuffer[packetSize];
  28.  
  29.   //--MOTOR shield object
  30.     Adafruit_MotorShield AFMS = Adafruit_MotorShield();
  31.     Adafruit_DCMotor *myMotor = AFMS.getMotor(1); // Select which 'port' M1, M2, M3 or M4. In this case, M1 Sima DC motor
  32.     //Adafruit_DCMotor *myMotor = AFMS.getMotor(2); // Select which 'port' M1, M2, M3 or M4. In this case, M2
  33.  
  34. //----------------------------------[ SETUP ]-----------------------------------
  35. void setup() {
  36.    
  37.     Serial.begin(115200);
  38.  
  39.   //--LEDEK
  40.     pinMode(ledPin, OUTPUT);
  41.     pinMode(LED_BUILTIN, OUTPUT);
  42.  
  43.   //--MOTOR
  44.     AFMS.begin();  // create with the default frequency 1.6KHz  AFMS.begin(1000); OR with a different frequency, say 1KHz
  45.     myMotor->setSpeed(150); // Set the speed to start, from 0 (off) to 255 (max speed)
  46.     myMotor->run(FORWARD);  
  47.     myMotor->run(RELEASE); // turn on motor
  48.  
  49.   //--Servo motor GPIO
  50.     myservo.attach(5,600,2300);  //GPIO 5, meg min max, ezt nem értem, de ennyi volt a példában
  51.  
  52.   //--WIFI
  53.     WiFi.softAPConfig(ip, ip, netmask);
  54.     WiFi.softAP(ssid, password, 8); // WifiAp SSID és jelszó beállítás, csatorna, qurvára nem csinál semmit, a 20-al ezelőttit használja
  55.     Serial.println("Indul...");  //ezt sose írja ki, csak időhúzás
  56.     Serial.println("Wemos D1R2 UDP teszt 2019.05.15");
  57.     Serial.println((String)"SSID: " + ssid + "  PASS: " + password);  //ennek sincs sok értelme, úgy se ez a valős
  58.     Serial.println((String)"RoboRemo app udp adatok " + ip.toString() + ":" + UDPPort);
  59.   //--UDP start
  60.     UDPTestServer.begin(UDPPort);
  61. }
  62. //---------------------------------[ A lényeg :) ]-------------------------------
  63. void loop() {  
  64.    handleUDPServer();
  65.    delay(1);
  66. }
  67. //---------------------------------[ A program... ]------------------------------
  68. void handleUDPServer() {
  69.   int cb = UDPTestServer.parsePacket(); //A cb az üzenet mérete. Ha van üzenet, akkor megy tovább....
  70.     if (cb) {
  71.        int len = UDPTestServer.read(packetBuffer, packetSize); //len változó a csomag hossza
  72.           if (len > 0) {
  73.             packetBuffer[len-1] = '\0'; //betesz az utolsó karakternek egy lezárást
  74.               // Serial.println(len); len változó hossza
  75.               // Serial.println(packetBuffer);  pocketBuffer a csomag tartalma
  76.             int iValue = atoi(packetBuffer + 3);
  77.             Serial.println(iValue);  
  78.               //LEDEK Be/Ki
  79.             if (iValue == 500)
  80.             {
  81.               Serial.println("500-es érkezik, led BE...");
  82.               digitalWrite(ledPin, HIGH);
  83.             }
  84.             if (iValue == 501)
  85.             {
  86.               Serial.println("501 érkezik, led KI...");
  87.               digitalWrite(ledPin, LOW);
  88.             }
  89.             if (iValue == 502)
  90.             {
  91.               Serial.println("502-es érkezik, BUILTINled BE...");
  92.               digitalWrite(LED_BUILTIN, LOW);
  93.             }
  94.             if (iValue == 503)
  95.             {
  96.               Serial.println("503 érkezik, BUILTINled KI...");
  97.               digitalWrite(LED_BUILTIN, HIGH);
  98.             }
  99.               //DC motor, egyelőre csak előre... csúszka 0-256 között
  100.                   //A Lego motor csak 50 körül indul, a másik már 11-től, teszt 1 motorral
  101.             if (iValue >= 0 && iValue <256)
  102.             {
  103.               myMotor->run(FORWARD);
  104.               myMotor->setSpeed(iValue);
  105.             }
  106.  
  107.             //Servo motor, a telefon giroszkópjától kapja az adatokat, kb. 180 fokot fordul
  108.          
  109.             if (iValue >= 1000 && iValue <= 2000)
  110.             {
  111.               myservo.write(iValue);
  112.  
  113.             }  
  114.         }
  115.      }
  116.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement