Pesquisar neste blog

26/09/2020

Prova 2 de Sinais: 2020/1

 2° avaliação de Sinais - Nota = 85%

1) Obtenha os coeficientes da série de Fourier em tempo discreto para o sinal x[n] dado abaixo. Desenvolver o problema passo a passo.









Resolução:




























2) Para os sinais dados abaixo, obtenha a transformada de Fourrier de tempo discreto diretamente utilizando a definição. Assuma |y|<1. 

Resolução:













3) Considere um sistema LIT descrito pela equação de diferenças abaixo:

y[n]+ 7y[n -1] + 12y[n - 2] = x[n] + 2x[n - 1], determine:













4) Assinale com V(verdadeiro) ou com F(falso) as seguintes afirmações:









A sequência correta das afirmações dadas de cima para baixo, é:

a) (   ) V, V, V, F, F, V

b) (   ) V, F, F, V, F, F

c) (   ) F, F, V, F, F, V

d) (   ) F, F, F, V, F, V

e) (   ) F, V, V, F, F, V

Resolução:

Resposta letra: 




























Lista 5 - Transformada Z






















Resolução:





Lista 3: Transformada Z

Usando a definição de transformada Z, determine a transformada Z e a RDC para cada um dos seguintes sinais:










Resolução:























































Lista 2: Série de Fourier Tempo Discreto

Dado o sinal abaixo, especificamos os coeficientes da série de Fourier de um sinal que é periódico com período 8. Determine o sinal x[n].


Resolução:




































































2) 









Resolução:






















































3)
















Resolução:










































































Série de Fourier















Resolução:

1.c)





















2.a)







































2.c)














3.c)























4)








Sequências periódicas

4) Sejam duas sequencias periódicas de período igual a 5. A sequencia x[n] retorna os coeficientes ak e a sequencia y[n] retorna os coeficientes bk. Sabe -se que a0= a1/3= a2/2= a3/5= a4= 2 e b0= b1= b2/4= b3= b4/6= 3. Os coeficientes da sequencia g[n]= x[n]y[n] retorna os coeficientes ck. Os coeficiente c0 e c4 são respectivamente:

a) 249 e 136

b) 250 e 138

c) 251 e 142

d) 252 e 138

e) 138 e 252

Resolução:






























Resposta letra d

5) Sejam duas sequencias periodicas de periodo igual a 5. A sequencia x[n] retorna os coeficientes ak e a sequencia y[n] retorna os coeficientes bk. Sabe -se que a0= a1/3= a2/2= a3/5= a4= 2 e b0= b1= b2/4= b3= b4/6= 3. Os coeficientes da sequencia g[n]= x[n]y[n] retorna os coeficientes ck. Os coeficiente c1 e c3 são respectivamente:

a) 15 e 9

b) 130 e 180

c) 90 e 150

d) 100 e 140

e) 18 e 30

Resolução:






















































Resposta letra c

19/09/2020

Timer1 com PIC 16F628A

#include <16F628a.h>
#fuses intrc_io,nowdt, nomclr
#use delay(clock = 8MHz)
#use fast_io(a)
#use fast_io(b)
int cont;
int16 timer;//timer1 trabalha com 16 bits

void main(){
   set_tris_a(0x00);
   set_tris_b(0xf0);//1/2 entrada e 1/2 saída
   output_b(0x00);
   SETUP_TIMER_1(T1_EXTERNAL | T1_DIV_BY_2);//pro escale para 2
   SET_TIMER1(0);

   while(TRUE){
      timer = GET_TIMER1();//funcção que captura o timer
      if(timer == 1){
         output_a(0b00000001);
      }
      
      if(timer == 2){
         output_a(0b00000010);
      }
      
      if(timer == 3){
         output_a(0b00000100);
      }
      
      if(timer == 4){
         output_a(0b00001000);
      }
      
      if(timer == 5){
         output_b(0b00010001);
         output_a(0b00000000);
      }
      
      if(timer == 6){
         output_a(0b00000000);
         output_b(0b00000000);
         set_timer1(1);//seta novamente o timer1
      }
      //TODO: User Code
   }

}

Software Proteus 7.6


















Créditos para: Alexandro Lima

17/09/2020

PWM com PIC 16F628A

Código feito em CCS C Compiler

