Fully Autonomous Golf Caddy

#include <String.h>
#include <ctype.h>
#include <Wire.h>

int compassAddress = 0x32 >> 1;
int heading = 0;
int tilt = 0;
int roll = 0;
int ledPin = 13;
int rxPin = 0;
int txPin = 1;
int byteGPS=-1;
char linea[300] = "";
char comandoGPR[7] = "$GPRMC";
int cont=0;
int bien=0;
int conta=0;
int indices[13];
char CurrentXascii[9];
char CurrentYascii[10];
float CurrentX;
float CurrentY;
float CurrentHeading;
float CurrentHeading1;
float CurrentHeading2;
float CurrentHeading3;
byte responseBytes[6];
int GPStimer=0;
double DeltaX=0.000;
double DeltaY=0.000;
int Instance=0;
int InstanceSize=0;
int buttonState=0;
int buttonPin = 22;
int lastButtonState=0;
int buttonPushCounter=0;
float DesiredHeading=0.0;
int LeftSpeed=0;
int RightSpeed=0;
double ParkingLotX[3] = {4031.24554, 4031.24116, 4031.23294};
double ParkingLotY[3] = {-7427.58914,-7427.57996,-7427.5853};
void setEngineSpeed1(signed char cNewMotorSpeedH)
{
unsigned char cSpeedVal_Motor1 = 0;
if(cNewMotorSpeedH==0)
{
Serial3.print(0,BYTE);
return;
}
cSpeedVal_Motor1 = map(cNewMotorSpeedH,-100,100,1,127);
Serial3.print(cSpeedVal_Motor1, BYTE);
}

void setEngineSpeed2(signed char cNewMotorSpeed2)
{
unsigned char cSpeedVal_Motor2 = 0;
if(cNewMotorSpeed2 == 0)
{
Serial3.print(0,BYTE);
return;
}
cSpeedVal_Motor2 = map(cNewMotorSpeed2,-100,100,128,255);
Serial3.print(cSpeedVal_Motor2, BYTE);
}

void readSensor()
{
Wire.beginTransmission(compassAddress);
Wire.send(0x50);
Wire.endTransmission();
delay(2);
Wire.requestFrom(compassAddress, 6);
if(6 <= Wire.available())
{
for(int i = 0; i<6; i++) {
responseBytes* = Wire.receive();*

  • }*
  • }*
  • heading = ((int)responseBytes[0]<<8) | ((int)responseBytes[1]);*
  • tilt = (((int)responseBytes[2]<<8) | ((int)responseBytes[3]));*
  • roll = (((int)responseBytes[4]<<8) | ((int)responseBytes[5]));*
  • CurrentHeading3 = heading/10;*
  • CurrentHeading2=(CurrentHeading3+CurrentHeading2)/2;*
  • CurrentHeading1=(CurrentHeading2+CurrentHeading1)/2;*
  • CurrentHeading=(CurrentHeading+CurrentHeading1)/2;*

*} *
void readGPS()
{

  • GPStimer=0;*
  • do{*
    _ byteGPS=Serial2.read();_
  • if (byteGPS == -1)*
  • {*
  • delay(100);*
  • } *
  • else {*
  • linea[conta]=byteGPS;*
  • conta++;*
  • if (byteGPS==13){*
  • digitalWrite(ledPin, LOW);*
  • cont=0;*
  • bien=0;*
  • for (int i=1;i<7;i++){*
    _ if (linea*==comandoGPR[i-1]){_
    _
    bien++;_
    _
    }_
    _
    }_
    _
    if(bien==6){_
    _
    for (int i=0;i<300;i++){_
    _ if (linea==','){
    indices[cont]=i;
    cont++;
    }
    if (linea==''){

    * indices[12]=i;
    cont++;
    }
    }
    Serial.println("");
    Serial.println("");
    Serial.println("---------------");
    for (int i=0;i<12;i++){
    for (int j=indices,k=0;j<(indices[i+1]-1);j++,k++){
    switch(i){
    case 2 :
    CurrentXascii[k]=linea[j+1];
    break;
    case 4 :
    CurrentYascii[k]=linea[j+1];
    break;
    }
    }
    }
    CurrentX=atof(CurrentXascii);
    CurrentY=-atof(CurrentYascii);
    }
    conta=0;
    for (int i=0;i<300;i++){
    linea=' ';
    }
    }
    }
    GPStimer++;
    }
    while(GPStimer<300);
    }
    [/quote]*_