 	rightMotor(baseSpeed - CORRECTION(p,i,d));
 	leftMotor(baseSpeed + CORRECTION(p,i,d));
 
+	//Aceleração ou desaceleração dependendo do erro
 	accel(5, 50);
 
+	//Atualiza o erro anterior e soma o erro no erro integral
 	prevErr = err;
 	iErr += err;
 
+	//Previne windup (soma excessiva potencialmente perigosa do erro integral)
 	preventWindup();
 }
 
+//Previne windup (soma excessiva potencialmente perigosa do erro integral)
 void preventWindup() {
 	if(iErr >= maxSpeed)
 	{


/******* CONFIGURAÇÃO PARA OS SENSORES *********/

	int sensor[NUMSENSORS] = {22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42};
	//Para esquema 1, -9, -7, -5, -3, -1, 1, 3, 5, 7, 9; 
	//Para esquema 2, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90;
	int error[NUMSENSORS] = {-9, -7, -5, -3, -1, 0, 1, 3, 5, 7, 9};

/******** CONFIGURAÇÃO PARA OS MOTORES **********/

	int leftMotor[2] = {2, 3};
	int rightMotor[2] = {4, 5};

/******** CONFIGURAÇÃO PARA O CONTROLE **********/
	int currentPoint = 0;
	int setPoint = 0; //Para esquema 1, setPoint = 0; Para esquema 2, setPoint = 45;
	int err = 0;
	int iErr = 0, prevErr = 0;
	int p = 0, i = 0, d = 0;
	//Valores a serem testados
	int baseSpeed = 0;
	int maxSpeed = 0;
	unsigned long timeFlag = 0;

void setup() {
	//Definição das portas dos sensores como input e dos motores como output
	int i = 0;
	for(i = 0; i < NUMSENSORS; i++) {
		pinMode(sensor[i], INPUT);
	}

	for(i = 0; i < 2; i++) {
		pinMode(leftMotor[i], OUTPUT);
		pinMode(rightMotor[i], OUTPUT);
	}
}

void loop() {
	err = getCurrentPoint() - setPoint;
	p = KP * err;
	i = KI * (iErr);
	d = KD * (err - prevErr);

		denominador = 1;
	}

	//Cálculo da média
	return numerador/denominador;
}

//Ativa o motor direito com intensidade 'speed'
void rightMotor(int speed) {
	int newSpeedRightMotor = speed;
	if(speed > maxSpeed) {
