Ir ao conteúdo
  • Cadastre-se

patoassado2

Membro Júnior
  • Posts

    15
  • Cadastrado em

  • Última visita

Reputação

0
  1. nesse ultimo quando você aperta o botao o programa esta lendo if(botao==1){ x++; } entao como você demorou mais de um décimo de segundo pra apertar o botao o programa ja leu essas linhas de codigo pelo menos centenas de vezes por isso o x já vai direto pro 6000 e aciona o led, pra isso q serve o filtro de ruido do botão, é tipo um delay q você bota no programa no penultimo você fez um filtro de ruido pro botão... while(botao==1){ delay_ms(20); esse gp3 tb ta como entrada, liga um resistor de 10k no terra igual fez com o botao sei gp0 tb ta como entrada... coloca como saída ou bota um resistor também, ou não vai funcionar direito
  2. Se puder mostra o esquema elétrico, to vendo q ta em um oscilador rc entao não deve ser arduino, dependendo da ligação pode dar pau também, tipo se não colocar resistor nas entradas ligados no terra (de uns 3 a uns 15 k devem servir, 10k eh o habitual ). Tem o timer0 q da pra usar a interrupção dele(quando ele estoura) pra contar tempo(colocando valor inicial no timer e definindo quantas linhas de código contam uma unidade do timer nas config da pra contar qualquer valor de tempo) , a interrupção para o programa e leva a execução dos ciclos pra um endereço no começo da memória(linha 4) e de lá você faz o que quiser o byte tris=0x85 n seria byte tris=0x85h ? ou não precisa do h? to sem meus componentes aqui, pior q eu tenho esse pic kkkk mas to em outra cidade....
  3. Deixa int entao, e troca os true e false por 0 e 1, da na mesma #include <12F675.h> #device adc=8 #use delay(clock=4000000) #fuses NOWDT,INTRC_IO, NOCPD, NOPROTECT, NOMCLR, PUT, BROWNOUT #use fast_io(A) //#end if #ZERO_RAM #byte tris=0x85 #bit led = 0x5.4 //pino 3 #bit botao = 0x5.0 //pino 7 int tempo; int flag_led_piscou; int flag_botao_acionou; void main() { tris=0b001101; //gp0 como entrada tempo=0; flag_led_piscou= 0; flag_botao_acionou= 0; while(true){ tempo=0; if(botao==1){ flag_botao_acionou=1; tempo=0; } while(flag_botao_acionou==1 && flag_led_piscou==0 && botao==0){ delay_ms(1); tempo++; if (tempo==5000){ led=1; delay_ms(500); //led aceso led=0; flag_led_piscou=1; flag_botao_acionou=0; tempo=0; } } flag_led_piscou=0; flag_botao_acionou=0; } }
  4. estão com nome repetido, apaga e deixa so essas int tempo; bool flag_led_piscou; bool flag_botao_acionou; não sei, talvez eu escrevi boleana errado, não sei como declara boleana, eu vi q eh assim num site kkkk em q linguagem você esta programando?
  5. Se não der desisto, (por hj kkk) #include <12F675.h> #device adc=8 #use delay(clock=4000000) #fuses NOWDT,INTRC_IO, NOCPD, NOPROTECT, NOMCLR, PUT, BROWNOUT #use fast_io(A) //#end if #ZERO_RAM #byte tris=0x85 #bit led = 0x5.4 //pino 3 #bit botao = 0x5.0 //pino 7 int tempo; bool flag_led_piscou; bool flag_botao_acionou; void main() { tris=0b001101; //gp0 como entrada tempo=0; flag_led_piscou= false; flag_botao_acionou= false; while(true){ tempo=0; if(botao==1){ flag_botao_acionou=true; tempo=0; } while(flag_botao_acionou==true && flag_led_piscou==false && botao==0){ delay_ms(1); tempo++; if (tempo==5000){ led=1; delay_ms(500); //led aceso led=0; flag_led_piscou=true; flag_botao_acionou=false; tempo=0; } } flag_led_piscou=false; flag_botao_acionou=false; } }
  6. ainda não entendi porque ele liga imediatamente ao abrir o botão , vou dar mais uma olhada aqui naooo, é so int mesmo aff ausheuhasea copiei o seu codigo pra modificar, acho que não existe int1 colocou flag_led_piscou=0; dps q saiu do while(botao==0 && flag_led_piscou==0)? não precisa ser essa flag, pode ser algum comando q saia do while, eu n conheço muito essa linguagem
  7. achei outro erro meu.... dps q sair do while coloca a flag em 0 de novo kkkkk #use fast_io(A) //#end if #ZERO_RAM #byte tris=0x85 #bit led = 0x5.4 //pino 3 #bit botao = 0x5.0 //pino 7 int tempo; int1 flag_led_piscou; void main() { tris=0b001101; //gp0 como entrada tempo=0; flag_led_piscou=0; while(true){ if(botao==1){ delay_ms(100); // filtro de ruído while(botao==0 && flag_led_piscou==0){ delay_ms(1); tempo++; if (tempo==5000){ led=1; delay_ms(500); //led aceso led=0; flag_led_piscou=1; // poderia ser um return ou sei la } } tempo=0; led=0; flag_led_piscou=0; //af q put$ria } } }
  8. parece q faltou definir a variavel no comeco coloca la, dps do int tempo , int flag_led_piscou
  9. ve se as interrupções do microcontrolador estão desativadas saquei... perae vou arrumar aqui com uma flag... #include <12F675.h> #device adc=8 #use delay(clock=4000000) #fuses NOWDT,INTRC_IO, NOCPD, NOPROTECT, NOMCLR, PUT, BROWNOUT #use fast_io(A) #endif #ZERO_RAM #byte tris=0x85 #bit led = 0x5.4 //pino 3 #bit botao = 0x5.0 //pino 7 int tempo; void main() { tris=0b001101; //gp0 como entrada tempo=0; flag_led_piscou=0; while(true){ if(botao==1){ delay_ms(100); // filtro de ruído while(botao==0 && flag_led_piscou==0){ delay_ms(1); tempo++; if (tempo==5000){ led=1; delay_ms(500); //led aceso led=0; flag_led_piscou=1; // poderia ser um return ou sei la } } tempo=0; rele=0; } } }
  10. esquecí de uma coisa, é legal sempre zerar as variáveis e portas antes de começar os programas, as vezes elas ficam com os valores presos na memória tipo colocar x=0; Gp4=0; no começo do programa também, ou ele pode bugar...
  11. if(botao==1){ delay_ms(100); // filtro de ruído while(botão==0){ delay_ms(1); x++; if (x == 5000){ Gp4=1; delay_ms(500); //led aceso Gp4=0; } } x=0; Gp4=0; } não sei se ta certo tenta ai kkkk, n lembro como escreve em c++.... porém quando o led estiver aceso não detectará botao... não sei configurar interrupção do timer do pic no c++ pra interromper o led também...
  12. O led deve piscar por quanto tempo? quanto tempo aceso? tanto faz?
  13. Tenta algo mais genérico que inclusive já tem pronto, como programas que simulam protocolos de comunicação de máquina mesmo (os mais genéricos, tipo i2c) que já tem placas prontas para comprar que se comunicam com arduino, e existem programas para fazer comunicação com seu PC através do usb, eu acho q seria mais interessante. Poderia pegar os dados deste programa no PC e mandar para qualquer lugar, inclusive para um banco de dados na nuvem, é mais fácil do que simular alguma maquina que já está até com os resistores perfeitamente dimensionados com oscilador próprio, nunca fica preciso sem aqueles algoritmos de aproximação e outras artimanhas que só se da conta que existe na prática.
  14. to olhando aqui, essas versao nova do mplab parecem ser uma *****, tenta baixar uma versao antiga... não compilam totalmente certo mas é melhor do que nao compilar nada

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