Nos informe porque este programa é inadequado. Por favor, não envie várias vezes.

Razão
Mensagem

Enviar    Cancelar

  • Use o bom senso
  • Seja educado. Trate os outros como você gostaria de ser tratado
  • Você só pode usar até 3.000 caracteres por comentário
  • Você não pode comentar o mesmo programa dentro do período de 60 segundos
  • Você não pode postar o mesmo comentário em vários programas.
  • Existe um limite de 100 comentários por usuário no período de 24 horas.

Fechar

M3-localizando objeto

de rbaronio |  v2 |  1 |  0 |  2553 |  21 
Acesse sua conta para comentar e baixar este programa.

Compartilhado há 10 anos atrás - Última modificação em 08/10/2014
Alguns direitos reservados
// m3-localizando objeto.c - Criado pelo studio UNO 2.3
// 8 October 2014 6:42:55 pm
 
#include <uno.h>
 
 
// Declaracao das Variaveis
unsigned char angulo;
unsigned char auxiliar;
unsigned char direita;
unsigned int distancia;
unsigned char esquerda;
 
// Prototipos
void resgate(void); 
void busca(void); 
void frente(void); 
void giro(void); 
void varredura(void); 
 
//Funcoes do Usuario
void resgate(void) 
{
     while((__analog_in(0) < 880)) {
         frente();
     }
     __motor_curso(__STOP);
     __PWM0 = 40;
     __delay(500);
     __motor_curso(__RIGHT_ROTATE);
     __SmartSensorCmd(1, 1, 9, 0);
     __SmartSensorCmd(1, 2, 9, 0);
     while((__EncoderGetValue(1) < (180 / 4.2))) {
         while(!(__EncoderGetValue(1) >= (180 / 4.2))) { __delay(10); }
     }
     while(!(__ENTER_KEY)) {
         frente();
     }
     __motor_curso(__STOP);
     __beep();
     __PWM0 = 180;
}
 
void busca(void) 
{
     distancia = __UltrasonicGetValueMM(1);
     while(((distancia > 500) || (distancia < 100))) {
         distancia = __UltrasonicGetValueMM(1);
         varredura();
     }
     __PWM1 = angulo;
}
 
void frente(void) 
{
     __SmartSensorCmd(1, 1, 9, 0);
     __SmartSensorCmd(1, 2, 9, 0);
     esquerda = __EncoderGetValue(1);
     direita = __EncoderGetValue(2);
     if ((esquerda == direita)) {
         __motor_curso(__FORWARD);
     }
     if ((esquerda > direita)) {
         __motor_curso(__LEFT_TURN);
     }
     if ((esquerda < direita)) {
         __motor_curso(__RIGHT_TURN);
     }
 
}
 
void giro(void) 
{
     __SmartSensorCmd(1, 1, 9, 0);
     __SmartSensorCmd(1, 2, 9, 0);
     if ((angulo < 90)) {
         __motor_curso(__RIGHT_ROTATE);
         while((__EncoderGetValue(1) < ((90 - angulo) / 4.2))) {
             while(!(__EncoderGetValue(1) >= ((90 - angulo) / 4.2))) { __delay(10); }
         }
     }
     else {
         __motor_curso(__LEFT_ROTATE);
         while((__EncoderGetValue(2) < ((angulo - 90) / 4.2))) {
             while(!(__EncoderGetValue(2) >= ((angulo - 90) / 4.2))) { __delay(10); }
         }
     }
     __motor_curso(__STOP);
     __PWM1 = 90;
}
 
void varredura(void) 
{
     while((auxiliar < 180)) {
         auxiliar += 5;
         if ((angulo == 90)) {
             __PWM1 = auxiliar;
             __delay(55);
         }
         distancia = __UltrasonicGetValueMM(1);
         if (((distancia < 500) && (distancia > 100))) {
             angulo = auxiliar;
             __motor_curso(__STOP);
             auxiliar = 180;
         }
     }
     while((auxiliar > 1)) {
         auxiliar -= 5;
         if ((angulo == 90)) {
             __PWM1 = auxiliar;
             __delay(55);
         }
         distancia = __UltrasonicGetValueMM(1);
         if (((distancia < 500) && (distancia > 100))) {
             angulo = auxiliar;
             __motor_curso(__STOP);
             auxiliar = 1;
         }
     }
 
}
 
//Funcao Principal
void main(void)
{
     __inicializa;
     __SmartSensorCmd(1, 2, 7, 0);
     __SmartSensorCmd(1, 1, 8, 0);
     auxiliar = 1;
     angulo = 90;
     bitset(__TRIS_PWM, __DIGITAL0);
     bitset(__TRIS_PWM, __DIGITAL1);
     bitset(__TRIS_PWM, __DIGITAL2);
     __PWM1 = auxiliar;
     __PWM2 = 5;
     __delay(500);
     frente();
     busca();
     __delay(300);
     giro();
     __PWM0 = 180;
     __delay(500);
     resgate();
     while(TRUE) { }
}

Descrição

programa que realiza uma busca de um objeto, e quando este estiver entre 10cm e 50cm, o robo gira na direção do objeto, e faz o seu resgate. (não esquecer de alterar os parametros para o seu robô)

Nenhum Comentário

Download


Entre para Baixar

Favorito de


Projetos de rbaronio


 1    2243   4 
 0    2541   9 
 0    3091   20 
 0    2597   21