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
31 usuários online :: 6 usuários cadastrados, Nenhum Invisível e 25 Visitantes :: 2 Motores de busca

Afonsovb, ccorlando, israel eletronicax, orizons2009, prefosor, RENATO ARAÚJO

[ Ver toda a lista ]


O recorde de usuários online foi de 264 em Seg 18 Mar 2013 - 11:54
Últimos assuntos
» DEBUNKER DIAMOND X2
Ontem à(s) 12:17 por Rafael Duarte

» FONTE SIMÉTRICA SEM CI - 280W - PROTEÇÃO CONTRA CURTO
Sab 22 Set 2018 - 18:15 por lgeorg12

» FONTE CHAVEADA 1000W EP1000
Sex 21 Set 2018 - 22:35 por Corroul

» AMPLIFICADOR MEX 5.0 H CLASS POR MARIO MOTA
Sex 21 Set 2018 - 19:13 por djanderson

» Layout isolador óptico de audio
Qui 20 Set 2018 - 18:51 por Dierson Silva

» outro detector famozão TGSL(Tesoro Golden Sabre-Light)
Qua 19 Set 2018 - 18:16 por antonio fernando santos

» esquema studio r z7/ z8
Qua 19 Set 2018 - 6:30 por Rudnai Rodrigues

» AMPLIFICADOR ONEAL OP7000
Ter 18 Set 2018 - 17:02 por alanjb27

» Novo Layout Fonte Auto Oscilante 280W
Ter 18 Set 2018 - 16:44 por phissico

» PI POLONES TUDO NORMAL MAIS NÂO DETECTA, ME AJUDEM
Ter 18 Set 2018 - 10:11 por lorentino bonafe

» Fonte chaveada compacta IR2153D - 10 x 10 cm
Ter 18 Set 2018 - 0:49 por microbit

» amplificador Machine 1.8
Seg 17 Set 2018 - 20:26 por power-10kv

» Luminárias LED
Seg 17 Set 2018 - 14:34 por power-10kv

» YIROSHI super driver 1500w
Seg 17 Set 2018 - 0:21 por matos nascimento

» Blog
Dom 16 Set 2018 - 20:02 por Cursos Online Vip

CURSOS ONLINE VIP
Top dos mais postadores
Rafael Silveira (7816)
 
Caca Silva (6015)
 
renatoscp (3877)
 
CMeletronica (3208)
 
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 : 6015
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 : 6015
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 : 101
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 : 6015
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 : 6015
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 : 101
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