#include <main.h>
#fuses intrc_io, nowdt, nomclr
#use delay(clock = 20MHz)
#use fast_io(a)
#use fast_io(b)
long valor1, valor2;

void main(){
   set_tris_b(0x00);
   valor2 = 2500;
   
   while(TRUE){
   
      for(valor1 = 0; valor1 < 2500; valor1++){
         output_high(pin_b0);//nivel alto no pino b0
         delay_us(valor1);
         output_low(pin_b0);//nivel logico baixo
         delay_us(valor2);
         valor2--;
      }
      
      for(valor1 = 2500; valor1 > 1; valor1--){
         output_high(pin_b0);
         delay_us(valor1);
         output_low(pin_b0);
         delay_us(valor2);
         valor2++;
      }
      
      //TODO: User Code
   }

}





















Créditos para: Alexandro Lima

16/09/2020

PWM com PIC 16F628A

Código feito em CCS C Compiler


#include <16F628a.h>

#fuses intrc_io,nowdt,nomclr//configurando os fuses bits

#use delay(clock = 8M)

#use fast_io(a)

#use fast_io(b)

int valor; 

void main(void){

   set_tris_b(0x00);//todo port b como saída

   setup_ccp1(CCP_PWM);//setando o canal PWM

  //(corresponde pro escale: pode ser 1 ou 16 , carga do registrador que deixar o ciclo em 0 ,ciclo ativo: registrador ccpR1L)

   setup_timer_2(T2_DIV_BY_16,255,1);//função que configura o PWM

   

   while(true){

      for(valor = 0; valor < 255; valor++){

         set_pwm1_duty(valor);

         delay_ms(100);

      }

      

      for(valor = 255; valor > 1; valor--){

         set_pwm1_duty(valor);

         delay_ms(100);

      }

   

   }

}



Motor DC usando PWM com PIC 18F4550


Objetivo: Fazer um motor de corrente contínua que seja controlado sua velocidade.

Código feito em CCS C Compiler

#include <18f4550.h>
#device ADC = 8//configurando o canal analógico em 8 bits
#fuses intrc_io,nowdt,nomclr//configurando os fuses bits do PIC
#use delay(clock = 8MHz)
//diretivas das portas
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)

int canal;
 
void main(void){
   set_tris_c(0x00);//todo port c como saída
   set_tris_a(0xff);//todo port a como entrada
   setup_timer_2(T2_DIV_BY_16, 255, 1);//setando o timer 2
   setup_ccp1(CCP_PWM);//setando o canal PWM
   setup_oscillator(OSC_1MHZ|OSC_INTRC);//Configurando o oscilador interno em 1MHz
   setup_adc_ports(AN0);//setando o canal 0, canal analógico
   setup_adc(ADC_CLOCK_INTERNAL);//setando o clock interno para a conversão ad
   set_adc_channel(0);//função para setar o canal 0
   
   while(true){
      canal = read_adc();//capturando o valor do canal analógico
      delay_ms(50);
      set_pwm1_duty(canal);//coloca ao valor que foi setado
      
      if(input(pin_d0) == true){         
         set_adc_channel(1);
      }
      
      if(input(pin_e2) == true){
         set_adc_channel(0);
      }

   }
}

Software: Proteus versão 7.6


13/09/2020

Timer0 com interrupção usando PIC 16F628A

Código feito em CCS C Compiler


#include <16f628a.h>

#fuses intrc_io,nowdt, nomclr

#use delay(clock = 4MHz)

#use fast_io(a)

#use fast_io(b)

#define use_portb_lcd TRUE//configurando no port b

#include <lcd.c>

int cont, timer;

//diretiva de interrupção do timer 0

#INT_TIMER0


void contador(void){

   lcd_putc("\fINTERRUPCAO \n ATIVADA");

   for(cont = 0; cont < 5; cont++){

      output_low(pin_a0);//nivel baixo no pino a0

      output_high(pin_a1);//nivel alto no pino a1

      delay_ms(500);

      output_low(pin_a1);

      delay_ms(500);

      set_timer0(250);

   }

   

   lcd_putc("\fINTERRUPCAO \n FINALIZADA");

   delay_ms(2000);

   lcd_putc("\fVOLTANDO AO \nPROGRAMA");

   delay_ms(2000);

   lcd_putc("\fAGUARDANDO\NINTERRUPCAO");

   delay_ms(100);

}


