|
@@ -55,24 +55,34 @@ struct SwitchData switchdata = {0};
|
|
|
|
|
|
|
|
//UDP server (receiving) setup
|
|
//UDP server (receiving) setup
|
|
|
unsigned int udpPort = 2730;
|
|
unsigned int udpPort = 2730;
|
|
|
-byte packetBuffer[50]; //udp package buffer
|
|
|
|
|
-char sendBuffer[50];
|
|
|
|
|
|
|
+byte packetBuffer[68]; //udp package buffer
|
|
|
|
|
+char sendBuffer[68];
|
|
|
WiFiUDP Udp;
|
|
WiFiUDP Udp;
|
|
|
|
|
|
|
|
|
|
+//Button pressed counter
|
|
|
|
|
+boolean isCounting = false;
|
|
|
|
|
+u_long startCountingTime;
|
|
|
|
|
+
|
|
|
void setup(void){
|
|
void setup(void){
|
|
|
Serial.begin(115200);
|
|
Serial.begin(115200);
|
|
|
Serial.println("Starting controller..");
|
|
Serial.println("Starting controller..");
|
|
|
WiFi.mode(WIFI_STA);
|
|
WiFi.mode(WIFI_STA);
|
|
|
- WiFi.disconnect();
|
|
|
|
|
|
|
+
|
|
|
EEPROM.begin(512);
|
|
EEPROM.begin(512);
|
|
|
|
|
|
|
|
delay(10);
|
|
delay(10);
|
|
|
- Udp.begin(udpPort);
|
|
|
|
|
- Wire.begin();
|
|
|
|
|
|
|
+ Wire.begin(13,14);
|
|
|
|
|
|
|
|
//Magnetic sensor
|
|
//Magnetic sensor
|
|
|
|
|
+ pinMode(5,INPUT);
|
|
|
|
|
+
|
|
|
|
|
+ //Joystick button
|
|
|
pinMode(12,INPUT);
|
|
pinMode(12,INPUT);
|
|
|
|
|
|
|
|
|
|
+ //back button
|
|
|
|
|
+ pinMode(0,INPUT);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
//Rumble motor
|
|
//Rumble motor
|
|
|
pinMode(15, OUTPUT);
|
|
pinMode(15, OUTPUT);
|
|
|
|
|
|
|
@@ -81,11 +91,14 @@ void setup(void){
|
|
|
connectLastBasestation();
|
|
connectLastBasestation();
|
|
|
//searchBasestation();
|
|
//searchBasestation();
|
|
|
|
|
|
|
|
- delay(1000);
|
|
|
|
|
|
|
+ delay(200);
|
|
|
|
|
+ Udp.begin(udpPort);
|
|
|
ads.begin();
|
|
ads.begin();
|
|
|
|
|
|
|
|
joystickoffset_x = ads.readADC_SingleEnded(0, 1);
|
|
joystickoffset_x = ads.readADC_SingleEnded(0, 1);
|
|
|
joystickoffset_y = ads.readADC_SingleEnded(1, 1);
|
|
joystickoffset_y = ads.readADC_SingleEnded(1, 1);
|
|
|
|
|
+
|
|
|
|
|
+ delay(200);
|
|
|
|
|
|
|
|
mpu6050setup();
|
|
mpu6050setup();
|
|
|
}
|
|
}
|
|
@@ -133,7 +146,7 @@ double dist(double a, double b){
|
|
|
u_long lasttime;
|
|
u_long lasttime;
|
|
|
void loop(void){
|
|
void loop(void){
|
|
|
readMpu6050(&mpu6050data);
|
|
readMpu6050(&mpu6050data);
|
|
|
- if(millis() - lasttime > 30){
|
|
|
|
|
|
|
+ if(millis() - lasttime > 28){
|
|
|
lasttime = millis();
|
|
lasttime = millis();
|
|
|
//Poll udp server
|
|
//Poll udp server
|
|
|
int noBytes = Udp.parsePacket();
|
|
int noBytes = Udp.parsePacket();
|
|
@@ -167,10 +180,9 @@ void loop(void){
|
|
|
readSwitches(&switchdata);
|
|
readSwitches(&switchdata);
|
|
|
|
|
|
|
|
//Send new data
|
|
//Send new data
|
|
|
- joystickdata.button = 0;
|
|
|
|
|
sendUdpMessage(&joystickdata, &mpu6050data, &switchdata);
|
|
sendUdpMessage(&joystickdata, &mpu6050data, &switchdata);
|
|
|
}else{
|
|
}else{
|
|
|
- delay(6);
|
|
|
|
|
|
|
+ delay(5);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -206,10 +218,23 @@ void readJoystick(struct JoystickData *joystickdata){
|
|
|
joystickdata->x = ads.readADC_SingleEnded(1, 0) - joystickoffset_x;
|
|
joystickdata->x = ads.readADC_SingleEnded(1, 0) - joystickoffset_x;
|
|
|
delay(8);
|
|
delay(8);
|
|
|
joystickdata->y = ads.readADC_SingleEnded(0, 0) - joystickoffset_y;
|
|
joystickdata->y = ads.readADC_SingleEnded(0, 0) - joystickoffset_y;
|
|
|
|
|
+ joystickdata->button = !digitalRead(12);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void readSwitches(struct SwitchData *switchdata){
|
|
void readSwitches(struct SwitchData *switchdata){
|
|
|
- switchdata->magnetSwitch = !digitalRead(12);
|
|
|
|
|
|
|
+ switchdata->backSwitch = !digitalRead(0);
|
|
|
|
|
+ switchdata->magnetSwitch = !digitalRead(5);
|
|
|
|
|
+ if(!switchdata->backSwitch){
|
|
|
|
|
+ isCounting = false;
|
|
|
|
|
+ }else if(isCounting){
|
|
|
|
|
+ if(millis() - startCountingTime > 8000){ //Pressed longer then 8 seconds, start searching for basestation
|
|
|
|
|
+ rumble(1000, 150);
|
|
|
|
|
+ searchBasestation();
|
|
|
|
|
+ }
|
|
|
|
|
+ }else if(switchdata->backSwitch){
|
|
|
|
|
+ isCounting = true;
|
|
|
|
|
+ startCountingTime = millis();
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void rumble(int duration, int power){
|
|
void rumble(int duration, int power){
|
|
@@ -275,10 +300,14 @@ void connectLastBasestation(void){
|
|
|
Serial.printf("Valid basestation information in eeprom found! \nEeprom SSID: %s \nEeprom Password: %s", eepromWifiSSID, eepromWifiPassword);
|
|
Serial.printf("Valid basestation information in eeprom found! \nEeprom SSID: %s \nEeprom Password: %s", eepromWifiSSID, eepromWifiPassword);
|
|
|
|
|
|
|
|
//Connect to the basestation
|
|
//Connect to the basestation
|
|
|
|
|
+ startCountingTime = millis();
|
|
|
WiFi.begin(eepromWifiSSID, eepromWifiPassword);
|
|
WiFi.begin(eepromWifiSSID, eepromWifiPassword);
|
|
|
while (WiFi.status() != WL_CONNECTED) {
|
|
while (WiFi.status() != WL_CONNECTED) {
|
|
|
delay(500);
|
|
delay(500);
|
|
|
Serial.print(".");
|
|
Serial.print(".");
|
|
|
|
|
+ if(millis() - startCountingTime > 15000){
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -299,7 +328,7 @@ void sendUdpMessage(struct JoystickData *joystick, struct MPU6050Data *mpu6050da
|
|
|
Udp.beginPacket(BasestationIp, BasestationPort);
|
|
Udp.beginPacket(BasestationIp, BasestationPort);
|
|
|
sprintf(sendBuffer, "%06d|%06d|%01d|", joystick->x, joystick->y, joystick->button);
|
|
sprintf(sendBuffer, "%06d|%06d|%01d|", joystick->x, joystick->y, joystick->button);
|
|
|
sprintf(sendBuffer, "%s%06d|%06d|%06d|", sendBuffer, mpu6050data->yaw, mpu6050data->pitch, mpu6050data->roll);
|
|
sprintf(sendBuffer, "%s%06d|%06d|%06d|", sendBuffer, mpu6050data->yaw, mpu6050data->pitch, mpu6050data->roll);
|
|
|
- sprintf(sendBuffer, "%s%01d|%01d", sendBuffer, switchdata->backSwitch, switchdata->magnetSwitch);
|
|
|
|
|
|
|
+ sprintf(sendBuffer, "%s%01d|%01d|", sendBuffer, switchdata->backSwitch, switchdata->magnetSwitch);
|
|
|
sprintf(sendBuffer, "%s%06d|%06d|%06d", sendBuffer, mpu6050data->ax, mpu6050data->ay, mpu6050data->az);
|
|
sprintf(sendBuffer, "%s%06d|%06d|%06d", sendBuffer, mpu6050data->ax, mpu6050data->ay, mpu6050data->az);
|
|
|
Serial.printf("%s", sendBuffer);
|
|
Serial.printf("%s", sendBuffer);
|
|
|
Serial.println();
|
|
Serial.println();
|