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

N2Conhecer20161206

de C2C00907 |  v1 |  0 |  0 |  495 |  0 
Acesse sua conta para comentar e baixar este programa.

Compartilhado há 1 ano atrás
Alguns direitos reservados
// n2conhecer20161206.c - Criado pelo studio UNO 2.3
// 6 December 2016 1:16:30 pm
 
#include <uno.h>
 
 
// Defines
#define PRETO 15
#define REDUZIDO -550
 
// Declaracao das Variaveis
unsigned int Angulo;
unsigned int Distancia;
int EncDir;
int EncEsq;
unsigned int Graus;
unsigned char Parar;
unsigned char SegIr1;
unsigned char SegIr2;
unsigned char SegIr3;
unsigned char SegIr4;
unsigned char SegIr5;
unsigned int Tempo;
int Velocidade;
 
// Prototipos
void Resgate(void); 
void Reto(void); 
void EmFrente(void); 
void CurvaEsquerda(void); 
void LeEncoders(void); 
void ZeraEncoders(void); 
void DiminuiVel(void); 
void Freio(void); 
void SegueAnalogico(void); 
void CurvaDireita(void); 
void LeSeguidorAnalogico(void); 
void Frente(void); 
void MeiaVoltaLinha(void); 
 
//Funcoes do Usuario
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 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 EmFrente(void) 
{
     ZeraEncoders();
     EncDir = 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 = 650;
         }
         Reto();
     }
 
}
 
void CurvaEsquerda(void) 
{
     __motor(1, REDUZIDO);
     __motor(2, Velocidade);
}
 
void LeEncoders(void) 
{
     EncEsq = __EncoderGetValue(1);
     EncDir = __EncoderGetValue(2);
     __delay(5);
}
 
void ZeraEncoders(void) 
{
     __SmartSensorCmd(1, 1, 9, 0);
     __SmartSensorCmd(1, 2, 9, 0);
     EncEsq = 0;
     EncDir = 0;
}
 
void DiminuiVel(void) 
{
     __SmartSensorCmd(1, 1, 8, 0);
     ZeraEncoders();
     Velocidade = 1023;
     while(TRUE) {
         Reto();
         if ((__UltrasonicGetValueMM(1) < 250)) {
             __motor_curso(__LEFT_ROTATE);
             __delay(1200);
             Freio();
             ZeraEncoders();
         }
     }
 
}
 
void Freio(void) 
{
     __motor_curso(__REVERSE);
     __delay(30);
     __motor_curso(__STOP);
}
 
void SegueAnalogico(void) 
{
     LeSeguidorAnalogico();
     // Ir do meio sobre a linha. Toda vez que Sensor esta sobre a
     // linha preta o valor é menor que 25.
     if (((SegIr2 > PRETO) && ((SegIr3 < PRETO) && (SegIr4 > PRETO)))) {
         // Ir da esquerda sobre a linha
         Velocidade = 1023;
         Frente();
     }
     if ((// Ir da Direita sobre a linha
(SegIr2 < PRETO) && ((SegIr3 < PRETO) && (SegIr4 > PRETO)))) {
         Velocidade = 750;
         CurvaEsquerda();
     }
     if (((SegIr2 < PRETO) && ((SegIr3 > PRETO) && (SegIr4 > PRETO)))) {
         Velocidade = 900;
         CurvaEsquerda();
     }
     if (((SegIr2 > PRETO) && ((SegIr3 < PRETO) && (SegIr4 < PRETO)))) {
         Velocidade = 750;
         CurvaDireita();
     }
     if (((SegIr2 > PRETO) && ((SegIr3 > PRETO) && (SegIr4 < PRETO)))) {
         Velocidade = 900;
         CurvaDireita();
     }
     if (((SegIr2 < PRETO) && ((SegIr3 < PRETO) && (SegIr4 < PRETO)))) {
         Parar = 1;
     }
 
}
 
void CurvaDireita(void) 
{
     __motor(1, Velocidade);
     __motor(2, REDUZIDO);
}
 
void LeSeguidorAnalogico(void) 
{
     SegIr1 = __SeguidorGetAnalog(1, 1);
     SegIr2 = __SeguidorGetAnalog(1, 2);
     SegIr3 = __SeguidorGetAnalog(1, 3);
     SegIr4 = __SeguidorGetAnalog(1, 4);
     SegIr5 = __SeguidorGetAnalog(1, 5);
}
 
void Frente(void) 
{
     __motor(1, Velocidade);
     __motor(2, Velocidade);
}
 
void MeiaVoltaLinha(void) 
{
     __motor_curso(__LEFT_ROTATE);
     __delay(400);
     __motor_curso(__LEFT_ROTATE);
     while(!(__SeguidorGetAnalog(1, 3) < PRETO)) { __delay(10); }
}
 
//Funcao Principal
void main(void)
{
     __inicializa;
     bitset(__TRIS_PWM, __DIGITAL1);
     __PWM1 = 180;
     for (int __i0 = 0; __i0 < 2; ++__i0) {
         while((__analog_in(0) < 500)) {
             SegueAnalogico();
         }
         Freio();
         __PWM1 = 40;
         __delay(1000);
         MeiaVoltaLinha();
         Parar = 0;
         while((Parar == 0)) {
             SegueAnalogico();
         }
         Freio();
         __PWM1 = 180;
         __motor_curso(__BACKWARD);
         __delay(500);
         MeiaVoltaLinha();
         Freio();
     }
 
     while(TRUE) { }
}

Descrição

Resgate

Nenhum Comentário

Download


Entre para Baixar

Favorito de


Ninguém marcou este projeto como favorito ainda.

Projetos de C2C00907


 0    496   3 
 0    506   0 
 0    601   2 
 0    584   0 
 0    473   0