// n2conhecer2016.c - Criado pelo studio UNO 2.3
// 2 August 2016 1:29:36 pm
#include <uno.h>
// Declaracao das Variaveis
unsigned int Distancia;
int EncDir;
int EncEsq;
unsigned int Tempo;
int Velocidade;
// Prototipos
void EmFrente(void);
void freio(void);
void ZeraEncoders(void);
void Resgate(void);
void LeEncoders(void);
void Reto(void);
void RetornoUltraSom(void);
//Funcoes do Usuario
void EmFrente(void)
{
ZeraEncoders();
Velocidade = 0;
while(TRUE) {
if (__ENTER_KEY) {
Velocidade = 0;
}
if (__UP_KEY) {
Velocidade = 1023;
}
if (__LEFT_KEY) {
Velocidade = 899;
}
if (__RIGHT_KEY) {
Velocidade = 775;
}
if (__BOTTOM_KEY) {
Velocidade = 651;
}
Reto();
}
}
void freio(void)
{
__motor_curso(__REVERSE);
__delay(30);
__motor_curso(__STOP);
}
void ZeraEncoders(void)
{
__SmartSensorCmd(1, 1, 9, 0);
__SmartSensorCmd(1, 2, 9, 0);
EncEsq = 0;
EncDir = 0;
}
void Resgate(void)
{
bitset(__TRIS_PWM, __DIGITAL1);
__PWM1 = 180;
__motor_curso(__FORWARD);
__timer_sistema = 0;
while(!(__analog_in(0) > 150)) { __delay(10); }
Tempo = __timer_sistema;
freio();
__PWM1 = 40;
__motor_curso(__BACKWARD);
__delay(Tempo);
freio();
__PWM1 = 180;
}
void LeEncoders(void)
{
EncEsq = __EncoderGetValue(1);
EncDir = __EncoderGetValue(2);
__delay(5);
}
void Reto(void)
{
LeEncoders();
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 RetornoUltraSom(void)
{
__SmartSensorCmd(1, 1, 8, 0);
ZeraEncoders();
Velocidade = 1023;
while(TRUE) {
Reto();
if ((__UltrasonicGetValueMM(1) < 200)) {
__motor_curso(__RIGHT_ROTATE);
__delay(900);
freio();
ZeraEncoders();
}
}
}
//Funcao Principal
void main(void)
{
__inicializa;
while(TRUE) {
Distancia = __UltrasonicGetValueMM(1);
if ((Distancia < 2000)) {
__buzzer(72, (Distancia / 3));
__delay((Distancia / 3));
}
}
while(TRUE) { }
}