bom dia, sou novo nesta area de programação, estou com um problema, acredito muito basico, mas que esta dificil pelos meus conhecimentos resolver.
Tenho um Scketh para um arduino Uno R3 que faz aparecer 2 imagens e 2 textos no dislay OLED.
Essas imagens e os textos aparecem por um periodo de 3 segundos cada, e depois deveria apagar o display e pular para outra parte do programa executando uma amostragem de temperatura.
O que esta acontecendo é que, após mostrar as imagens e os textos, não apaga o display e não vai para a parte do programa aonde deveria mostrar a temperatura.
Ele fica parado mostrando o ultimo texto "DDG XYZ9999" e não faz mais nada.
Alguem poderia me ajudar?
Grato desde já.
Segue o codigo que tenho. (lembrando comecei a mexer com arduino a questão de 3 semanas e sou bem veiaco.....)
Adicionalmente, esta parte do código está confusa.
//Função Temperatura do Forno que será executada continuamente
temperatura = (float(analogRead(TEMPforno))*5/(1023))/0.001;
Porque não escrever algo assim:
//Função Temperatura do Forno que será executada continuamente
temperatura = (float) analogRead(TEMPforno)*5000/1023;
ou
//Função Temperatura do Forno que será executada continuamente
temperatura = (float) analogRead(TEMPforno)*4.887585;
Muito mais simples de entender e mais rápido pois o Arduino realiza um cálculo em vez de 3.
Ahh, li um pouco melhor o que tinhas dito e após qualquer instrução que altere o display, incluindo a display.clear_display(), tens de chamar o método display.display().
Muito obrigado!
Vou realizar as alterações e lhe informo sobre os resultados.
Ao apagar a tela pretendo colocar uma rotina que ao se precionar um mini botão ele irá colocar na tela OLED as informações da temperatura.
Mais um toque no botão ele colocará informação de Voltagem deste sensor ( a que voltagem ele esta ). Este sensor varia de 0 a 5 volts sua resistencia.
Ao se apaertar o botao fica travado a informação no display at´pe se apertar novamente e se continuar a apertar vai ficar alterando entre estas duas informações.
Estava vendo algo como IF ELSE procede?
Bubulindo, boa noite.
Refiz a programação, retirei os comentários e inseri o comando display.display() depois de display.cleardisplay().
Mandei compilar e apareceu um erro ";", percebi que faltava um ";" no final da programação.
Coloquei tudo no VOID SETUP().
Agora esta funcionando como eu gostaria, me falta agora conseguir criar um seletor para poder selecionar a visualização da TEMPERATURA e VOLTS do sensor.
Muito obrigado pela ajuda, mais uma vez.
Como eu sei quais comandos a biblioteca aceita? Esta dentro de algum arquivo na biblioteca?
TEm alguma referencia para o SELETOR atraves de um botão puch button?
Grato
Boa noite a todos!
Estou retornando aqui para pedir mais uma ajuda sobre o Sketch que estou fazendo.
Atualizei o programa, refiz muita coisa, e acabei colhendo aqui e ali informações para conseguir montar o Sketch.
Consegui chegar no que eu quero para o painel de monitoramento.
Tenho as telas iniciais (Ajuda providencial do nosso amigo BUBULINDO)
Tenho algumas formulas para conversão de Volts (BUBULINDO novamente)
Tenho um seletor para infinitos menus (me parece extenso, mas me atendeu)
Tenho a montagem das TELAS e suas medições.
O que esta empacado e preciso de ajuda!!!!
1ª - Quando mudo de Menu esta demorando 1 segundo para aparecer o proximo Menu
(isso comeou depois que coloquei para exibir os valores de temperatura e volts)
(Os Menus sem os calculos funciona super rapido a troca)
2º - No Menu Motor Temp e Voltimetro não esta sendo visualizado a temperatura e os volts real time
Não esta atualizando os valores fica estatico.
Alguem poderia ajudar ou dar uma luz sobre o problema.
Segue o codigo completo - Só tirei as imagens em hex para não ficar muito longo.
Boa Tarde Bubulindo!
Mais uma vez obrigado pela ajuda.
Vamos lá
1º Problema: (demora para mudar de menu) - Realmente existe esse Delay(500) ; mas eu já exclui e não mudou nada. Continua demorando para alterar entre menus.
Esta assim : aperta botão sai do Menu 1 e muda para o Menu 2 demora um pouco para mudar.
aperta botão sai do Menu 2 e muda para o Menu 3 super rapido.
aperta botão sai do Menu 3 e mudada para o Menu 4 super rapido.
Percebi que parece ser algo relacionado com o sensor de temperatura talvez demora em ler o sensor ou carregar o valor que esta armazenado na memoria.
Funciona assim:
1º Power On Arduino
2ª Inicialização Arduino carrega as imagens, cada imagem tem delay de 3000 depois muda para a proxima imagem, terminou de carregar as 3 imagens carrega o MEnu 1;
3º MENU 1 - tela de FUEL LEVEL - O programa desenha a tela
Escreve os textos
Neste menu ainda não há medições a fazer
4º MENU 2 - tela de MOTOR TEMP - O programa desenha a tela
Escreve os textos
Por ultimo faz a amostragem da Temperatura do sensor
Ele carrega uma temperatura , ex: 27ºC e não muda mais mesmo voce vendo a temperatura variar no monitor serial para mais ou menos ele não atualiza o Display
Aperto botão
5º MENU 3 - tela de VOLTIMETRO
E acontece o mesmo caso do anterior, a tensão varia na entrada mas a do display só fica parada em um valor.
Eu fiz este programa em 3 partes por não conhecer programação.
Primeiro a parte das telas - testei e funcionou legal
Depois a parte do menu - testei e ok.
Ai juntei as duas para ver se funcionavam, e ficou show, acertei uns detralhes e tudo ok, inclusive a mudança dos menus estava super rapido.
Depois fiz os programas para medir e mostrar a temperatura e a tensão, testei e funcionou ok, tanto no display como no monitor serial.
Ai juntei tudo, as imagens e os menus mais a parte de leitura de sensores.
É aonde estou agora, funciona mas não atualiza os valores medidos, no monitor serial aparece as variações tanto de temperatura como de tensão , mas no display não, só mostra a primeira medida ao entrar no menu.
Será que ajudou para poder ter uma ideia do que é ?
Grato
Bubulindo!
Fiz alguns testes com o TAL DELAY de 1/2 segundo e realmente ele é responsavel pelo atraso na mudança do MENU.
Mas existe um limite para altera-lo e depois de varios teste acho que o melhor resultado foi DELAY (100)
Não esta 100% mas chega a 90%, então isso esta resolvido , pelo menos por enquanto.
Obrigado pela dica.
Agora o erro de não atualizar as medições persiste....
então estas coordenadas eu coloquei porque era a area livre do display para inserir a informação.
Anexo um exemplo da tela para voce analisar.
A tela de Voltimetro usei o mesmo esquema da anteriror
Acha que o tamanho do texto pode interferir?
Vou fazer o seguinte, diminuir o testo e mudar de posição para ver o que acontece.
Depois eu te dou uma posição.
Realmente não parece estapafurdio. Experimenta com o tamanho de texto, até sem ser no sketch que tens, tipo faz um de teste para ver qual é a instrução que falta ou está errada.
Grande Bubulindo!
Realmente não sei o que fazer, já tentei alguns codigos para leitura de Temperatura e outros de voltimetro.
Usando um stekch da internet para voltimetro vejo que tudo esta funcionando bem, a tela as atualizações da voltagem e etc.
MAs a hora que coloco o codigo nomeu stekch não funciona mais.
Vou tentar pegar o meu stekch e ir passo a passo implantando as partes até ver em que ponto começa a não funcionar.
Vamos ver.
Obrigado mais uma vez!
Uma coisa que não me parece correcta é que apenas imprimes o LCD uma vez.
Por exemplo, o teu valor de temperatura só é actualizado quando mudas de um menú para o menú da temperatura em vez de continuares a actualizar. Ou seja, se não mudares de menú o LCD apenas mostra os dados que existiam na primeira vez que entraste nesse menú.
É esse o funcionamento que pretendes? Ou achas que deveria actualizar os valores de x em x tempo dentro de cada menú?
Estou a referir-me a este if
if (hasChanged == true) {
De resto, pequenas sugestões...
Troca isto:
tps_volts=(analog_value * 0.00488282);
Por isto:
tps_volts=(float)analog_value * 0.00488282;
Não acho que faça grande diferença, mas fica melhor.
Tudo o resto que colocas no LCD aparece e só estes valores é que não aparecem? Ou há mais partes que não aparecem?
Porque fazes println no LCD??
display.println("C");
Como não estás a precisar das linhas, faz apenas um print.
De resto, não sei mesmo o que está a passar. Se puderes explicar ou mandar uma foto de como estão os displays pode ser que note algo em falta que ajude a chegar ao problema. Tenta o que escrevi em cima, mas não me parece, pela descrição que fizeste do problema, que vá fazer muita diferença o que meti em cima.