Eletrônica Silveira
Olá, Seja Bem-Vindo ao Fórum Eletrônica Silveira!!!!
Para você poder ver os mais variados Projetos do nosso Fórum, você precisa fazer o cadastro!

Depois de se Cadastrar, não se esqueça de ler as regras do fórum!

http://eletronicasilveira.forumeiros.com/t3-regras-do-forum#3


Administrador do Fórum,
Rafael Silveira
HOMENAGEM

Na vida tudo passa tudo acontece mas alguém igual a você a gente jamais esquece




★ 22 de novembro de 1991

† 12 de março de 2016

Nosso eterno amigo, administrador e fundador deste fórum
Quem está conectado
35 usuários online :: 10 usuários cadastrados, Nenhum Invisível e 25 Visitantes :: 2 Motores de busca

AUDIO, fandnas, Iba, joelciodias, maheleno, manuel lopes rodrigues, Paulo plima, phissico, Vidal alves, willychigo

[ Ver toda a lista ]


O recorde de usuários online foi de 264 em Seg 18 Mar 2013 - 11:54
Últimos assuntos
CURSOS ONLINE VIP
Top dos mais postadores
Rafael Silveira (7816)
 
Caca Silva (6017)
 
renatoscp (3877)
 
CMeletronica (3209)
 
michel chagas (2791)
 
Railson (2119)
 
alexsandro rodrigues de a (1813)
 
naldo santos (1599)
 
ablacon64 (1222)
 
gilvantexas (1061)
 

Medidor de Velocidade

Publicidade

Preciso de uma ajuda, barra de progresso em display 16x2 (Analisador de Spectro)

Ir em baixo

Preciso de uma ajuda, barra de progresso em display 16x2 (Analisador de Spectro)

Mensagem por Caca Silva em Qui 25 Jan 2018 - 21:30

Pessoal boa noite. Meu problema é o seguinte cismei de criar um analisador de spectro como parte de um outro projeto, pra isso usarei um display alfanumérico de 16x2 e um microcontrolador pic16F877a. Para captar o áudio usei os canais analógicos AN0 e AN1 para ser R e L do analisador. Para isso criei duas variáveis do tipo int para que ambas armazenem o valor de ADC_read 0 e 1.
Até aí, moleza. Criei um caractere customizado com tudo "cheio" para o display. No display na linha de cima escrevi já de início a letra L e um traço (L-) e na linha de baixo a mesma coisa mudando somente o L para (R-). Criei uma função que chamei de void tela, nela dividi as variáveis de contagem dos ADC_read de 10 bits em 14 partes e atribui um valor da variável pra cada parte assim quando a variável atinge um certo valor usando customchar eu acendo em cada coluna do display o caractere criado até chegar ao valor de 1023 (10 bits) e chegar ao último caractere do display. Até aí também tudo certo.



A questão é como faço para limpar os caracteres do display quando diminuir o sinal analógico? Ele acende até o último caractere mas ele permanece aceso mesmo que o sinal em ADC diminua, fiz de tudo pra apagar tentei vários comandos mas sem sucesso, alguém tem alguma ideia?
Estou usando o Mikroc.

_________________
avatar
Caca Silva
ADMINISTRADOR
ADMINISTRADOR

Mensagens : 6017
Data de inscrição : 30/01/2011
Idade : 38
Localização : Ritápolis MG

Voltar ao Topo Ir em baixo

Re: Preciso de uma ajuda, barra de progresso em display 16x2 (Analisador de Spectro)

Mensagem por Caca Silva em Sab 27 Jan 2018 - 11:36

Up

_________________
avatar
Caca Silva
ADMINISTRADOR
ADMINISTRADOR

Mensagens : 6017
Data de inscrição : 30/01/2011
Idade : 38
Localização : Ritápolis MG

Voltar ao Topo Ir em baixo

Re: Preciso de uma ajuda, barra de progresso em display 16x2 (Analisador de Spectro)

Mensagem por Dierson Silva em Seg 29 Jan 2018 - 20:27

Basta colocar para escrever um carácter em branco toda vez que diminuir, para ajudar melhor só com o código.
avatar
Dierson Silva
Nível 2
Nível 2

Mensagens : 103
Data de inscrição : 04/02/2014
Idade : 30
Localização : Recife

Voltar ao Topo Ir em baixo

Re: Preciso de uma ajuda, barra de progresso em display 16x2 (Analisador de Spectro)

Mensagem por Caca Silva em Dom 4 Fev 2018 - 13:49

Vou tentar

_________________
avatar
Caca Silva
ADMINISTRADOR
ADMINISTRADOR

