Offline
Newbie
Karma: 0
Posts: 28
|
 |
« on: September 03, 2012, 07:35:09 pm » |
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
Newbie
Karma: 0
Posts: 6
|
 |
« Reply #1 on: September 03, 2012, 09:39:48 pm » |
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
Newbie
Karma: 0
Posts: 28
|
 |
« Reply #2 on: September 04, 2012, 04:16:42 am » |
Nao, esse e o que eu encontrei tambem e ele nao grava numeros decimais...
|
|
|
|
|
Logged
|
|
|
|
|
'round the world...
Offline
Edison Member
Karma: 19
Posts: 2305
|
 |
« Reply #3 on: September 04, 2012, 07:10:01 am » |
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
Sr. Member
Karma: 8
Posts: 298
Android developer; Arduino enthusiast
|
 |
« Reply #4 on: September 04, 2012, 07:27:47 am » |
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
|
|
|
|
|
'round the world...
Offline
Edison Member
Karma: 19
Posts: 2305
|
 |
« Reply #5 on: September 04, 2012, 09:32:36 am » |
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/EEPROMTem 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
Newbie
Karma: 0
Posts: 28
|
 |
« Reply #7 on: September 04, 2012, 03:37:48 pm » |
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
Edison Member
Karma: 19
Posts: 2305
|
 |
« Reply #8 on: September 04, 2012, 03:50:22 pm » |
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
Newbie
Karma: 0
Posts: 28
|
 |
« Reply #9 on: September 04, 2012, 03:52:17 pm » |
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
Sr. Member
Karma: 2
Posts: 306
|
 |
« Reply #10 on: September 04, 2012, 10:48:42 pm » |
faz assim taravolt = 3.94; int inteiro = (int)taravolt; int decimal = (int)(taravolt * 100);
para gravar na EEPROM os bytes de um float 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
Newbie
Karma: 0
Posts: 28
|
 |
« Reply #11 on: September 05, 2012, 06:01:32 pm » |
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
Edison Member
Karma: 19
Posts: 2305
|
 |
« Reply #12 on: September 05, 2012, 11:34:49 pm » |
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
Newbie
Karma: 0
Posts: 28
|
 |
« Reply #13 on: September 06, 2012, 04:16:33 am » |
Ola bubulindo.
Como eu faria isso? Tem como dar um exemplo?
obrigado.
|
|
|
|
|
Logged
|
|
|
|
|
central nervous system
Offline
Full Member
Karma: 0
Posts: 125
Causing havoc inside your brain since 1980
|
 |
« Reply #14 on: September 12, 2012, 11:56:37 pm » |
O que exatamente você quer juntar? Duas strings? Juntar para que, exatamente? Escrever na serial?
|
|
|
|
|
Logged
|
|
|
|
|
|