void main(void){

   set_tris_a(0xf0);//1/2 como entrada e 1/2 como saída

   set_tris_b(0x00);//port saida

   output_b(0x00);

   ENABLE_INTERRUPTS(GLOBAL);//chave geral da interupcao

   ENABLE_INTERRUPTS(INT_TIMER0);//habilitando a interrupcao

   SETUP_TIMER_0(RTCC_EXT_L_TO_H);//declarando oscilador xnterno e incremento atraves do RA4 , COLOCANDO A BORDA DE DESCIDA PARA SUBIDA 

   SET_TIMER0(250);//setando em 250

   lcd_init();

   lcd_putc("\fAGUARDANDO\nINTERRUPCAO");

   

   

   while(true){

      output_high(pin_a0);

      delay_ms(500);

      output_low(pin_a0);

      delay_ms(500);

      timer = get_timer0() + 6;//captura atraves da função e soma + 6

      lcd_putc("\fAGUARDANDO\nINTERRUPCAO");

      printf(lcd_putc,"  %u", timer);

   }

}







Jogo da Quina com PIC 16F628A

#include <16f628a.h>

#fuses intrc_io,nowdt, nomclr

#use delay(clock = 4MHz)

#use fast_io(a)

#use fast_io(b)

#define use_portb_lcd TRUE

#include <lcd.c>

int cont = 1, timer, num[5];

void main(void){

   set_tris_a(0xff);//todo port a como entrada

   lcd_init();

   setup_timer_0(rtcc_internal|rtcc_div_1);//definindo como oscilador interno e, escale como 1 

   lcd_putc("  QUINA \n");

   delay_ms(200);

   lcd_putc("  \f SORTEANDO:\n");

   delay_ms(500);

   set_timer0(1);

   

   while(true){

      while(cont <= 5){

         timer = GET_TIMER0();

         if(timer > 0 && timer < 81){

            num[cont] = timer;

            printf(lcd_putc,"%u ", num[cont]);

            cont++;

         }

         delay_ms(331);

         

      }

      delay_ms(3000);

      lcd_putc("\f   SORTEANDO:\n");

      cont = 1;

   }

}











Créditos para: Alexandro Lima

Timer usando com PIC 16F628A

Código feito em CCS C Compiler


#include <16f628a.h>

#fuses intrc_io,nowdt, nomclr

#use delay(clock = 4MHz)

#use fast_io(a)

#use fast_io(b)


int cont, timer;


void main(void){

   set_tris_a(0xf);//1/2 como entrada e 1/2 como saída

   set_tris_b(0x00);//port saida

   output_b(0x00);

   SETUP_TIMER_0(RTCC_EXT_L_TO_H);//declarando oscilador xnterno e incremento atraves do RA4 , COLOCANDO A BORDA DE DESCIDA PARA SUBIDA 

   SET_TIMER0(0);

         

   while(true){

      timer = GET_TIMER0();//captura e armazena na variável timer

      if(timer == 5){

         for(cont = 0; cont < 5; cont++){

            output_high(pin_b1);

            delay_ms(500);

            output_low(pin_b1);

            delay_ms(500);

            set_timer0(0);    

         }

      }    

   }

}




10/09/2020

Media Query em HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Media Query</title>
    <style>
        div{
            font-size40px;
            margin20px;
            padding20px;
            background-colorcoral;
            bordersolid 5px;
            displaynone;
        }
        @media (max-width600px){/*largura no máximo 600*/
            /*Se a largura for no máximo 600 px, irá aplicar na classe muito...*/
            .muito-pequeno{displayblock;}
        }
        /* orientação retrato, se a largura for no maior 100*/
        @media (max-width1000px), (orientationlandscape){/*orientation: landscape*/
            .pequeno-retrato{displayblock;}
        }
        /* so vai aparecer se tiver largura minima de 500px */
        @media (min-width500px) and (max-width1000px){
            .intervalo {displayblock;}
        }
    </style>
</head>
<body>
    <div class="muito-pequeno">Muito Pequeno</div>
    <div class="pequeno-retrato">Pequeno ou Retrato</div>
    <div class="intervalo">Intervalo</div>
</body>
</html>