Mensagens : 6017
Data de inscrição : 30/01/2011
Idade : 38
Localização : Ritápolis MG

Voltar ao Topo Ir em baixo

Re: Preciso de uma ajuda, barra de progresso em display 16x2 (Analisador de Spectro)

Mensagem por Caca Silva em Dom 4 Fev 2018 - 13:54

O código é esse só que apaguei as tentativas de tentar contornar o problema

Código:
/********************************************************************************
 Analisador de Spectro com o 16F877a
 Criado por Cacá Silva 26/12/2017 as 16:24
 
 *********************************************************************************/




//Configura a saída dos Pinos do LCD.
sbit LCD_RS at RD1_bit;
sbit LCD_EN at RD0_bit;
sbit LCD_D7 at RD7_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D4 at RD4_bit;

//Configura a direção dos pinos do LCD.
sbit LCD_RS_Direction at TRISD1_bit;
sbit LCD_EN_Direction at TRISD0_bit;
sbit LCD_D7_Direction at TRISD7_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D4_Direction at TRISD4_bit;


int valor1, valor2;
const char character[] = {31,31,31,31,31,31,31,0};




void CustomChar(char pos_row, char pos_char);
void tela();

void main()
{
CMCON = 0x07;
TRISA = 0xFF;
TRISC = 0x00;
lcd_Init();
lcd_cmd(_LCD_CURSOR_OFF);
lcd_out(1,5,"INICIANDO");
delay_ms(1000);
lcd_cmd(_LCD_CLEAR);


            while(1)
          {
            valor1 = ADC_read(0);
            valor2 = ADC_read(1);
            tela();
          }
}




void CustomChar(char pos_row, char pos_char) {
  char i;
    Lcd_Cmd(64);
    for (i = 0; i<=7; i++) Lcd_Chr_CP(character[i]);
    Lcd_Cmd(_LCD_RETURN_HOME);
    Lcd_Chr(pos_row, pos_char, 0);
}

  void tela()
            {
            lcd_out(1,1, "R-");
            if(valor1>=30)  CustomChar(1,3 );
            if(valor1>=70)  CustomChar(1,4 );
            if(valor1>=130) CustomChar(1,5 );
            if(valor1>=220) CustomChar(1,6 );
            if(valor1>=320) CustomChar(1,7 );
            if(valor1>=400) CustomChar(1,8 );
            if(valor1>=580) CustomChar(1,9 );
            if(valor1>=640) CustomChar(1,10);
            if(valor1>=700) CustomChar(1,11);
            if(valor1>=780) CustomChar(1,12);
            if(valor1>=850) CustomChar(1,13);
            if(valor1>=910) CustomChar(1,14);
            if(valor1>=980) CustomChar(1,15);
            if(valor1>=1000)CustomChar(1,16);


            lcd_out(2,1, "L-");
            if(valor2>=30)  CustomChar(2,3);
            if(valor2>=70)  CustomChar(2,4);
            if(valor2>=130)  CustomChar(2,5);
            if(valor2>=220)  CustomChar(2,6);
            if(valor2>=320)  CustomChar(2,7);
            if(valor2>=400)  CustomChar(2,8);
            if(valor2>=580)  CustomChar(2,9);
            if(valor2>=640)  CustomChar(2,10);
            if(valor2>=700)  CustomChar(2,11);
            if(valor2>=780)  CustomChar(2,12);
            if(valor2>=850)  CustomChar(2,13);
            if(valor2>=910)  CustomChar(2,14);
            if(valor2>=980)  CustomChar(2,15);
            if(valor2>=1000) CustomChar(2,16);
            }

_________________
avatar
Caca Silva
ADMINISTRADOR
ADMINISTRADOR

Mensagens : 6017
Data de inscrição : 30/01/2011
Idade : 38
Localização : Ritápolis MG

Voltar ao Topo Ir em baixo

Re: Preciso de uma ajuda, barra de progresso em display 16x2 (Analisador de Spectro)

Mensagem por Dierson Silva em Qui 15 Fev 2018 - 21:54

Cara desculpe a demora, não sei se você já resolveu seu problema. Basta colocar um else em cada if para escrever um caractere em branco.

Você só está colocando para escrever e não está apagando nada.

if(valor2>=30) CustomChar(2,3);
else caractere(2,3);
avatar
Dierson Silva
Nível 2
Nível 2

Mensagens : 103
Data de inscrição : 04/02/2014
Idade : 30
Localização : Recife

Voltar ao Topo Ir em baixo

Re: Preciso de uma ajuda, barra de progresso em display 16x2 (Analisador de Spectro)

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum