Como usar eeprom arduino para salvar os dados entre os ciclos de energia

Você sabia que o Arduino pode armazenar dados quando está desligado? Não o esboço armazenados na memória flash. Estou falando de dados variáveis ​​em EEPROM. Junte-me como eu mostrar-lhe como ler e escrever para ela, e que ela pode fazer para seus projetos.

Se você é novo no Arduino, certifique-se de verificar a nossa Guia do iniciante.Começando com o Arduino: Guia de um novatoComeçando com o Arduino: Guia de um novatoArduino é uma plataforma electrónica de prototipagem de código aberto baseado em flexível e fácil de usar hardware e software. É destinado a artistas, designers, entusiastas e qualquer pessoa interessada em criar objetos ou ambientes interativos.consulte Mais informação

O que é EEPROM?

EEPROM significa prom eletricamente apagável. É um tipo de memória não-volátil. Não se preocupe se você não entender o que nada disso significa. Ele simplesmente armazena dados mesmo com o poder removido (ao contrário RAM, que necessitam de electricidade para reter todos os dados).

EEPROM exemplo tiro

EEPROM é construída em uma miríade de processadores, tais como a disposição de portas de campo programável (FPGA) utilizado no Matrix Creator HAT Pi. Todos os Arduinos tem EEPROM disponíveis, mas a capacidade varia por modelo. Certifique-se de que você dê uma olhada no nosso guia de compra para mais detalhes sobre cada placa.Matrix Criador para Raspberry Pi comentárioMatrix Criador para Raspberry Pi comentárioO Criador Matrix é um canivete suíço para o seu Pi, com 15 sensores, um conjunto de protocolos de comunicação, um anel de LEDs RGB, um array de microfones, e muito mais!consulte Mais informação

Video: EEPROM de Arduino

Como funciona?

EEPROM é eletricamente apagada e programado usando Fowler-Nordheim tunneling. Você não precisa saber os detalhes técnicos para ser capaz de usá-lo. A premissa básica é que a eletricidade é usada para alterar os dados binários (o que é binária). Ele pode ser lido, apagado, e re-escrita eletronicamente.

Video: EEPROM: Como guardar y leer datos con PSoC5LP

Felizmente, o Arduino Idioma torna mais fácil para alterar os dados, tudo sem a necessidade de uma licenciatura em ciência da computação.

EEPROM Plano

Expectativa de vida

Embora seja fácil de usar EEPROM no Arduino, ele tem uma vida útil limitada. EEPROM é especificado para lidar com 100.000 leitura / apagar ciclos. Isto significa que você pode escrever e, em seguida, apagar / re-gravação de dados 100.000 vezes antes da EEPROM se tornará instável. Na realidade, Atmel (os fabricantes de Arduino “Chip”) de semicondutores pode lidar com um número maior ou menor de ciclos, de acordo com as tolerâncias de todos e cada processador.

EEPROM Plano

Uma vez que um local tem sido escrito e apagado muitas vezes pode começar a se tornar não confiável. Pode não retornar os dados corretos, ou devolver o valor de um bit vizinho.

Isto pode soar como um monte de gravações, mas pode ser fácil chegar a este limite, se a leitura ea escrita de programação (em um laço, por exemplo). Leitura de dados não degrada o silício, única escrita faz. Você pode ler dados de EEPROM, tanto quanto você gosta sem medo!

É importante notar que esse limite se aplica a cada local de memória. Seu Arduino pode ter 1.000 ou mais posições de memória disponíveis no EEPROM, então se você escrever muitas vezes para um local, é apenas esse local afetado, e não qualquer um dos outros. Mais tarde eu vou estar a discutir nivelamento de desgaste, que pode reduzir o desgaste EEPROM, distribuindo os dados de maneira uniforme - algo que SSDs fazer uso de.Como estimar a vida útil restante da sua SSDComo estimar a vida útil restante da sua SSDTodos os SSDs têm uma duração limitada devido ao escrever ciclos (embora este tempo de vida é muito mais do que se poderia pensar). Veja como você pode estimar como você está perto do fim.consulte Mais informação

O que é útil para?

EEPROM é incrivelmente útil para seus projetos Arduino. Como ele se lembra de dados mesmo quando a energia é removida, você pode armazenar o estado do Arduino. Talvez você poderia construir um torre de laser que lembra a sua posição ou quanto “munição” é remanescente. Você poderia usá-lo para controlar seus aparelhos, e log quantas vezes o seu aparelho foi ativado.

EEPROM é mais adequado para coisas como configurações ou de alta pontuação. Se você quer escrever regularmente dados complexos, talvez considerar um escudo ethernet (Com slot de SD) ou um Raspberry Pi.Dê seu projeto Arduino seu próprio mini-Webserver, com uma blindagem EthernetDê seu projeto Arduino seu próprio mini-Webserver, com uma blindagem EthernetUm tempo atrás, eu mostrei-lhe como configurar um sistema de controle de internet para o seu Arduino - mas tinha que ficar ligado a um computador através de USB, a fim de manter a conexão internet ....consulte Mais informação

EEPROM Plano

Leia e escreva

Agora que a teoria está fora do caminho, vamos olhar para como ler e escrever alguns dados! Em primeiro lugar, incluir a biblioteca (este vem com o Arduino IDE):

#incluir lt;EEPROM.hgt;

Agora escrever alguns dados:

EEPROM.Escreva(0, 12)-


Este escreve o número 12 a localização EEPROM 0. Cada gravação leva 3,3 milissegundos (Senhora, 1000 ms = 1 segundo). Observe como você não pode escrever letras (Caracteres), Apenas os números de zero a 255 são permitidos. É por isso que EEPROM é ideal para configurações ou pontuações mais altas, mas não tão bom para os nomes dos jogadores ou palavras. É possível armazenar texto usando este método (você pode mapear cada letra do alfabeto a um número), no entanto, você precisa ter vários locais de memória - um local para cada letra.

Veja como você ler esses dados:

EEPROM.ler(0)-

Zero é o endereço que você escreveu anteriormente. Se você não tenha escrito para um endereço antes, ele irá retornar o valor máximo (255).

Existem alguns métodos pouco mais úteis disponíveis. Digamos que você queria guardar uma casa decimal ou string:

EEPROM.colocar(2,"12,67")-

Isso grava os dados em vários locais - algo que seria fácil escrever-se, mas útil no entanto. Você ainda terá de manter o controle de quantos locais este escreveu para, para que você não acidentalmente substituir seus dados! Você tem que usar o obter método para recuperar esses dados novamente:

Video: GPS + USO DE LA EEPROM

float f = 0.00f-EEPROM.obter(2, f)-

O valor de get é armazenado no flutuador f variável. Observe como este é inicializado com 0.00f como o valor. o f permite que o compilador sabe que você pode querer armazenar um grande número nesta variável, por isso configura algumas configurações adicionais durante a compilação.

A documentação EEPROM no site do Arduino tem muitos mais exemplos.

nivelamento de desgaste

Desgaste nivelamento é uma técnica usada para reduzir o desgaste e aumentar a vida de EEPROM. Se você estiver trabalhando apenas em um projeto pequeno, você pode não precisar se preocupar com isso.

EEPROM Plano

A coisa mais simples que você pode fazer para preservar a vida EEPROM é limitar suas gravações para um determinado local. Você pode fazer isso através da leitura do endereço em primeiro lugar, e se o valor que você quer escrever já está presente, não há nenhuma necessidade de escrever novamente (lembre-se, a leitura de dados não faz mal). Veja como você faria isso:

int safeWrite(dados int, endereço) {E se(EEPROM.ler(endereço) != dados) {EEPROM.Escreva(endereço, dados)-}}

Isso é um pouco de código simples, no entanto, ele só funciona para inteiros! Em vez de re-inventar a roda, use a função para a biblioteca Arduino EEPROM:

EEPROM.atualizar(endereço, val)-

Este método tem exatamente a mesma assinatura como a Escreva método, embora possa reduzir drasticamente o número de gravações necessárias!

Se você precisa escrever um monte de dados, e estão preocupados com desgaste do silício, você pode manter o controle de quantas gravações que fizer, embora isso usa mais dados. Aqui está uma implementação difícil em pseudocódigo:

endereço var = 0var writeCount = 0E se(writeCount gt; 75,000)writeCount = 0endereço += 1EEPROM.Escreva(endereço, dados)

Você vai precisar para armazenar endereços e writeCount em EEPROM (e writeCount terá de ser dividido em localizações de endereço). A maioria das vezes, esse nível de proteção não será necessário. Arduinos são tão baratos, bem, então você pode achar que é mais fácil comprar um backup!

agora você deve saber o suficiente para fazer alguns projetos impressionantes. Deixe-nos saber se você fizer algo legal! você pode reconhecer todos os dispositivos nas fotos? Deixe-nos um comentário abaixo!


Artigos relacionados