Galera Boa noite.
No programa abaixo, o meu relé que está no PORTB0 fica repicando, Já comentei todo programa e ativei só o PORTB e funciona, Porém quando coloco o resto do programa sempre repica. Alguém sabe me dizer como resolver esse problema, sem mecher nos PORTS?
-> Para completar, estou utilizando na saida do PORTB, um resistor de 4k7 e um BC337 com beta de 40
Video do problema: https://www.youtube.com/watch?v=P0VJPmA0fl8
#FUSES NOMCLR, NOLVP, NOPROTECT, INTRC, NOWDT
void main()
{
if(!input(pin_a7)){ //se o FIM de curso de abertura não tiver acionado
if(input(pin_a1)){ //Se eu pressionar o botao abre
output_high(pin_b0);
}
else output_low(pin_b0);
}
else output_low(pin_b0);
if(!input(pin_a6)){ // Se o Fim de curso de fechamento não tiver acionado
if(input(pin_a0)){ // Se eu pressionar o botão fecha
output_high(pin_b1);
}
else output_low(pin_b1);
}
else output_low(pin_b1);
}
}
Tags:
Tenta assim:
#FUSES NOMCLR, NOLVP, NOPROTECT, INTRC, NOWDT
void main()
{
if(!input(pin_a7)){ //se o FIM de curso de abertura não tiver acionado
if(input(pin_a1)){ //Se eu pressionar o botao abre
output_high(pin_b0);
delay_ms(100);
}
else output_low(pin_b0);
delay_ms(100);
}
else output_low(pin_b0);
delay_ms(100);
if(!input(pin_a6)){ // Se o Fim de curso de fechamento não tiver acionado
if(input(pin_a0)){ // Se eu pressionar o botão fecha
output_high(pin_b1);
delay_ms(100);
}
else output_low(pin_b1);
delay_ms(100);
}
else output_low(pin_b1);
delay_ms(100);
}
}
acredito q os delays nao vao influenciar nisso, gostaria q postasse o circuito q utilizou bem como o codigo completo.. se fosse eu dava uma resumida dessa forma nisso td!
if(!input(pin_a7) && input(pin_a1)) //se o FIM de curso de abertura não tiver acionado e eu pressionar o botao abre
{
output_high(pin_b0);
}
else
{
output_low(pin_b0);
}
if(!input(pin_a6) && input(pin_a0))
{
output_high(pin_b1);
}
else
{
output_low(pin_b1);
}
Ja aconteceu comigo e foi porque faltou um resistor de 10k para o terra (pull down) para manter o pino sempre em 0 , sem ele o pino fica meio que estático , e quando recebia o sinal 1 na porta ele fazia a mesma coisa que faz no video que você postou .
Não reparei se sua placa havia mas poste ai o esquema para analizarmos.
Reseolvido!!!
O programa do Cesar Luis Funcionou.
IIgner, não era pulldown, pois coloquei o resistor de 10K.
Com o programa do César Luis, o relé acionou corretamente.
Obrigado pela atenção de Todos.
em relacao ao codigo postado por ti, precisa-se ler duas linhas de condicao para ele executar a funcao, enquanto ele esta entre elas causa essa reacao q teve.. imagino q da maneira q postei ele le as condicoes e executa se ambas estiverem verdadeiras.
Sim, o código que vc postou funcionou corretamente.
o estranho era que quando comentava todo o programa e deixava só o PORTB0 funcionava corretamente, porém quando colocava todo o programa, me dava problemas.
Agora está resolvido, obrigado Cesar Luis e obrigado aqueles que me deram atenção.
Abraços.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por