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
