Ferramentas do usuário

Ferramentas do site


cursos:introrobotica:2019-1:grupo04:tp3.c
#include "controladores.h"
#include "sensores.h"
#include "funcoes.h"
 
int optDir = 15; 
int optEsq = 14;
int estadoDir = 0; 
int estadoEsq = 0;
int mediaOpt = 800;
int mediaBranco = 0;
int mediaPreto = 0;
 
void calibraOptico(){  
  lcd.setCursor(0,0);  
  lcd.print("Calibrando Branco Dir");
  delay(2000);
  for(int i=0;i<20;i++){
    estadoDir = analogRead(optDir);
    mediaBranco = mediaBranco + estadoDir;
    i++;
  }
  mediaBranco = mediaBranco/20;
  Serial.println(mediaBranco);
  lcd.setCursor(0,0);  
  lcd.print("Calibrando Branco Esq");
  delay(2000);
 
  for(int i=0;i<20;i++){
    estadoDir = analogRead(optEsq);
    mediaPreto = mediaPreto + estadoDir;
    i++;
  }
  mediaPreto = mediaPreto/20;
  mediaOpt = (mediaPreto+mediaBranco)/2;
  Serial.println(mediaOpt);
  lcd.setCursor(0,0);  
  lcd.print("Linha          ");
  delay(6000);
 
}
 
void segLinha(){
 
  while(1){
    estadoDir = analogRead(optDir);  //Lê o valor fornecido pelo LDR 
    estadoEsq = analogRead(optEsq);  //Lê o valor fornecido pelo LDR
    motor1->setSpeed(vel1);
    motor2->setSpeed(vel2);
 
    if ((estadoDir<mediaOpt)&&(estadoEsq<mediaOpt)){
        motor1->run(BACKWARD);
        motor2->run(BACKWARD);
        delay(100);
    }
    if ((estadoDir>mediaOpt)&&(estadoEsq<mediaOpt)){
 
      motor1->run(BACKWARD);
      motor2->setSpeed(80);
      motor2->run(FORWARD);
      delay(100);
 
    }
    if ((estadoDir<mediaOpt)&&(estadoEsq>mediaOpt)){
      motor1->setSpeed(50);
      motor1->run(FORWARD);
      motor2->run(BACKWARD);
      delay(100);
    } 
     if ((estadoDir>mediaOpt)&&(estadoEsq>mediaOpt)){
        motor1->run(FORWARD);
        motor2->run(BACKWARD);
        delay(100);
 
    }
  }
}
 
 
void setup() {
  lcd.begin(16, 2);    
  Serial.begin(9600);
  AFMS.begin();
  motor1->setSpeed(vel1);
  motor2->setSpeed(vel2);
  motor1->run(RELEASE);
  motor2->run(RELEASE);
 
  pinMode(RED,OUTPUT);//LED VERMELHO   
  pinMode(GREEN,OUTPUT);//LED VERDE  
  pinMode(BLUE,OUTPUT);//LED AZUL   
  //Inicia a comunicação serial
  pinMode (enc, INPUT); 
 
  digitalWrite(GREEN, LOW);
  digitalWrite(BLUE, LOW);
  digitalWrite(RED, LOW);
  myPID.SetMode(AUTOMATIC);
  myPID2.SetMode(AUTOMATIC);
 
}
 
void loop() {
  int botao;  
  botao = analogRead (0);  //Leitura do valor da porta analógica A0
  lcd.setCursor(0,0);  
  lcd.print("TP3 Charlinho"); 
 
  if (botao < 100) {  
    // ---------------------- BOTAO RIGHT -----------------
    delay (300);
    segLinha();
  }  
  else if (botao < 200) {
    // ---------------------- BOTAO UP -----------------
 
   frente(0.5);
   gira_esq(90);
   frente(0.5);
   gira_esq(135);
   frente(0.5*sqrt(2));
   gira_esq(135);
  }  
  else if (botao < 400){ 
    // -------------------- BOTAO DOWN --------------  
     frente(0.5);
     gira_esq(90);
     frente(0.5);
     gira_esq(90);
     frente(0.5);
     gira_esq(90);
     frente(0.5);
     gira_esq(90);
 
  }  
  else if (botao < 600){ 
    // -------------------- BOTAO LEFT -------------- 
 
   frente(0.5);
   gira_esq(180);
   frente(0.5);
 
  }
  else if (botao < 800){  
    // -------------------- BOTAO SELECT -------------- 
    ldr();
 
    }
  }  
cursos/introrobotica/2019-1/grupo04/tp3.c.txt · Última modificação: por 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki