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

ApresentacaoM2 - 01

de LucasVedovatto |  v1 |  0 |  0 |  3965 |  44 
Acesse sua conta para comentar e baixar este programa.

Compartilhado há 10 anos e 6 meses atrás
Alguns direitos reservados
// apresentacaom2 - 01.c - Criado pelo Studio UNO 2.13
// 16 October 2013 9:38:53 am
 
#include <uno.h>
 
// Declaracao das Variaveis
unsigned int LigaDes;
unsigned char dire;
unsigned int distancia;
unsigned char endereco;
unsigned char esqu;
unsigned int garra;
unsigned char lado;
unsigned char meio;
unsigned char passo;
unsigned char programa;
unsigned int tempo;
 
// Prototipos
void NonaSinfonia(void); 
void Tela_01(void); 
void Padrao_seguidor(void); 
void esquerda(void); 
void direita(void); 
void frente(void); 
void sequencia(void); 
void Seguidor_com_obstaculo(void); 
void Gravador_de_percurso(void); 
void obstaculo(void); 
void Seguidor_de_linha(void); 
void Ligado(void); 
void Tela_04(void); 
void Tela_03(void); 
void Tela_02(void); 
void Resgate_objeto(void); 
void tras(void); 
void SensorUltrassom(void); 
void Atualiza_tela_inicial(void); 
 
//Funcoes do Usuario
void NonaSinfonia(void) 
{
     __backlight(__ON);
     __lcd_goto(0x7f, 2);
     __lcd_puts("Nona  Sinfonia");
     __lcd_goto(0xbf, 4);
     __lcd_puts("Beethoven!");
     while(TRUE) {
         sequencia();
         __buzzer(59, 500);
         __delay(10);
         __buzzer(59, 500);
         __delay(200);
         __buzzer(57, 300);
         __delay(10);
         __buzzer(57, 500);
         __delay(400);
         sequencia();
         __buzzer(59, 500);
         __buzzer(57, 500);
         __delay(200);
         __buzzer(55, 300);
         __delay(10);
         __buzzer(55, 500);
         while(!__ENTER_KEY) { __delay(10); }
     }
 
}
 
void Tela_01(void) 
{
     __lcd_goto(0xbf, 1);
     __lcd_puts("     Parado     ");
}
 
void Padrao_seguidor(void) 
{
     esqu = __SeguidorGetDigital(1, 2);
     meio = __SeguidorGetDigital(1, 3);
     dire = __SeguidorGetDigital(1, 4);
     if (((esqu == 255) && ((meio == 0) && (dire == 255)))) {
         __motor_curso(__FORWARD);
     }
     if (((esqu == 0) && ((meio == 255) && (dire == 255)))) {
         __motor_curso(__LEFT_TURN);
         lado = 0;
     }
     if (((esqu == 255) && ((meio == 255) && (dire == 0)))) {
         __motor_curso(__RIGHT_TURN);
         lado = 1;
     }
     if (((esqu == 0) && ((meio == 0) && (dire == 255)))) {
         __motor(1, 900);
         __motor(2, 1023);
         lado = 0;
     }
     if (((esqu == 255) && ((meio == 0) && (dire == 0)))) {
         __motor(1, 1023);
         __motor(2, 900);
         lado = 1;
     }
     if (((esqu == 255) && ((meio == 255) && (dire == 255)))) {
         if ((lado == 0)) {
             __motor_curso(__LEFT_ROTATE);
         }
         else {
             __motor_curso(__RIGHT_ROTATE);
         }
     }
 
}
 
void esquerda(void) 
{
     __motor_curso(__LEFT_ROTATE);
     __delay(750);
     __motor_curso(__STOP);
     eeprom_write(passo, 2);
     passo++;
}
 
void direita(void) 
{
     __motor_curso(__RIGHT_ROTATE);
     __delay(750);
     __motor_curso(__STOP);
     eeprom_write(passo, 3);
     passo++;
}
 
void frente(void) 
{
     __motor_curso(__FORWARD);
     __delay(2000);
     __motor_curso(__STOP);
     eeprom_write(passo, 0);
     passo++;
}
 
void sequencia(void) 
{
     __buzzer(59, 500);
     __delay(10);
     __buzzer(59, 500);
     __buzzer(60, 500);
     __buzzer(62, 500);
     __delay(10);
     __buzzer(62, 500);
     __buzzer(60, 500);
     __buzzer(59, 500);
     __buzzer(57, 500);
     __buzzer(55, 500);
     __delay(10);
     __buzzer(55, 500);
     __buzzer(57, 500);
}
 
void Seguidor_com_obstaculo(void) 
{
     __lcd_goto(0x7f, 3);
     __lcd_puts("Seguidor com");
     __lcd_goto(0xbf, 4);
     __lcd_puts("obstaculo.");
     __SmartSensorCmd(2, 1, 14, 0);
     while(TRUE) {
         if ((__UltrasonicGetValueMM(1) > 250)) {
             Padrao_seguidor();
         }
         else {
             obstaculo();
         }
     }
 
}
 
void Gravador_de_percurso(void) 
{
     while(TRUE) {
         __lcd_clear();
         __backlight(__ON);
         __lcd_goto(0x7f, 3);
         __lcd_puts("Repetindo os");
         __lcd_goto(0xbf, 4);
         __lcd_puts("movimentos");
         passo = 0;
         endereco = 0;
         for (int __i1 = 0; __i1 < 5; ++__i1) {
             if ((eeprom_read(endereco) == 0)) {
                 frente();
             }
             if ((eeprom_read(endereco) == 1)) {
                 tras();
             }
             if ((eeprom_read(endereco) == 2)) {
                 esquerda();
             }
             if ((eeprom_read(endereco) == 3)) {
                 direita();
             }
             endereco++;
         }
         __lcd_clear();
         __lcd_goto(0x7f, 3);
         __lcd_puts("Entre com os");
         __lcd_goto(0xbf, 4);
         __lcd_puts("5 comandos");
         passo = 0;
         while(((passo < 5) && !(__ENTER_KEY))) {
             if (__UP_KEY) {
                 frente();
             }
             if (__BOTTOM_KEY) {
                 tras();
             }
             if (__LEFT_KEY) {
                 esquerda();
             }
             if (__RIGHT_KEY) {
                 direita();
             }
         }
         __lcd_clear();
         __lcd_goto(0x7f, 2);
         __lcd_puts("Clique <enter>");
         __lcd_goto(0xbf, 3);
         __lcd_puts("para repetir");
         while(!__ENTER_KEY) { __delay(10); }
         __delay_us(50); while (__ENTER_KEY) { }; __delay_us(50);
     }
 
}
 
void obstaculo(void) 
{
     __motor_curso(__RIGHT_ROTATE);
     __delay(300);
     __motor_curso(__FORWARD);
     __delay(1000);
     __motor_curso(__LEFT_ROTATE);
     __delay(300);
     __motor_curso(__FORWARD);
     __delay(1500);
     __motor_curso(__LEFT_TURN);
     __delay(500);
     __motor_curso(__FORWARD);
     while(!!(__SeguidorGetDigital(1, 2))) { __delay(10); }
}
 
void Seguidor_de_linha(void) 
{
     __lcd_goto(0x7f, 3);
     __lcd_puts("Seguidor  de");
     __lcd_goto(0xbf, 3);
     __lcd_puts("linha padrao");
     __SmartSensorCmd(2, 1, 14, 0);
     while(TRUE) {
         Padrao_seguidor();
     }
 
}
 
void Ligado(void) 
{
     __motor_curso(__FORWARD);
     if ((__analog_in(0) > garra)) {
         tempo = __timer_sistema;
         __motor_curso(__BACKWARD);
         __delay(50);
         __motor_curso(__STOP);
         if ((tempo < 750)) {
             tempo = 0;
         }
         else {
             tempo = (tempo - 750);
         }
         Tela_03();
         __delay(500);
         bitset(__TRIS_PWM, __DIGITAL1);
         __PWM1 = 50;
         __delay(1000);
         __motor_curso(__RIGHT_ROTATE);
         __delay(1000);
         __motor_curso(__FORWARD);
         __delay(tempo);
         __motor_curso(__STOP);
         __delay(500);
         __PWM1 = 180;
         __delay(1000);
         bitclr(__TRIS_PWM, __DIGITAL1);
         Tela_04();
         __motor_curso(__BACKWARD);
         __delay(750);
         __motor_curso(__STOP);
         __beep();
         LigaDes = 0;
         Tela_01();
     }
 
}
 
void Tela_04(void) 
{
     __lcd_goto(0xbf, 1);
     __lcd_puts(" Pegue, Humano! ");
}
 
void Tela_03(void) 
{
     __lcd_goto(0xbf, 1);
     __lcd_puts("   Encontrado   ");
}
 
void Tela_02(void) 
{
     __lcd_goto(0xbf, 1);
     __lcd_puts("  Em andamento  ");
}
 
void Resgate_objeto(void) 
{
     __backlight(__ON);
     __lcd_goto(0x7f, 5);
     __lcd_puts("Resgate!");
     Tela_01();
     bitset(__TRIS_PWM, __DIGITAL1);
     __PWM1 = 180;
     __delay(1000);
     bitclr(__TRIS_PWM, __DIGITAL1);
     garra = (__analog_in(0) + 30);
     LigaDes = 0;
     while(TRUE) {
         if ((LigaDes == 1)) {
             Ligado();
         }
         else {
             __motor_curso(__STOP);
         }
         if (__ENTER_KEY) {
             if ((LigaDes == 0)) {
                 LigaDes = 1;
                 Tela_02();
             }
             else {
                 LigaDes = 0;
                 Tela_01();
             }
             __delay_us(50); while (__ENTER_KEY) { }; __delay_us(50);
             if ((LigaDes == 1)) {
                 __timer_sistema = 0;
             }
         }
     }
 
}
 
void tras(void) 
{
     __motor_curso(__BACKWARD);
     __delay(2000);
     __motor_curso(__STOP);
     eeprom_write(passo, 1);
     passo++;
}
 
void SensorUltrassom(void) 
{
     __backlight(__ON);
     __lcd_goto(0x7f, 1);
     __lcd_puts("Sensor ultrassom");
     __lcd_goto(0xbf, 1);
     __lcd_puts("Simulacao  carro");
     while(TRUE) {
         distancia = __UltrasonicGetValueMM(1);
         if ((distancia < 2000)) {
             __buzzer(72, (distancia / 3));
             __delay((distancia / 3));
         }
     }
 
}
 
void Atualiza_tela_inicial(void) 
{
     if ((programa == 0)) {
         __lcd_goto(0xbf, 1);
         __lcd_puts(" Resgata objeto ");
     }
     if ((programa == 1)) {
         __lcd_goto(0xbf, 1);
         __lcd_puts("Segue c/ obstac.");
     }
     if ((programa == 2)) {
         __lcd_goto(0xbf, 1);
         __lcd_puts(" Grava percurso ");
     }
     if ((programa == 3)) {
         __lcd_goto(0xbf, 1);
         __lcd_puts("  Segue  linha  ");
     }
     if ((programa == 4)) {
         __lcd_goto(0xbf, 1);
         __lcd_puts(" Nona  Sinfonia ");
     }
     if ((programa == 5)) {
         __lcd_goto(0xbf, 1);
         __lcd_puts("Sensor Ultrassom");
     }
 
}
 
//Funcao Principal
void main(void)
{
     __inicializa;
     programa = 0;
     __backlight(__ON);
     __lcd_goto(0x7f, 1);
     __lcd_puts("Escolha o prog.:");
     Atualiza_tela_inicial();
     while(!(__ENTER_KEY)) {
         if (__BOTTOM_KEY) {
             if ((programa < 5)) {
                 programa++;
             }
             else {
                 programa = 0;
             }
             Atualiza_tela_inicial();
             __delay_us(50); while (__BOTTOM_KEY) { }; __delay_us(50);
         }
         if (__UP_KEY) {
             if ((programa > 0)) {
                 programa--;
             }
             else {
                 programa = 5;
             }
             Atualiza_tela_inicial();
             __delay_us(50); while (__UP_KEY) { }; __delay_us(50);
         }
     }
     __delay_us(50); while (__ENTER_KEY) { }; __delay_us(50);
     __lcd_clear();
     if ((programa == 0)) {
         Resgate_objeto();
     }
     if ((programa == 1)) {
         Seguidor_com_obstaculo();
     }
     if ((programa == 2)) {
         Gravador_de_percurso();
     }
     if ((programa == 3)) {
         Seguidor_de_linha();
     }
     if ((programa == 4)) {
         NonaSinfonia();
     }
     if ((programa == 5)) {
         SensorUltrassom();
     }
 
     while(TRUE) { }
}

Descrição

Este programa inicia com um menu onde o usuário escolhe um dos seis programas à ser executado. Entre os programas temos: uma simulação de resgate, um seguidor de linha que desvia de obstáculos, um gravador de percurso (repete cinco comandos gravados pelo usuário), um seguidor de linha comum (segue uma linha não reflexiva sobre uma pista reflexiva - exemplo: pista branca com linha preta), um programa que toca a nona sinfonia e outro que simula um sensor de estacionamento através do sensor ultrassom.
Precisa: 01 sensor seguidor Smart UNO; 01 sensor ultrassônico Smart UNO; 01 sensor tipo barreira infravermelha;

Nenhum Comentário

Download


Entre para Baixar

Favorito de


Ninguém marcou este projeto como favorito ainda.

Projetos de LucasVedovatto


 1    2269   56 
 1    2472   15 
 0    3499   9 
 1    3207   80 
 0    3154   7