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 - 02

de LucasVedovatto |  v1 |  1 |  0 |  4250 |  52 
Acesse sua conta para comentar e baixar este programa.

Compartilhado há 10 anos e 6 meses atrás
Alguns direitos reservados
// apresentacaom2 - 02.c - Criado pelo Studio UNO 2.13
// 16 October 2013 10:21:28 am
 
#include <uno.h>
 
// Declaracao das Variaveis
unsigned int LigaDes;
unsigned char angulo;
unsigned char endereco;
unsigned int garra;
unsigned char passo;
unsigned char programa;
unsigned int tempo;
 
// Prototipos
void Tela_01(void); 
void frente(void); 
void sequencia(void); 
void tras(void); 
void esquerda(void); 
void Tela_04(void); 
void Atualiza_tela_inicial(void); 
void Resgate_objeto(void); 
void Ligado(void); 
void Tela_02(void); 
void direita(void); 
void Apres_Garra(void); 
void AtualizaGarra(void); 
void Gravador_de_percurso(void); 
void Tela_05(void); 
void NonaSinfonia(void); 
void Tela_03(void); 
 
//Funcoes do Usuario
void Tela_01(void) 
{
     __lcd_goto(0xbf, 1);
     __lcd_puts("     Parado     ");
}
 
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 tras(void) 
{
     __motor_curso(__BACKWARD);
     __delay(2000);
     __motor_curso(__STOP);
     eeprom_write(passo, 1);
     passo++;
}
 
void esquerda(void) 
{
     __motor_curso(__LEFT_ROTATE);
     __delay(750);
     __motor_curso(__STOP);
     eeprom_write(passo, 2);
     passo++;
}
 
void Tela_04(void) 
{
     __lcd_goto(0xbf, 1);
     __lcd_puts(" Pegue, Humano! ");
}
 
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(" Grava percurso ");
     }
     if ((programa == 2)) {
         __lcd_goto(0xbf, 1);
         __lcd_puts(" Nona  Sinfonia ");
     }
     if ((programa == 3)) {
         __lcd_goto(0xbf, 1);
         __lcd_puts("     Garra      ");
     }
 
}
 
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 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_02(void) 
{
     __lcd_goto(0xbf, 1);
     __lcd_puts("  Em andamento  ");
}
 
void direita(void) 
{
     __motor_curso(__RIGHT_ROTATE);
     __delay(750);
     __motor_curso(__STOP);
     eeprom_write(passo, 3);
     passo++;
}
 
void Apres_Garra(void) 
{
     __backlight(__ON);
     __lcd_goto(0x7f, 6);
     __lcd_puts("Garra!");
     __lcd_goto(0xbf, 3);
     __lcd_puts("Angulo:");
     angulo = 180;
     __lcd_goto(0xbf, 11);
     __lcd_puts("%c", angulo);
     bitset(__TRIS_PWM, __DIGITAL1);
     __PWM1 = 180;
     __delay(1000);
     while(TRUE) {
         while((__UP_KEY && (angulo < 180))) {
             angulo++;
             AtualizaGarra();
         }
         while((__BOTTOM_KEY && (angulo > 15))) {
             angulo--;
             AtualizaGarra();
         }
         while(__LEFT_KEY) {
             angulo = 15;
             AtualizaGarra();
         }
         while(__RIGHT_KEY) {
             angulo = 180;
             AtualizaGarra();
         }
         bitset(__TRIS_PWM, __DIGITAL1);
         __PWM1 = angulo;
     }
 
}
 
void AtualizaGarra(void) 
{
     bitclr(__TRIS_PWM, __DIGITAL1);
     __lcd_goto(0xbf, 11);
     __lcd_puts("%c", angulo);
}
 
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 Tela_05(void) 
{
     __lcd_goto(0xbf, 6);
     __lcd_puts("Garra");
}
 
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_03(void) 
{
     __lcd_goto(0xbf, 1);
     __lcd_puts("   Encontrado   ");
}
 
//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 < 3)) {
                 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 = 3;
             }
             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)) {
         Gravador_de_percurso();
     }
     if ((programa == 2)) {
         NonaSinfonia();
     }
     if ((programa == 3)) {
         Apres_Garra();
     }
 
     while(TRUE) { }
}

Descrição

Este programa inicia com um menu onde o usuário escolhe um dos quatro programas à ser executado. Entre os programas temos: uma simulação de resgate, um gravador de percurso (repete cinco comandos gravados pelo usuário), um programa que toca a nona sinfonia e outro que controla a garra através de comandos via teclado.
Precisa: 01 sensor tipo barreira infravermelha (para o programa de resgate);

Nenhum Comentário

Download


Entre para Baixar

Favorito de


Projetos de LucasVedovatto


 0    2496   7 
 0    3152   7 
 0    3963   44 
 1    2471   15 
 1    3207   80