I'm getting this weird error, and in a weird place (line 60)
60: error: expected unqualified-id before 'else'
//#include <Wire.h>
#include <string.h>
#include <AFMotor.h>
//#include <utility\twi.h>
//#include <stdio.h>
#include <Servo.h>
#define HIGH true
#define LOW false
//Pins 0 & 1 is for Tx & RX for computer DO NOT PUT SERIAL THINGS (aka the BLUESMiRF RP-SMA) HERE OR CODE WILL NOT UPLOAD TO THE ARDUINO!!! maybe.....
#define front_light_R 0
#define front_light_G 1
#define front_light_B 2
#define X_turret_servo 7
#define Y_turret_servo 8
#define steer_servo 11
#define drive_motor 12
#define debugled 13
//Pins 14 & 15 is for TX & RX for Bluetooth (Serial3)
//Pins 16 & 17 is for Tx & RX for GPS (Serial2)
//Pins 18 & 19 is UNKNOWN (Serial1)
//Pins 20 & 21 is SDA & SCL for I2C
#define top_check 22
#define buzzer 23
#define lazor 24
#define head_lights 25
#define tail_lights 26
#define button 27
#define seg_display[] [28,29,30,31,32,33,34,35] //A,B,C,D,E,F,G,RHDP
#define photo analogRead(0)
#define dip_switch analogRead(8)
#define TOP_CHECK digitalRead(top_check)
#define usb Serial
//#define CAM Serial1
//#define GPS Serial2
#define bluetooth Serial3
#define PHONE_IDLE 0
#define PHONE_RINGING 1
#define PHONE_OFFHOOK 2 <------it errors right here
long previousBLUETOOTHupdate = 0;
long previousBUTTONupdate = 0;
long previousPULSEupdate = 0;
long previousDEBUGupdate = 0;
//long previousACCELupdate = 0;
long previousBUZZupdate = 0;
long previousGYROupdate = 0;
long previousRGBupdate = 0;
char PhoneinData[100];
char Phone_Flag;
int index = 0;
int phone_call_state = 0;
int phone_light = 0;
int phone_compass = 0;
int phone_gyro[3]; //Z:0-359-X:-180-180-Y:-90-90
int previous_phone_gyro[3];
int phone_accel[3]; //X-Y-Z
//int previous_phone_accel[3]; //X-Y-Z
boolean no_BLUETOOTH_com = false;
boolean no_USB_com = false;
boolean no_Amarino_com = false;
boolean debug = false;
boolean debuginit = false;
boolean button_state = false;
boolean started = false;
boolean ended = false;
boolean phones_screen_off = false;
Servo x_turret_servo;
Servo y_turret_servo;
Servo steer;
#ifdef drive_motor
Servo drive;
#else
AF_DCMotor drive(2);
#endif
void setup ()
{
pinMode(button, INPUT);
pinMode(top_check, INPUT);
pinMode(debugled,OUTPUT);
pinMode(lazor,OUTPUT);
#ifdef drive_motor
pinMode(drive_motor, OUTPUT);
#endif
pinMode(tail_lights, OUTPUT);
pinMode(head_lights, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(front_light_R, OUTPUT);
pinMode(front_light_G, OUTPUT);
pinMode(front_light_B, OUTPUT);
bluetooth.begin (57600);
usb.begin (57600);
delay(100);
if (digitalRead(button) == HIGH)
{
// turn RED LED on:
digitalWrite(debugled, HIGH);
debuginit = true;
}
#ifdef drive_motor
drive.attach(drive_motor,1000,2000); //this is special for the BareBone motor controller.
#endif
steer.attach(steer_servo);
x_turret_servo.attach(X_turret_servo);
y_turret_servo.attach(Y_turret_servo);
}
void loop ()
{
GET_PHONE_DATA();
//debug_led_update();
//head_light_updater();
//tail_light_updater();
//buzzer_updater(false);
//button_updater();
//RGB(abs(phone_gyro[2]),abs(phone_gyro[1]));
usb.print(phone_gyro[0]);
usb.print("; ");
usb.print(phone_gyro[1]);
usb.print("; ");
usb.println(phone_gyro[2]);
if (usb.available() > 0)
no_USB_com = false;
else
no_USB_com = true;
if (no_BLUETOOTH_com)// || !TOP_CHECK)
{
DRIVE(0);
steer.write(65);
x_turret_servo.write(90);
y_turret_servo.write(90);
digitalWrite(debugled,HIGH);
}
else
{
digitalWrite(debugled,LOW);
x_turret_servo.write(map(phone_gyro[1],-180,180,0,180));
y_turret_servo.write(map(phone_gyro[2],-90,90,30,180));
if (!no_BLUETOOTH_com && phone_call_state == PHONE_IDLE)
{
DRIVE(phone_gyro[2]);
steer.write(map(phone_gyro[1],45,-45,10,110));
}
}
}
void DRIVE(int power)
{
#ifdef drive_motor
if(power == phone_gyro[2] && phone_gyro[2] > 47)
drive.write(map(power,47,85,88,58));
else if (power == phone_gyro[2] && phone_gyro [2] < 42)
drive.write(map(power,42,0,92,122));
else
drive.write(90);
#else
if(power == 0)
drive.setSpeed(0);
else if(power > 0 && power <= 255)
{
drive.run(FORWARD);
drive.setSpeed(power);
)
else if (power < 0 && power >= -255)
{
drive.run(BACKWARD);
drive.setSpeed(-power);
}
else
drive.setSpeed(0);
#endif
}
void RGB (int R = 0, int G = 0, int B = 0)
{
if (R >= 0 && R <= 255)
analogWrite(front_light_R, R);
if (G >= 0 && G <= 255)
analogWrite(front_light_G, G);
if (B >= 0 && B <= 255)
analogWrite(front_light_B, B);
}
void debug_led_update()
{
if (no_BLUETOOTH_com && (millis() - previousDEBUGupdate) > 500)
{
previousDEBUGupdate = millis();
debug = !debug;
digitalWrite (debugled, debug);
}
else if (debuginit)
digitalWrite (debugled, debuginit);
else
digitalWrite (debugled, false);
}
/*void head_light_updater()
{
if (photo < 500)
{
if (no_BLUETOOTH_com && (millis() - previousDEBUGupdate) > 500)
digitalWrite (head_lights, !digitalRead(head_lights));
else
digitalWrite(head_lights, true);
}
else
digitalWrite(head_lights, false);
}
void tail_light_updater()
{
if (drive.read() > 90 || photo < 500)
{
if (no_BLUETOOTH_com && (millis() - previousDEBUGupdate) > 500)
digitalWrite (tail_lights, !digitalRead(tail_lights));
else
digitalWrite (tail_lights, true);
}
else
digitalWrite (tail_lights, false);
}
void button_updater()
{
if (digitalRead(button) && ((millis() - previousBUTTONupdate) > 1000))
{
button_state = !button_state;
previousBUTTONupdate = millis();
}
}
void buzzer_updater(bool buzz)
{
if (drive.read() > 90 && (millis() - previousBUZZupdate > 500))
{
previousBUZZupdate = millis();
digitalWrite(buzzer, !digitalRead(buzzer));
}
else
digitalWrite(buzzer, buzz);
}*/
void GET_PHONE_DATA()
{
if(bluetooth.available() > 0)
{
previousBLUETOOTHupdate = millis();
//previousACCELupdate = millis();
no_BLUETOOTH_com = false;
char aChar = bluetooth.read();
if(aChar >= 'A' && aChar <= 'Z' && !started)
{
started = true;
Phone_Flag = aChar;
index = 0;
PhoneinData[index] = '\0';
}
else if(aChar == 19 && !ended)
{
ended = true;
}
else if(started)
{
PhoneinData[index] = aChar;
index++;
PhoneinData[index] = '\0';
}
}
else
no_BLUETOOTH_com = true;
if(started && ended)
{
if (Phone_Flag == 'A')
{
previous_phone_gyro[0] = phone_gyro[0];
previous_phone_gyro[1] = phone_gyro[1];
previous_phone_gyro[2] = phone_gyro[2];
phone_gyro[0] = atoi(strtok(PhoneinData, ";"));
phone_gyro[1] = atoi(strtok(NULL, ";"));
phone_gyro[2] = atoi(strtok(NULL, ";"));
if (previous_phone_gyro == phone_gyro)
previousGYROupdate = millis();
if (previous_phone_gyro == phone_gyro && (previousBLUETOOTHupdate - previousGYROupdate) > 500)
{
no_BLUETOOTH_com = true;
}
}
else if (Phone_Flag == 'B')
{
phone_accel[0] = atoi(strtok(PhoneinData, ";"));
phone_accel[1] = atoi(strtok(NULL, ";"));
phone_accel[2] = atoi(strtok(NULL, ";"));
}
else if (Phone_Flag == 'C')
{
phone_call_state = atoi(PhoneinData);
}
else if (Phone_Flag == 'D')
{
phone_light = atoi(PhoneinData);
}
else if (Phone_Flag == 'E')
{
phone_compass = atoi(PhoneinData);
}
else {}
// Get ready for the next time
started = false;
ended = false;
index = 0;
PhoneinData[index] = '\0';
}
if (no_BLUETOOTH_com && (millis() - previousBLUETOOTHupdate) > 5000)
no_BLUETOOTH_com = true;
else
no_BLUETOOTH_com = false;
/*
if((previous_phone_gyro[0] == phone_gyro[0] && previous_phone_gyro[1] == phone_gyro[1] && previous_phone_gyro[2] == phone_gyro[2]) && (previous_phone_accel[0] != phone_accel[0] && previous_phone_accel[1] != phone_accel[1] && previous_phone_accel[2] != phone_accel[2]))
phones_screen_off = true;
else
phones_screen_off = false;
*/
}