Advertisement
Guest User

CodeGuds_EQUIPE3

a guest
Nov 9th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "Ultrasonic.h"
  2. #define echoPin 10 //Pino 10 recebe o pulso do echo
  3. #define trigPin 9 //Pino 9 envia o pulso para gerar o echo
  4. #define ESQUERDO 0
  5. #define DIREITO 1
  6.  
  7. int inPin = 2; //pino de entrada no sensor
  8. int valor = 0; //Inteiro que armazena o valor lido
  9. int ultValor;
  10.  
  11. int Motor_D1 = 8;
  12. int Motor_D2 = 7;
  13. int Motor_DV = 6;
  14. int Motor_EV = 5;
  15. int Motor_E2 = 4;
  16. int Motor_E1 = 3;
  17. int ultimoMotorLigado = DIREITO;
  18.  
  19. void alternaMotores();
  20. void stop();
  21.  
  22. //iniciando a função e passando os pinos
  23. Ultrasonic ultrasonic(9,10);
  24.  
  25. int parou = 0;
  26.  
  27. void setup() {
  28.   Serial.begin(9600); //inicializando a porta serial
  29.   pinMode(inPin, INPUT); //colocando a porta 2 como entrada
  30.   pinMode(echoPin, INPUT); // define o pino 10 como entrada (recebe)
  31.   pinMode(trigPin, OUTPUT); // define o pino 9 como saida (envia)
  32.   pinMode(Motor_E1, OUTPUT);
  33.   pinMode(Motor_E2, OUTPUT);
  34.   pinMode(Motor_EV, OUTPUT);
  35.   pinMode(Motor_DV, OUTPUT);
  36.   pinMode(Motor_D2, OUTPUT);
  37.   pinMode(Motor_D1, OUTPUT);
  38. }
  39.  
  40. void loop() {
  41.   //seta o pino 9 com um pulso baixo "LOW" ou desligado ou ainda 0
  42.   digitalWrite(trigPin, LOW);
  43.   // delay de 2 microssegundos
  44.   delayMicroseconds(2);
  45.   //seta o pino 9 com pulso alto "HIGH" ou ligado ou ainda 1
  46.   digitalWrite(trigPin, HIGH);
  47.   //delay de 10 microssegundos
  48.   delayMicroseconds(10);
  49.   //seta o pino 9 com pulso baixo novamente
  50.   digitalWrite(trigPin, LOW);
  51.   // função Ranging, faz a conversão do tempo de
  52.   //resposta do echo em centimetros, e armazena
  53.   //na variavel distancia
  54.   int distancia = (ultrasonic.Ranging(CM));
  55.   Serial.print("Distancia em CM: ");
  56.   Serial.println(distancia);
  57.   delay(30); //espera 1 segundo para fazer a leitura
  58.   ultValor = valor;
  59.   valor = digitalRead(inPin);//realizando a leitura no sensor optico
  60.   if(valor > 50 && ultValor <10) valor = 1;
  61.  
  62.   if (valor == HIGH)
  63.   {
  64.      Serial.println("Branco"); //caso o valor seja alto - cor branca
  65.   }
  66.   else
  67.   {
  68.      Serial.println("Preto"); //caso o valor lido seja baixo - cor preta
  69.   }
  70.   if (valor==HIGH && distancia > 30)
  71.   {
  72.     ///////////////////////////////////////////////////////////////////// E2 e D2 para frente
  73.     Serial.println("FOLLOW THE LINE");
  74.     alternaMotores();
  75.   }
  76.   else if (valor==LOW && ultimoMotorLigado == ESQUERDO && distancia > 30){
  77.      analogWrite(Motor_EV, 70);
  78.      analogWrite(Motor_DV, 118);
  79.      digitalWrite(Motor_E2, HIGH);
  80.      digitalWrite(Motor_E1, LOW);
  81.      digitalWrite(Motor_D2, LOW);
  82.      digitalWrite(Motor_D1, LOW);
  83.      delay(100);
  84.      stop();
  85.   }
  86.   else if (valor==LOW && ultimoMotorLigado == DIREITO && distancia > 30){
  87.      analogWrite(Motor_EV, 70);
  88.      analogWrite(Motor_DV, 118);
  89.      digitalWrite(Motor_E2, LOW);
  90.      digitalWrite(Motor_E1, LOW);
  91.      digitalWrite(Motor_D2, HIGH);
  92.      digitalWrite(Motor_D1, LOW);
  93.      delay(100);
  94.      stop();
  95.   }
  96.   else if (distancia<=30){
  97.      stop();
  98.   }
  99. }
  100.  
  101. void alternaMotores(){
  102.     analogWrite(Motor_EV, 80);
  103.     analogWrite(Motor_DV, 135);
  104.     if(ultimoMotorLigado == ESQUERDO){
  105.       digitalWrite(Motor_E2, LOW);
  106.       digitalWrite(Motor_E1, LOW);
  107.       digitalWrite(Motor_D2, HIGH);
  108.       digitalWrite(Motor_D1, LOW);
  109.       delay(50);
  110.       ultimoMotorLigado = DIREITO;
  111.     }
  112.     else if(ultimoMotorLigado == DIREITO){
  113.       digitalWrite(Motor_E2, HIGH);
  114.       digitalWrite(Motor_E1, LOW);
  115.       digitalWrite(Motor_D2, LOW);
  116.       digitalWrite(Motor_D1, LOW);
  117.       delay(50);
  118.       ultimoMotorLigado = ESQUERDO;
  119.     }
  120. }
  121.  
  122. void stop(){
  123.   digitalWrite(Motor_E2, LOW);
  124.   digitalWrite(Motor_E1, LOW);
  125.   digitalWrite(Motor_D2, LOW);
  126.   digitalWrite(Motor_D1, LOW);
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement