Ir ao conteúdo
  • Cadastre-se

LeonardoBoniDel

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

1
  1. Olá todos! Primeiro gostaria de agradecer a todos pelos comentários e pela ajuda. Galera eu não trabalho com eletrônica, sou engenheiro de automação formado há 10 anos e minha bagagem é somente o que vi na faculdade e o que ainda lembro, portanto, peço desculpa pela "falta de malícia" e pelo "amadorismo" do circuito. Estou aprendendo/reaprendendo a lidar com eletrônica novamente. Fiz alguma alterações conforme orientações de vocês e ficou muito melhor. 1) O MCLR realmente estava em curto, alterei e agora funciona corretamente. 2) Estava utilizando o debounce somente na programação, e não sei porque não estava adiantando, então fiz os dois, debounce da programação e no circuito (adicionei 1 capacitor em paralelo com cada botão). 3) Ainda não encontrei a explicação correta para compartilhar com vcs, porém o fato de o ultimo conjunto de leds não acenderem era devido a variável que eu estava utilizando (INT), agora que troquei para LONG, comecou a funcionar perfeitamente. Obs: Não encontrei nd dizendo que INT é só de 0 a 9. 4) Os transistores do lado B, estavam realmente ao contrário, já arrumei. 5) Incrementei na programação os botões de ++ e -- pontos de ambos (A e B e estão funcionando corretamente. O amigo Sérgio Lembo, fez um comentário: "Ao invés de 3 linhas fazendo 5V e 4 fazendo 0V, 4 fazendo os 5V e 3 fazendo o 0V. Economiza 1 transistor por banco." que eu não entendi como fazer. O único erro que ainda persiste é logo que ligo o circuito e começo a marcar os pontos ele volta para 0 sozinho 1 ou 2 vezes, depois passa a funcionar sem problemas. Fazendo uma analogia tosca, é como se precisasse "esquentar" o pic pra ele começar a funcionar corretamente. Abaixo envio o esquema elétrico e o video do erro.
  2. Galera, estou tentando fazer um marcador de truco, porém não entendo o que não da certo. Vamos lá... A ideia, marcador de truco utilizando: 12 Leds azuis e 12 Leds vermelhos (0 a 11); 1 pic 18F2220. 1 botão para cada equipe para marcar os pontos Eu montei o circuito no PROTEUS e lá funciona corretamente, porém quando passo para a protoboard funciona parciamente. Esquema Elétrico PROTEUS: Defeito 1: Quando ligo o circuito e começo a marcar o placa, quando chega no 3 ou 4 ele apaga e volta para o 0. Depois a programa segue "normal". Defeito 1: As vezes aperto o botão e ele pula do 2 para o 4, por exemplo. Defeito 2: os leds correspondentes aos pontos 9, 10 e 11 não ascendem. (já troquei o transistor e a porta do pic e não funcionou). Defeito 3: Quando chega no LED correspondente ao 3 ponto, eu tenho que apertar o botão algumas vezes até que o proximo ponto seja computado (só acontece nesse LED). Programa feito pelo MPLAB X, compilado pelo XC8, e usei o MultiprogPlus - Pickit 2 pra passar o programa para o PIC. Programa em C #include <stdio.h> #include <stdlib.h> #include <xc.h> #include <pic18.h> #include "18f2220t.h" void main (void) { OSCCON = 0x70; ADCON1 = 0x0F; TRISB=0b00001111; TRISA=0b00000000; TRISC=0b00000000; PORTA=0b00000000; PORTB=0b00000000; PORTAbits.RA3=1; PORTAbits.RA0=1; PORTBbits.RB6=1; int A,B,C,D; A=1; B=1; while(1) { if(PORTBbits.RB2 == 1) { __delay_ms(150); B++; do {}while (PORTBbits.RB2 == 1); } if(PORTBbits.RB0 == 1) { __delay_ms(150); do {}while (PORTBbits.RB0 == 1); A++; } switch(A) { case (1): PORTAbits.RA3=1; PORTAbits.RA0=1; break; case (2): PORTAbits.RA0=0; PORTAbits.RA1=1; break; case (3): PORTAbits.RA1=0; PORTAbits.RA2=1; break; case (4): PORTAbits.RA2=0; PORTAbits.RA3=0; PORTBbits.RB4=1; PORTAbits.RA0=1; break; case (5): PORTAbits.RA0=0; PORTAbits.RA1=1; break; case (6): PORTAbits.RA1=0; PORTAbits.RA2=1; break; case (7): PORTAbits.RA2=0; PORTBbits.RB4=0; PORTAbits.RA5=1; PORTAbits.RA0=1; break; case (8): PORTAbits.RA0=0; PORTAbits.RA1=1; break; case (9): PORTAbits.RA1=0; PORTAbits.RA2=1; break; case (10): PORTAbits.RA2=0; PORTAbits.RA5=0; PORTAbits.RA4=1; PORTAbits.RA0=1; break; case (11): PORTAbits.RA0=0; PORTAbits.RA1=1; break; case (12): PORTAbits.RA1=0; PORTAbits.RA2=1; __delay_ms(200); PORTAbits.RA2=0; __delay_ms(200); break; case (13): PORTAbits.RA2=0; PORTBbits.RB5=0; A=1; break; } switch(B) { case (1): PORTCbits.RC1=1; PORTBbits.RB6=1; break; case (2): PORTBbits.RB6=0; PORTBbits.RB7=1; break; case (3): PORTBbits.RB7=0; PORTCbits.RC0=1; break; case (4): PORTCbits.RC0=0; PORTCbits.RC1=0; PORTCbits.RC2=1; PORTBbits.RB6=1; break; case (5): PORTBbits.RB6=0; PORTBbits.RB7=1; break; case (6): PORTBbits.RB7=0; PORTCbits.RC0=1; break; case (7): PORTCbits.RC0=0; PORTCbits.RC2=0; PORTCbits.RC3=1; PORTBbits.RB6=1; break; case (8): PORTBbits.RB6=0; PORTBbits.RB7=1; break; case (9): PORTBbits.RB7=0; PORTCbits.RC0=1; break; case (10): PORTCbits.RC0=0; PORTCbits.RC3=0; PORTCbits.RC4=1; PORTBbits.RB6=1; break; case (11): PORTBbits.RB6=0; PORTBbits.RB7=1; break; case (12): PORTBbits.RB7=0; PORTCbits.RC0=1; __delay_ms(200); PORTCbits.RC0=0; __delay_ms(200); break; case (13): PORTCbits.RC4=0; PORTCbits.RC0=0; B=1; break; } } } Obs: Estou usando o oscilador interno do PIC. O vídeo mostrando o que está acontecendo está abaixo: Se alguém puder me dar uma luz agradeço galera!!!!!

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...