-
-
Save arthurbenemann/95ed56c2a2ef7cee142d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* Primeiro Teste do Seguidor de Linha | |
| João Pedro Scherer Cipriani | |
| Equipe GaudérioBotz | |
| COLÉGIO TÉCNICO INDUSTRIAL DE SANTA MARIA */ | |
| const int V_MAX = 255; | |
| const int V_LENTA = 255; | |
| // 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 | |
| calculaOffset(offsetSensores, leituraSensorEsq, leituraSensorDir); | |
| // 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 = V_MAX; | |
| velocidadeMotorEsq = V_MAX; | |
| } else { | |
| if (leituraSensorDir > 300) { | |
| velocidadeMotorDir = V_MAX; | |
| velocidadeMotorEsq = V_LENTA; | |
| } else if (leituraSensorEsq > 300) { | |
| velocidadeMotorEsq = V_MAX; | |
| velocidadeMotorDir = V_LENTA; | |
| } | |
| } | |
| } else if (leituraSensorDir < 200 && leituraSensorEsq < 200) { | |
| velocidadeMotorEsq = 0; | |
| velocidadeMotorDir = velocidadeMotorEsq; | |
| }; | |
| imprimeValoresViaSerial(leituraSensorEsq, leituraSensorDir, offsetSensores); | |
| // Teste normal | |
| analogWrite(pinMotorDir, velocidadeMotorDir); | |
| analogWrite(pinMotorEsq, velocidadeMotorEsq); | |
| } | |
| void calculaOffset(int* offsetSensores, int* leituraSensorEsq, | |
| int* leituraSensorDir) { | |
| // comparação dos sensores | |
| offsetSensores = leituraSensorEsq - leituraSensorDir; | |
| offsetSensores = abs(offsetSensores); // módulo da diferença dos sensores | |
| } | |
| void imprimeValoresViaSerial(int leituraSensorEsq, int leituraSensorDir, | |
| int offsetSensores) { | |
| Serial.print("SensorEsq = "); | |
| Serial.print(leituraSensorEsq); | |
| Serial.print(" SensorDir = "); | |
| Serial.print(leituraSensorDir); | |
| Serial.print(" Diferenca Sensores = "); | |
| Serial.println(offsetSensores); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment