Ola !!!

Boa tarde a todos.

So tenho a agradecer a todos voces do labdegaragem, estou aprendendo muito...

Sou técnico de maquinas de cafe expresso. Recentemente fui chamado ajudar no desenvolvimento de uma maquina de cafe expresso. Estamos no momento desenvolvendo o painel de controle dessa maquina.

Achei a melhor escolha usar o arduino para o controle, porem novato na area de programação.

Ate que eu consegui criar um modelo pra inicio da fase de testes, o problema e que quando desligo a maquina as informações são perdidas.

Ja tentei fazer o tutorial http://labdegaragem.com/profiles/blogs/tutorial-usando-a-eeprom-do-... mais num dei conta.

sera que alguém pode me ajudar a salvar a variável (tempocafe) ?


Abaixo coloco o codigo que escrevi ate o momento:

int pinoLed = 7; // Definindo qual sera o pino do Led.
int button = 2; // Definindo qual sera o pino do botão de cafe
int prog = 3; // Definindo qual sera o pino do botão de programacao
int fimtempocafe;
int initempocafe;
int tempocafe;
boolean stprog = false;

void setup() {
Serial.begin(9600); // define a velocidade para comunicacao serial
Serial.println("Iniciando...");
Serial.println("Auto Teste");
pinMode(button, INPUT);
pinMode(prog, INPUT);
pinMode(pinoLed, OUTPUT);
delay (1000);
Serial.println("Sistema OK...");
}

void loop() {
int state = digitalRead(button); //verfica se o button foi apertado
int state1 = digitalRead(prog); //verfica se o prog foi apertado


if (state1 == HIGH && stprog == true){
Serial.println("Programacao concluida");
delay(500);
fimtempocafe = millis();
digitalWrite(pinoLed, LOW);
stprog=false;
tempocafe = fimtempocafe - initempocafe;
Serial.println(tempocafe);
}

else if ((state1 == HIGH && stprog == false)) {
Serial.println("Iniciando programacao");
Serial.println("Escolha o produto");
delay(500);
stprog=true;

}

else {}

if (state == HIGH ) {
Serial.println("cafe");
digitalWrite(pinoLed, HIGH);
delay(500);
initempocafe = millis();
delay(tempocafe);
Serial.println(tempocafe);
digitalWrite(pinoLed, LOW);

}
else {
}
}

Valew

Exibições: 1059

Responder esta

Respostas a este tópico

andei pesquisando mais sobre o assunto, e descobri a melhor opção para resolver meu problema talvez seja salvar o dado na memoria flash invés da eeprom.

Encontrei uma biblioteca para facilitar isso mais não estou conseguindo usa-la...

Sera que alguém pode me dar uma força com isso?

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

muito obrigado....

Uma pergunta besta, os dados armazenados através da flash, se tornam "permantentes" até serem apagados como na EEPROM ou quanto subir um novo scretch, certo?

Então dá para usar em substituição a biblioteca EEPROM?

Kra no site fala que sim.

Mais eu não consegui fazer... ( mais estou iniciando agora em programação. ainda cometo muitos erros bobos)

Qual seria sua dúvida exatamente em relação a armazenar na eeprom?

eu preciso armazenar o valor da variável  int tempocafe   que sera um valor de  obtido através de um calculo usando valores retornados da função millis();. E depois eu preciso fazer a leitura dessa variável.

Porem não estou sabendo como declarar o address  e o value .

 

as vezes que eu tentei fazer isso o numero da leitura era diferente do numero escrito...

Bem, funciona exatamente como no link que vc postou:


EEPROM.write(address, value);

Onde:

address – posição da memória que será escrito, é um inteiro entre 0 e 1023  (UNO);

value -  valor a ser armazenado inteiro entre 0 e 255 (um único byte).

O endereço fica a seu critério em qual usar. Supondo que vc use a regra que o valor ficará armazenado no endereço 1 da eeprom. Então:


int tempocafe;

EEPROM.write(1, tempocafe);

Quando precisar ler esse valor, é só usar o read:


tempocafe = EEPROM.read(1);

Dessa forma, obteve valores diferentes na leitura?!

Ola !!!

consegui gravar o valor.

Agora  preciso de uma ajuda pra converter os valores...

como eu posso converter o resultado que é obtido em milissegundos (millis()) em um valor de um único byte?

De uma forma geral os valores que terei de guardar irão variar de 1 a 40 segundos e não precisão ter casas decimais.

Muito obrigado.

 

 muito obrigado Fellipe Couto

Consegui terminar ...

Ótimo. Publique como foi que você fez. Boa sorte.

foi simples .

pra salvar na eeprom eu fiz como o Fellipe ensinou.

e para usar o resultado 

millis() / 1000

e guardei como int 

foi so alegria.

Show!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço