Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ESP8266WiFi.h>
- #include <WiFiUdp.h>
- #include <Adafruit_MotorShield.h>
- #include <Servo.h>
- // --------------------------------[ config ]-------------------------------------
- //--LED
- const int ledPin = 14; //teszt jelleggel, sck led
- //---SERVO motor megadása
- Servo myservo;
- //--wifi config
- #ifndef APSSID
- #define APSSID "WEMOS"
- #define APPSK "nincs"
- #endif
- const char *ssid = APSSID;
- const char *password = APPSK;
- IPAddress ip(192, 168, 1, 10); // Wemos ip címe
- IPAddress netmask(255, 255, 255, 0); //netmask
- //--udp config
- WiFiUDP UDPTestServer;
- unsigned int UDPPort = 4000; //udp szerver portja
- const int packetSize = 20; // csomag mérete
- char packetBuffer[packetSize];
- //--MOTOR shield object
- Adafruit_MotorShield AFMS = Adafruit_MotorShield();
- Adafruit_DCMotor *myMotor = AFMS.getMotor(1); // Select which 'port' M1, M2, M3 or M4. In this case, M1 Sima DC motor
- //Adafruit_DCMotor *myMotor = AFMS.getMotor(2); // Select which 'port' M1, M2, M3 or M4. In this case, M2
- //----------------------------------[ SETUP ]-----------------------------------
- void setup() {
- Serial.begin(115200);
- //--LEDEK
- pinMode(ledPin, OUTPUT);
- pinMode(LED_BUILTIN, OUTPUT);
- //--MOTOR
- AFMS.begin(); // create with the default frequency 1.6KHz AFMS.begin(1000); OR with a different frequency, say 1KHz
- myMotor->setSpeed(150); // Set the speed to start, from 0 (off) to 255 (max speed)
- myMotor->run(FORWARD);
- myMotor->run(RELEASE); // turn on motor
- //--Servo motor GPIO
- myservo.attach(5,600,2300); //GPIO 5, meg min max, ezt nem értem, de ennyi volt a példában
- //--WIFI
- WiFi.softAPConfig(ip, ip, netmask);
- 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
- Serial.println("Indul..."); //ezt sose írja ki, csak időhúzás
- Serial.println("Wemos D1R2 UDP teszt 2019.05.15");
- Serial.println((String)"SSID: " + ssid + " PASS: " + password); //ennek sincs sok értelme, úgy se ez a valős
- Serial.println((String)"RoboRemo app udp adatok " + ip.toString() + ":" + UDPPort);
- //--UDP start
- UDPTestServer.begin(UDPPort);
- }
- //---------------------------------[ A lényeg :) ]-------------------------------
- void loop() {
- handleUDPServer();
- delay(1);
- }
- //---------------------------------[ A program... ]------------------------------
- void handleUDPServer() {
- int cb = UDPTestServer.parsePacket(); //A cb az üzenet mérete. Ha van üzenet, akkor megy tovább....
- if (cb) {
- int len = UDPTestServer.read(packetBuffer, packetSize); //len változó a csomag hossza
- if (len > 0) {
- packetBuffer[len-1] = '\0'; //betesz az utolsó karakternek egy lezárást
- // Serial.println(len); len változó hossza
- // Serial.println(packetBuffer); pocketBuffer a csomag tartalma
- int iValue = atoi(packetBuffer + 3);
- Serial.println(iValue);
- //LEDEK Be/Ki
- if (iValue == 500)
- {
- Serial.println("500-es érkezik, led BE...");
- digitalWrite(ledPin, HIGH);
- }
- if (iValue == 501)
- {
- Serial.println("501 érkezik, led KI...");
- digitalWrite(ledPin, LOW);
- }
- if (iValue == 502)
- {
- Serial.println("502-es érkezik, BUILTINled BE...");
- digitalWrite(LED_BUILTIN, LOW);
- }
- if (iValue == 503)
- {
- Serial.println("503 érkezik, BUILTINled KI...");
- digitalWrite(LED_BUILTIN, HIGH);
- }
- //DC motor, egyelőre csak előre... csúszka 0-256 között
- //A Lego motor csak 50 körül indul, a másik már 11-től, teszt 1 motorral
- if (iValue >= 0 && iValue <256)
- {
- myMotor->run(FORWARD);
- myMotor->setSpeed(iValue);
- }
- //Servo motor, a telefon giroszkópjától kapja az adatokat, kb. 180 fokot fordul
- if (iValue >= 1000 && iValue <= 2000)
- {
- myservo.write(iValue);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement