Bom dia senhores garagistas, estou desenvolvendo um codigo que acabou ficando muito maior do que o previsto, ja esta nas 754 linhas e esta engordando igual peru prox do fim do ano, distribuído em 7 abas (ideia que achei aqui procurando um problema sobre rtc), o codigo esta funcionando, basicamente sao 35 valvulas esfericas eletronicas, sensores de umidade, lcd, sdcard, teclado matrix (esperando o ebay entregar para implementar), alguns botoes, boia eletronica, rtc, mas vamos ao que interessa, queria uma ajuda sobre esses comandos "attachinterrupt detachInterrupt clie()  sei() noInterrupts() interrupts "(li tudo quanto foi trem mas n consegui algum util pra exemplificar no meu projeto), tentei usar o attachinterrupt, ate consegui lendo todos os posts daqui e de outros foruns, mas no meu caso era ao apertar o botao ele chamar a funcao para setar a hora de inicio do processo(consegui colocando dentro do loop do modo de espera um botao e lendo sempre o estado, n gostei mas resolveu ate eu descobrir o erro), mas ele trava, congela tudo, substitui a funcao por outra para contar de 0 ate 10 para ver se esta chamando, e funciona chama no serial, procurei e vi que tem alguns exemplos de usar um led piscando e quando aperta ele fica aceso por 5 segundos e depois apaga, o meu n fica acesso, aperto ele ascende, solto ele apaga, no codigo ha um delay(), pelo que vi, o attachinterrupt n gosta de delay e nem de i2c(meu lcd é i2c para livrar portas e fios) e o lcd trava ao pedir pra mostrar nele qq coisa da attachinterrupt, se mando mostrar no serial, tipo Serial.print("teste de attachinterrupt")(colocando essa linha acima do codigo que quero que rode); ele so imprime "teste d" na serial. doideira, ja estou desde o mes 3 escrevendo e testando o codigo, arruma aqui, ajusta ali, dai chegou nesse attachinterrupt e me estressou, 4 domingos testando, estresso, vou dar uma volta de moto, ajustou outra coisa, testo o attachinterrupt, n funciona, arrumo outra coisa, testo e assim vai, tem exemplos que mostram trabalhando com lcd mas usando aquele monte de fio, nas n cheguei a testar mas duvido funcinar, meu arduino é um mega 1280, ja uso ele a 6 anos dos quais 4 ficou guardado por falta de algum projeto, queria saber as limitacoes do attachinterrupt ou se sou eu o problemas pois teve uma vez, apenas uma que a funcao funcionou, mas foi pra chamar outra funcao semelhante a hora, para colocar o piquete onde estao as vacas para no codigo ele pular aquele piquete e irrigar o proximo, fiquei feliz pq achei que tinha funcionado mas depois que saiu do laco, n entrou mais e travou tudo. desculpe o texto enorme mas li muita coisa, li todas a publicacoes antes de abrir essa, ia adicionar em um aberto mas sao de 2015 ou inicio de 2016 e muito fora do meu problema, mesmo estando resolvidos.

Exibições: 327

Responder esta

Respostas a este tópico

desculpe ter duplicado, travou a pagina e no refresh fez essa bagunca

Boa tarde EW,

por algum problema no Laboratório de Garagem, o seu tópico fico repetido várias vezes.

Vá  nos outros  que não este,

Abra o tópico, selecione opções, e click em Remover tópico.

Veja exemplo:

Boa tarde, pois é repetiu 4x, ate me decupei, mas n tem essa opcao na minha pagina

Dificil falar alguma coisa sem ver o codigo.. Mas comentando boas práticas de programação.

1) Não ligue e desligue interrupções a menos que seja absolutamente necessário.

2) Use o mínimo possivel delay. Se tem interrupções, não use.

3) As interrupções precisam ser instantaneas. Apenas no máximo uma dezena de operações. Nunca usar float, bibliotecas, etc. Delay nem pensar.

Quase certo que vc fez um tripão com delay na interrupção, por isso não funciona. Se vc precisa de mais coisa na iterrupção sete um flag e faça isso no programa principal.

Boa tarde, tbm achei que poderia ser o codigo. criei um novo codigo pra testar e mesmo assim n funciona, no original realmente era enorme o codigo, mas no de teste era de 6 linhas, so acender um led por 5 segundos, mas ele n respeita delay, tentei milis, tbm n aceita, tentei muita coisas e ele n aceita, dai tirei a interrupcao e coloquei para ficar lendo o estado do botar durante a execucao, ficou estranho, mas estou tentando outras linhas de pensamento para tirar o vicio de progamacao.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço