Pages: [1]   Go Down
Author Topic: Gravando valores EEPROM  (Read 2146 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Ceará / Brasil
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3244
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Que código estás a usar para verificar o que gravaste na EEPROM?
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

BHZ, MG, Brazil
Offline Offline
Sr. Member
****
Karma: 10
Posts: 346
Android developer; Arduino enthusiast
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Learn to live: Live to learn.
Showing off my work: http://arduino.cc/forum/index.php/topic,126197.0.html

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3244
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

kra da uma olhada nisso :

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

Talvez lhe seja util...
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3244
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:

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?
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Brasil
Offline Offline
Sr. Member
****
Karma: 2
Posts: 315
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

faz assim
Code:
taravolt = 3.94;
int inteiro = (int)taravolt;
int decimal = (int)(taravolt * 100);

para gravar na EEPROM os bytes de um float
Code:
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]);

« Last Edit: September 04, 2012, 10:52:11 pm by mmoscz » Logged

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


Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3244
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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() ).
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ola bubulindo.

Como eu faria isso? Tem como dar um exemplo?


obrigado.
Logged

central nervous system
Offline Offline
Full Member
***
Karma: 0
Posts: 135
Causing havoc inside your brain since 1980
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Pages: [1]   Go Up
Jump to: