Fórum

Notifications
Clear all

Contador on off  

  RSS

(@nascimento)
Membro Confiável
Joined: 3 anos ago
Posts: 21
23 de Dezembro de 2020 13:12  

estava tentando fazer um contador de tempo on off, seria da seguinte forma  vc escolheria o tempo ligado e o tempo desligado, ate comecei mais tem uns bugs que ainda não consegui resolver, so consigo no maximo  5h e 59 minutos em on e 5h e 59 minutos em off

e queria conseguir que ele configurasse até 23:59 em on e em off

acho que deu pra entender basicamente o que desejaria...

estou usando ele mesmo com bug, ainda tentando resolver,   configurei ele pra ficar 1h ligado , e  30 minutos desligado ,  usei o estouro de timer2 para contar os segundos

 


Quote
(@clarios)
Membro proeminente Admin
Joined: 9 anos ago
Posts: 327
25 de Dezembro de 2020 23:25  

Se puder postar o que você já conseguiu talvez possamos dar alguma dica do problema.


ReplyQuote
(@nascimento)
Membro Confiável
Joined: 3 anos ago
Posts: 21
27 de Dezembro de 2020 15:03  

sim posso claro vou mandar em anexo,  tentei simplificar ao maximo, fiz em arduino mais pode ser em pic sem problemas.. , o que eu não consegui foi passar de 5h e 59m, tanto on quanto em off, bom ta ai mestre... e boas festas a todos!!!

This post was modified 3 semanas ago by Nascimento

ReplyQuote
(@nascimento)
Membro Confiável
Joined: 3 anos ago
Posts: 21
27 de Dezembro de 2020 15:19  

desconsidere o arquivo anterior , ele esta meio bagunçado por favor analizar este


ReplyQuote
(@clarios)
Membro proeminente Admin
Joined: 9 anos ago
Posts: 327
28 de Dezembro de 2020 08:43  

Como o  arquivo está em outro idioma, o esquema do sketch  e a uma explicação do que o circuito proposto realiza seria interessante.


ReplyQuote
(@nascimento)
Membro Confiável
Joined: 3 anos ago
Posts: 21
28 de Dezembro de 2020 11:53  

bom ,  eu achei um sketh na net mais tava muito complexo, então peguei partes dele e sai escrevendo , do meu modo , vou lhe mandar em anexo o arquivo de simulção que fiz no protheus 7 e o .hex gerado , vou lhe mandar que acredito que lhe facilitará o entendimento,


ReplyQuote
(@clarios)
Membro proeminente Admin
Joined: 9 anos ago
Posts: 327
31 de Dezembro de 2020 23:16  

Notei que fez uma modificação para obter o tempo de 1 segundo através de uma rotina do timer 2 ao invés de usar a rotina millis(). Foi para melhorar a precisão?
Mas a forma que está a sua rotina com certeza irá dar um erro muito grande na precisão, em especial no limite de funcionamento (23:59:00).
Sugiro o uso do método do acumulo de erro conforme adicionei no programa.

O bug de não passar de 5 horas se devia a própria rotina que estava limitando isto.
Mas tinha mais! Quando alterei o valor de 5 para 23 ainda não funciou! O motivo era que a variável que recebesse os valores tinha que ser do tipo 'unsigned long' para poder comportar o valor consideravelmente grande (acima de 65536). Mesmo alterando o tipo da variável para 'long' ainda não funcionou. O motivo: faltou usar um modificador na frente das somas (long) para que o compilador fizesse a conta de forma certa.

Tem um mistério que não consegui debugar: quando se faz o ajuste de novos valores de tempo e saimos da rotina, o programa muda o valor da variável 'menu' para 6. Ao sair do modo ajuste deveria entrar na rotina do loop principal e pegar direto da eeprom (rotina Atv_menu()) estes novos valores ajustados. Mas não acontece isto. O programa não responde corretamente. Se der um reset após o ajuste ai então funciona tudo maravilhosamente. Para contornar isto, usei um flag adicional (flag_r). Com ele eu consegui que a rotina do loop principal mostrasse no display de forma correta os novos valores, sem ter que resetar.
Acredito que este bug tenha algo que ver com salvamentos de variáveis na rotina de interrupção do timer2, mas não tenho como estudar o que o compilador está gerando, pois não é gerado arquivo asm (uma das minhas dificuldades no uso do Arduino).
Tentei usar a serial para extrair o que estava acontecendo com a variavel 'menu' ao retornar.
Segundo a serial, ela carrega o valor 6 corretamente. Mas algo acontece quando cai na rotina do loop principal (mistério).

O programa está meio bagunçado pois tem variáveis e até definições de entrada/saida (fluxo, life, nivel) que não sei se você irá usar.
O programa ao ser ligado já entra em modo 'saída ligada' contando tempo 'On' e após acabar desliga a saída e passa a contar tempo 'Off', repetindo o ciclo indefinidamente. Não tem menção de interruptor para pausar/parar/iniciar. Mas creio que seja o que necessita para dar andamento ao que pretende.
Infelizmente em Arduino eu sou muito limitado. Procure nos foruns do Arduino para obter algumas dicas que possam ajuda-lo.

This post was modified 2 semanas ago by Claudio Larios

ReplyQuote
(@nascimento)
Membro Confiável
Joined: 3 anos ago
Posts: 21
10 de Janeiro de 2021 09:49  

@clarios após estudar muito fui modificando, e dei uma boa melhorada no codigo, ja consegui exito em mais de 5 horas, não mudei as variaveis fiz em um modo mais simples

muito obrigado pela ajuda, assim que conseguir resolver todos os bugs , postarei aqui para os amigos... mais como eu disse por hora esta servindo ao proposito, so que sempre vamos em busca da perfeição não é??


ReplyQuote
Back To Top