Go Down

Topic: Gravando valores EEPROM (Read 3941 times) previous topic - next topic

lucas-appr2

Ola Pessoal!

Mais uma vez estou aqui perguntando algo, rsrs.
Montei um voltimetro com arduino, mas as vezes preciso gravar o valor que ele esta exibindo no LCD na memoria EEPROM, sei que e possivel mas nao sei como. Preciso gravar numero com 2 casas decimais. Alguem pode me ajudar?
Achei algo do tipo na biblioteca do arduino mas ele so grava valor exato e quando coloco decimal nao funciona.


Obrigado,
Lucas

fbrenomoura

Aqui tem um exemplo que encontrei:

#include <EEPROM.h>

void setup()
{
  for (int i = 0; i < 512; i++)
    EEPROM.write(i, i);
}

void loop()
{
}

acho que é mais ou menos oque você procura, não ?

lucas-appr2

Nao, esse e o que eu encontrei tambem e ele nao grava numeros decimais...

bubulindo

Que código estás a usar para verificar o que gravaste na EEPROM?
This... is a hobby.

AlxDroidDev

EEPROMs não gravam números decimais, pois ela não conhece "tipos de dados", apenas bytes sem qualquer representação. Você é quem tem que fazer o tratamento disto no seu código.

Uma maneira é gravar 2 números inteiros: um para a parte inteira e outro para a parte decimal. Gravação e leitura são momentos distintos para cada um e seu código é quem faz a soma deles.

Só de curiosidade, qual IC de EEPROM você está usando?
Some of my projects:
Shield for DS1337+, DS1624 and AT24C1024B (RTC, temp & mem): http://forum.arduino.cc/index.php/topic,126197.0.html
CHDK Camera remote shutter (BT, IR, USB): http://forum.arduino.cc/index.php?topic=295377.0

bubulindo


Só de curiosidade, qual IC de EEPROM você está usando?


EEPROM interna.

O exemplo funciona... mas apenas um quarto... daí ser importante saber como é que ele está a verificar a escrita na EEPROM. Ainda assim, nada como fazer isso como deve ser.

http://arduino.cc/en/Reference/EEPROM

Tem um exemplo para escrever e outro para ler.
This... is a hobby.

phalgus

kra da uma olhada nisso :

http://arduiniana.org/libraries/flash/

Talvez lhe seja util...

lucas-appr2

Vi o exemplo mas nao entendi muito bem.

Um de voces me respondeu que eu poderia separar o valor antes da virgula e o valor depois da virgula. Como eu faria isso?

Obrigado,
Lucas

bubulindo

Code: [Select]


unsigned char decimas=7, unidade=4;

setup(){

EEPROM.write(0, unidade);
EEPROM.write(1, decimas);
delay (1000);
Serial.begin(19200);

Serial.print( EEPROM.read(0) );
Serial.print(".");
Serial.print( EEPROM.read(1) );
}

void loop() {
}



Tens o código do LCD para ver que tipo de dados estás a apresentar?
This... is a hobby.

lucas-appr2

A parte de exibir e facil (nao tenho aqui, estao em meu Mac) mas ainda nao e isso o que eu preciso.

Eu preciso separar o seguinte numero:

taravolt = 3.94;

Eu preciso gerar 2 variaveis, uma antes do ponto e uma depois do ponto. E possivel fazer isso com o Arduino?

mmoscz

#10
Sep 05, 2012, 05:48 am Last Edit: Sep 05, 2012, 05:52 am by mmoscz Reason: 1
faz assim
Code: [Select]

taravolt = 3.94;
int inteiro = (int)taravolt;
int decimal = (int)(taravolt * 100);


para gravar na EEPROM os bytes de um float
Code: [Select]

union FLOAT_tag {byte b[4]; float val;} FLOAT_Union;

FLOAT_Union.val = 3.34; // Aqui recebe o valor de float;
EEPROM.write(0, FLOAT_Union.b[0]); // Aqui grava cada um dos bytes do FLOAT
EEPROM.write(1, FLOAT_Union.b[1]);
EEPROM.write(2, FLOAT_Union.b[2]);
EEPROM.write(3, FLOAT_Union.b[3]);

4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP

lucas-appr2

Belezinha vou fazer aqui os testes. Agora como eu faria pra juntar 2 variaveis? No PHP eu sei que posso fazer assim:

$var1 = 'lucas';
$var2 = 'm.';

$var3 = "$var1 $var2";


Como eu faco isso no arduino?

bubulindo

Acho que perceberes um pouco mais sobre tipos (algo que o PHP não é muito famoso) facilitaria isto.

Regra geral tens de converter os dados que tens para string (não String) e depois concatenar strings (concat() ).
This... is a hobby.

lucas-appr2

Ola bubulindo.

Como eu faria isso? Tem como dar um exemplo?


obrigado.

neuron_upheaval

O que exatamente você quer juntar? Duas strings? Juntar para que, exatamente? Escrever na serial?

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy