Skip to content

Instantly share code, notes, and snippets.

Created June 7, 2014 05:12
Show Gist options
  • Select an option

  • Save anonymous/18a5362392f6972cfd73 to your computer and use it in GitHub Desktop.

Select an option

Save anonymous/18a5362392f6972cfd73 to your computer and use it in GitHub Desktop.
/* Primeiro Teste do Seguidor de Linha
João Pedro Scherer Cipriani
Equipe GaudérioBotz
COLÉGIO TÉCNICO INDUSTRIAL DE SANTA MARIA */
// atribuição de pinos aos motores
int pinMotorEsq = 9;
int pinMotorDir = 5;
// atribuição de pinos aos sensores
int pinSensorEsq = A0;
int pinSensorDir = A1;
// atribuição de variáveis aos valores medidos e calculados
int leituraSensorEsq = 0;
int leituraSensorDir = 0;
int offsetSensores = 0;
int velocidadeMotorDir = 0;
int velocidadeMotorEsq = 0;
void setup() {
// definindo os pinos dos motores como saídas
pinMode (pinMotorDir, OUTPUT);
pinMode (pinMotorEsq, OUTPUT);
// iniciando a serial
Serial.begin(9600);
}
void loop() {
// leitura dos sensores
leituraSensorEsq = analogRead (pinSensorEsq);
leituraSensorDir = analogRead (pinSensorDir);
// comparação dos sensores
offsetSensores = leituraSensorEsq - leituraSensorDir;
offsetSensores = abs (offsetSensores); // módulo da diferença dos sensores
// definição das velocidades
if (leituraSensorDir > 200 || leituraSensorEsq > 200) { //Para evitar que ele ande em superfície branca
if (offsetSensores < 250) { // Para o caso de ambos os sensores estarem sobre a parte preta
velocidadeMotorDir = 255;
velocidadeMotorEsq = velocidadeMotorDir;
}
else {
if (leituraSensorDir > 300) {
velocidadeMotorDir = 255;
velocidadeMotorEsq = 50;
}
else if (leituraSensorEsq > 300) {
velocidadeMotorEsq = 255;
velocidadeMotorDir = 50;
}
}
}
else if(leituraSensorDir < 200 && leituraSensorEsq < 200) {
velocidadeMotorEsq = 0;
velocidadeMotorDir = velocidadeMotorEsq;
};
/* Cálculo por conversão de escalas -- o motor não tem, com
as pilhas, força o suficiente para manter o movimento da roda
quando o valor for muito baixo
velocidadeMotorDir = map (leituraSensorEsq, 0,1000, 20,255);
velocidadeMotorEsq = map (leituraSensorDir, 0,1000, 20,255); */
// impressão
// impressão dos valores medidos para o serial
Serial.print ("SensorEsq = ");
Serial.print (leituraSensorEsq);
Serial.print (" SensorDir = ");
Serial.print (leituraSensorDir);
//soma
Serial.print (" Diferenca Sensores = ");
Serial.println (offsetSensores);
// rodar os motores para testes
// Teste normal
analogWrite (pinMotorDir, velocidadeMotorDir);
analogWrite (pinMotorEsq, velocidadeMotorEsq);
// Ligar e desligar MotorEsq
/*analogWrite (pinMotorEsq,255);
delay (1000);
analogWrite (pinMotorEsq,0);
delay (1000);*/
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment