Ir ao conteúdo
  • Cadastre-se

Charlie Harper

Membro Júnior
  • Posts

    17
  • Cadastrado em

  • Última visita

Reputação

0
  1. Ok.. mesmo assim,muito obrigado @aphawk
  2. @aphawk seus argumentos são bem convincentes, obrigado por responder ao topico, mas agora quero usar o que eu tenho em mãos, vou pensar seriamente em suas dicas e sugestões. @Isadora Ferraz aqui esta o codigo q estou usando, quando o pic percebe uma troca de 10 para 11 (do encoder) o led ficar acende durante 30 ms, e de 11 para 10 o outro led acende 30 ms também.. deu certo aqui mas acontece que se eu giro rápido o led do outro lado "pega" sinal as vezes (pisca led) .. aqui vai o codigo #include <16F628A.h> #FUSES NOWDT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD #FUSES INTRC_IO #FUSES NOPUT #FUSES NOMCLR #use delay(clock=4000000) #byte porta = 0x05 #byte portb = 0x06 void main() { port_b_pullups(FALSE); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); //---- Fim da configuração int8 enc1; // armazena valor atual de ra0 e ra1 int8 aux1; // armazena valor antigo de ra0 e ra1. set_tris_a(0b11111111); set_tris_b(0b00000000); portb=0; enc1=0; // zeramos a variavel q le os valores de ra0 e ra1 while (true) { portb=0; aux1=enc1; // Igualamos 'AUX1' e 'ENC1' enc1=porta & 3; // direcionamos entrada para ra0 e ra1 delay_us(80); if ((aux1==2)&&(enc1==3))// se houve mudança de 10 p 11 { delay_ms(12); output_bit(pin_b0, true);// então acende o led q esta em b0 //delay_ms(15); output_bit(pin_b1, false); delay_ms(30); portb=0; } if ((aux1==3)&&(enc1==2))// se houve mudança de 11 p 10 { delay_ms(12); output_bit(pin_b1, true); //acende led b1 //delay_ms(15); output_bit(pin_b0, false); delay_ms(30); portb=0; // zera as saidas }
  3. Ola boa noite Isadora e test man... obrigado por responderem ao topico.. eu havia percebido esse erro de digitação no programa e resolvi... testei e da certo.. o problema é que quando giro um pouco rápido, o led pisca normal a cada clique, mas o outro led (lado) pega um sinal.. EX: GIRO rápido, A CADA 15 "CLIQUE" DO ENCODER O OUTRO LED PISCA UMA OU MAIS VEZES, algo como interferencia... coloquei capacitores para o efeito debouncing, melhorou, mas não resolveu, vou ter q resolver na programação... As dicas da Isadora são boas em comparar as saidas.. mais informações ficarei grato, enquanto isso vou a luta aqui... Boa noite ;D
  4. Help mee ... então quero usar um pic para saber para qual lado o encoder esta, praticamente ter na saida 2 leds, para um lado pisco 1 led e para outro lado pisco outro led.. objetivo é que cada "clique" do encoder seja um pulso piscando o led respectivo. Não quero usar interrupção, porque quero usar o maximo de encoders em um pic testei este programa que peguei da internet.. não consigo modificar para o sinal sair em dois pinos ( um para cada lado) depois da comparação eu usei OUTPUT_BIT (PIN_B1); OUTPUT_BIT (PIN_B0); mas não da muito certo :$ ... e quando da certo os leds acendem fracos.. OBJETIVO É QUE CADA CLIQUE DO ENCODER PISQUE UM LED, não quero para contar, mas somente para pulsos OBRIGADO GENTE codigo que peguei da internet #include <16F628A.h> #FUSES NOWDT, XT, PUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD #use delay(clock=4000000) #byte porta = 0x05 // Asignamos PortA. #byte portb = 0x06 // Asignamos PortB. // ---------- Programa Principial ---------- void main() { port_b_pullups(FALSE); // Sin resistencias pullups a las salidas del puerto B. setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); // Al no usar el TIMER configuramos lo más básico. setup_comparator(NC_NC_NC_NC); // Sin comparadores. setup_vref(FALSE); // Al no usar comparadores no necesitamos Vref. //---- Fin de la configuración del 16F628A ---- int8 x; // Declaramos el valor de X como byte, se corresponderá con los 8 LEDs de salida. int8 enc; // Se almacenará el valor actual de RA0 y RA1, hasta la siguiente comparación. int8 aux; // Se almacenará el valor anterior de RA0 y RA1, hasta la siguiente comparación. set_tris_a(0b11111); // Puerto A como entradas. Sólo usamos RA0 y RA1. set_tris_b(0b00000000); // Puerto B como salidas, para los 8 LEDs. portb=0; // Inicialmente ponemos a cero el puerto B. x=0; // Inicialmente ponemos a cero la variable que se usa para contar. enc=0; // Inicialmente ponemos a cero la variable que tomará los valores de RA0 y RA1. while (true) { aux=enc; // Igualamos 'AUX' y 'ENC' para luego comparar cuando cambie 'ENC'. enc=porta & 3; // Aislamos RA0 y RA1 como un número de 2 bits y se carga en la variable 'ENC'. if ((aux==2)&&(enc==3))// Si en la comparación hay flanco de subida, { x++; // entonces incrementar una unidad el valor de X. } if ((aux==3)&&(enc==2))// Si en la comparación hay flanco de bajada, { x--; // entonces decrementar una unidad el valor de X. } portb = x; // El valor de X sale por el puerto B, los 8 LED de salida. } }
  5. vi q existem varios leds em paralelo ligados ao coletor... mas ligação em paralelo nao deveria DIVIDIR a corrente# Atualização: Vi que tem resistor e led ligados em paralelo do COLETOR AO 5V se ele esta fechado, então se houver resistencia e led, por ex, ligado ao 5V então ele iria variar a corrente, certo :$ ou me equivoquei
  6. KKK boa tarde foi de uma placa padrão.. nao da para ver direito, mas sei q ele varia algo, creio q seja tensão, e também vi q tem um muitos leds entre coletor e terra .. vou medir tudo com multimetro
  7. O que este circuito faz... nao entendo muito sobre transistor, mas nao sei se ele varia a tensão na saida (coletor) ou nao ou o que seria
  8. O controlador usb é formado por matriz .. colunas e linhas.. vi q nas linhas ja existe resistor de 10k, mas vou tentar aqui Obs: placa do controlador ja veio pronta O controlador usb é formado por matriz .. colunas e linhas.. vi q nas linhas ja existe resistor de 10k, mas vou tentar aqui Obs: placa do controlador ja veio pronta aqui esta um manual de como ligar.. só q em vez de botao eu usei transistor como chave.. reparei q existem diodos em cada chaveaa
  9. o sinal (contato com o terra) ocoore quando o transistor fecha o led liga quando aperto a chave e ao mesmo tempo ele fecha o transistor, que somente serve para fechar contato com o terra, mandando sinal para o pic... acontece é que quando tem mais de 10 botões(chaves) pressionadas começam a aparecer sinais ou desaparecem sinais, interferencia, tentei por um diodo do emissor para o terra mas nao deu certo
  10. tenho este esquema ligado a uma unica fonte com uma saida variavel e uma fixa... este mesmo esquema tenho 30 deles ligados em paralelo.. quando o transistor fecha ele manda sinal(contato) para o pic que le os botões.. acontece q quando aperto mais q 10 botões, aparecem ou desaparecem outros botões sem ter feito nada.. pensei em por um diodo, mas onde poderia coloca lo ou qual seria a solução para eliminar essas interferencias (botões fantasmas)
  11. Na verdade é painel de botões com led.. atraves de uma fonte regulavel que varia ate os 4V + ou - ... sem o botao estar pressionado posso variar a intensidade de brilho, mas quando pressionar o botão ele tem q estar no brilho maximo e ao mesmo tempo mandar um sinal (jumper com o terra) ... Vou fazer os testes aqui.. OBS: consegui fazer isso mas usei 2 transistor, o que para mim é muito.. queria simplificar com zener ou outro componente Consegui aeee KKK usei 1K6 em serie com o diodo e 1K entre B e E
  12. Testei com diodo de 2,4V mas o transistor fica fechado direto... o emissor esta no gnd... o que pode estar errado! ou qual seria uma forme simples de fechar o transistor quando a tensão sobre o led for acima dos 3V
  13. OK amanhã compro um diodo zener 2,4V.. Então porque tem q ser 2,4V?? Primeira vez que uso zener.. Comecei com eletrônica não faz muito tempo RS
  14. fiz com diodo de 3,3V porque nao tenho 2,4V.. nao deu certo.. vai ter q ser o 2,4V .. ou pode ser usado outro componente neste circuito que nao afete o led plis
  15. um diodo zener de 2,4V ou 6 diodos 1n4148... lol vou ver se tenho um de 2,4 e vou fazer os testes aqui.. R entre B e E de quantos ohms:

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