Preciso converter esses dados para ser armazenado em EEPROM, Alguem me ajuda pf ?
A eeprom recebe bytes (8 bits) e a variável hora é uint32 (32 bits);
Linhas do Codigo
uint32_t hora;
hora=EEPROM.read(1);
n0.getValue(&hora);
n0.setValue(hora);
EEPROM.write(1, hora);
Display utilizado no projeto : Nextion NX4832T035
Codigo ino em anexo.
Tags:
Boa noite JPMN (se não gosta que te chame pelas iniciais, avise),
não precisava criar um novo tópico, bastava corrigir o anterior.
O que ocorre com seu code é que você quer gravar 4 byyes (uint32_t) em um endereço de 1 byte.
Mas vamos lá.
O arduino quando usa as funções de EEPROM.read(); e EEPROM.write(), somente manuseia 1 byte.
Mas na documentação do arduino tem umas funções que manuseiam bytes do tamanho da variável definida.
Se você definir uma variável :
tipo byte ou uint8_t, ela grava/le um byte na EEPROM;
tipo int ou unsigned int ou uint16_t, ela grava/le dois bytes na EEPROM;
tipo long ou unsigned long ou uint32_t ou ainda float , ela grava/le quatro bytes na EEPROM;
as funções são : EEPROM.put(addr,data); grava na EEPROM e
EEPROM.get(addr,data); Le da EEPROM
Veja que se por exemplo:
gravar um int em um endereço X, e for gravar outro Y em outro endereço, este novo endereço
deverá ser addr usado em X + 2.
gravar um float em um endereço Z, e for gravar outro W em outro endereço, este novo endereço
deverá ser addr usado em Z + 4.
Modifique seu code para usar estas funções e depois conta o resultado pra gente.
RV mineirin
Estou com dificudades para montar o codigo, poderia me instruir ?
Boa noite JPMN, (se não gosta que te chame pelas iniciais, avise),
modifique seu code para usar as funções put() e get().
Mas vou te alertar que se você usar ele gravando na EEPROM a cada segundo como você escreveu
no seu code, a sua EEPROM vai durar muito pouco.
Uma EEPROM de Atmega328 suporta em media 100.000 gravações.
Se a cada segundo (delay 1000) você gravar na EEPROM, faça as contas:
100.000/ 60 segundos = 1.666,66 minutos e 166,66 /60 minutos = 27,7 horas.
Ou seja, em 27 horas sua EEPROM já era...
Depois conta o resultado do teste.
RV mineirin
Boa noite RV mineirin ,agradeço pela ajuda mas o mesmo continua com o mesmo problema, toda configuraçao do display esta correta, nao consigo entender esse erro, apos reiniciar o projeto ele retorna o valor , mas quando desligado da tomada ele zera o valor novamente.
Bom dia JPMN, (se não gosta que te chame pelas iniciais, avise),
Nas minhas postagens eu não preocupei com a lógica do seu code, e somente foquei na questão
da gravação e leitura da EEPROM para variáveis maior que 1 byte.
Não tenho este dispositivo (Nextion) e não tenho como testar seu code.
Nos informe onde você obteve este code que está testando? "Pegando_Dados.ino"
O que você espera que esta linha faça? "n0.getValue(&hora);"
Breve flowchart do seu code:
No setup lê EEPROM hora=EEPROM.read(1); // Possível valor desconhecido ou 0
Set um valor n0.setValue(hora); // Set valor desconhecido ou 0
No loop n0.getValue(&hora); // Busca um valor desconhecido ou 0
EEPROM.write(1, hora); // Grava na EEROM um valor desconhecido ou 0
Como não entendi, por favor me explique que logica usou para este code?
RV mineirin
Boa tarde RV mineirin , queria te agrader por se mostrar empenhado a me ajudar, nao esta sendo facil lidar com essa tela, tenho conhecimento mas não suficiente para reparar esse erro.
Estou te enviando a ino totalmente comentada para tentar te passar a ideia do projeito, esta faltando muita coisa nessa ino porem é apenas para testar o Envio e amarzenamento do numero na tela, muito obrigado pela ajuda.
Estou tentando gravar o valor nesse campo da tela, os demais estao desativados ate concluir o teste inicial do projeto.
Boa tarde JPMN, (se não gosta que te chame pelas iniciais, avise),
Estou devolvendo o seu code, mas inclui 3 linhas de impressão para ver o que aparece em 3 momentos na variável hora.
Por favor, rode o code e depois copie os dados do serial monitor e post aqui para
que possa vê-los.
RV mineirin
Boa noite mineirin RV, fiz o teste... esta salvando na eemprom sim, porem nao retorna na tela display, em teste isolado declarando o valor exemplo hora=01; manualmente no codigo ele retorna a tela sem nenhum problema, creio que tem alguma forma de enviar o valor de forma isolada pois acredito que o problema esta no getvalue e setvalue do display, quando aberto a pagina de modificação ele ja envia valor 0, fiz o teste com o serial e observei isso, ou seja altero o valor e salva, mas quando vou na tela de modificação o valor se declara 0 sozinho.
Dados serial do Ino modificado por voce.
loop_2 A
n0.val=10⸮⸮⸮get n0.val⸮⸮⸮loop_1 A
loop_2 A
n0.val=10⸮⸮⸮get n0.val⸮⸮⸮
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por