Boa noite!
Galera to em uma luta aqui mas não estou conseguindo gravar o valor 37,73 na EEPROM do arduino alguema ai tem alguma ajuda sobre este assunto. desde ja ficarei muito agradecido.
to usando o modo abaixo:
Para gravar na eeprom
byte hiByte = highByte(temperatura);
byte loByte = lowByte(temperatura);
EEPROM.write(0, hiByte);
EEPROM.write(1, loByte);
para ler a eeprom
byte hiByte = EEPROM.read(0);
byte loByte = EEPROM.read(1);
temperatura = word(hiByte, loByte);
Novamente agradeço qualquer ajuda.
Tags:
para salvar
EEPROM.write(t, *((char*)&temperatura ));
EEPROM.write(t, *((char*)&temperatura + 1));
para ler
*((char*)&temperatura) = EEPROM.read(0);
*((char*)&temperatura + 1) = EEPROM.read(1);
Amigo eu fiz aqui mas ta dando erro.
void setup()
{
Serial.begin(9600);
lcd.begin(20, 4);
DS1307.begin();
pinMode(13, OUTPUT);
pinMode(up, INPUT);
pinMode(dow, INPUT);
pinMode(set, INPUT);
pinMode(esc, INPUT);
pinMode(aquecedor, OUTPUT);
lcd.createChar(0, termo);
*((char*)&temperatura) = EEPROM.read(0);
*((char*)&temperatura + 1) = EEPROM.read(1);
}
void settemperatura()
{ wdt_disable();
delay(1000);
while(st > 0)
{
lcd.clear(); lcd.setCursor(0,0); lcd.print("Definir temperatura");
if(digitalRead(up) == HIGH){temperatura ++;}
if(digitalRead(dow) == HIGH){temperatura --;}
if(digitalRead(set) == HIGH){st = 0;}
lcd.setCursor(9, 1); lcd.print(temperatura);
delay(200);
}
EEPROM.write(t,*((char*)&temperatura ));
EEPROM.write(t, *((char*)&temperatura + 1));
}
O erro é 't' was not declared in this scope.
Eu uso essa solução aqui
para salvar
EEPROM.write(0, *((char*)&temperatura ));
EEPROM.write(1, *((char*)&temperatura + 1));
para ler
*((char*)&temperatura) = EEPROM.read(0);
*((char*)&temperatura + 1) = EEPROM.read(1);
Para ficar claro o que está havendo é o seguinte
*((char*)&temperatura)
*((char*) é um modificador, que transforma de alguma coisa em um array de char.
&temperatura é um ponteiro para a posição de memória onde está temperatura
então *((char*)&temperatura) é um ponteiro para temperatura modificado para um array de char.
O ponteiro aponta sempre para o início da posição de memória.
Quando fazemos EEPROM.write(0, *((char*)&temperatura )), estamos gravando o primeiro byte de temperatura.
EEPROM.write(1, *((char*)&temperatura + 1)) grava o byte da posição do ponteiro + 1.
A leitura segue o mesmo princípio.
*((char*)&temperatura) = EEPROM.read(0), coloca na primeira posição apontada pelo ponteiro o valor lido da EEPROM no endereço 0
*((char*)&temperatura + 1) = EEPROM.read(1), coloca na segunda posição apontada pelo ponteiro o valor lido da EEPROM no endereço 1
Marcelo, funciono perfeitamente.
Muito obrigado.
Bom dia, aproveitando o ganchoo eu estou usando um sensor de temperatura, e onde eu tenho um valor pré-setado
ex:SETPOINT
eu tenho um botão aumentando ( alvo +1 )
eu tneho outro botão diminuindo( alvo -1 )
quando quero deixar em 25°C ele fica, quando eu desligo da bateria/USB o ARDUINO... e ligo... ele volta no 25°C
mesmo usando
EEPROM.write
tenho que fazer condiçoes. ?
Bom, você lê o valor setado na eeprom, quando liga o arduino para carregar essa definição?
eu apaguei toda a programaçao, irei recomeçar aqui. só me da um luz, essa foi a ultima vez que tentei mecher.... eu sei que esta errado se puder me ajudar só nesse detalhe....
quando aperto botao, vai aumentar pra 81, 82 ... pra baixo faz o inverso.. isso eu já fiz... só nao coloquei a programção pq ta mt grande... OBJETIVO: VOU SETAR O SETPOINT E QUERO QUE QUANDO FOR DESLIGADO DA ENERGIA O ARDUINO GUARDA PRA QUANDO RESTABELECER O MESMO VOLTE NA PROGRAMACAO SALVADA....
#include <EEPROM.h>
float Setpoint
Setpoint = 80
voide setup
void loop {
switch (lcd_key)
case botao-alto:{
Setpoint = Setpoint +1;
break;
}
case botao-baixo:{
Setpoint = Setpoint -1;
break;
}
SetpointState[80] = 1;
EEPROM.write(0, SetpointState[80]);
}
Não deu para entender
Toda vez q apertar um dos botões vai salvar? Melhor vc colocar um botão para confirmar.
você tem que gravar assim
EEPROM.write(0, *((char *) &SetpointState);
EEPROM.write(1, *((char *) &SetpointState + 1);
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por