// santoantonio2.c - Criado pelo studio UNO 2.3
// 13 June 2016 1:05:45 pm
#include <uno.h>
// Declaracao das Variaveis
unsigned int Angulo;
unsigned int Distancia;
unsigned int EncDir;
unsigned int EncEsq;
unsigned int Pulsos;
unsigned int Velocidade;
// Prototipos
void LeEncoders(void);
void freio(void);
void retinho(void);
void CurvaEsquerda(void);
void zeraEnc(void);
void CurvaDireita(void);
void EmFrente(void);
//Funcoes do Usuario
void LeEncoders(void)
{
EncEsq = __EncoderGetValue(1);
EncDir = __EncoderGetValue(2);
__delay(5);
}
void freio(void)
{
__motor_curso(__REVERSE);
__delay(30);
__motor_curso(__STOP);
}
void retinho(void)
{
if ((EncEsq > EncDir)) {
__motor(1, 0);
__motor(2, Velocidade);
}
if ((EncEsq < EncDir)) {
__motor(1, Velocidade);
__motor(2, 0);
}
if ((EncEsq == EncDir)) {
__motor(1, Velocidade);
__motor(2, Velocidade);
}
}
void CurvaEsquerda(void)
{
zeraEnc();
// NP=Angulo/ 4,9
Pulsos = (Angulo / 4.9);
__motor(1, (Velocidade * -1));
__motor(2, Velocidade);
while((__EncoderGetValue(2) < Pulsos)) {
while(!(__EncoderGetValue(2) >= Pulsos)) { __delay(10); }
__delay(5);
}
freio();
}
void zeraEnc(void)
{
__SmartSensorCmd(1, 1, 9, 0);
__SmartSensorCmd(1, 2, 9, 0);
EncEsq = 0;
EncDir = 0;
}
void CurvaDireita(void)
{
zeraEnc();
Pulsos = (Angulo / 4.9);
__motor(1, Velocidade);
__motor(2, (Velocidade * -1));
while((__EncoderGetValue(1) < Pulsos)) {
while(!(__EncoderGetValue(1) >= Pulsos)) { __delay(10); }
__delay(5);
}
freio();
}
void EmFrente(void)
{
zeraEnc();
// NP=Disância/ 0,618.em centímetros
Pulsos = (Distancia / 0.618);
while(((EncEsq < Pulsos) || (EncDir < Pulsos))) {
LeEncoders();
retinho();
}
}
//Funcao Principal
void main(void)
{
__inicializa;
__SmartSensorCmd(1, 1, 8, 0);
Velocidade = 1023;
Distancia = 44;
EmFrente();
Velocidade = 1023;
Angulo = 45;
CurvaEsquerda();
Velocidade = 700;
Distancia = 44;
EmFrente();
Velocidade = 1023;
Angulo = 45;
CurvaDireita();
Velocidade = 800;
Distancia = 88;
EmFrente();
Velocidade = 700;
Angulo = 180;
CurvaEsquerda();
while(TRUE) { }
}