variable in het geheugen slaan ?

Arduino specifieke Software
Berichten: 8
Geregistreerd: 14 Apr 2016, 17:29

variable in het geheugen slaan ?

Berichtdoor greenfield » 10 Okt 2016, 22:05

Sinds kort ben ik aan het prutsen met een arduino.
En dit gaat allemaal eigenlijk best wel redelijk, maar nu zou ik graag een bepaalde variabele willen opslaan in het geheugen van de arduino.

Ik heb een teller, en die stand altijd bewaar blijven.
Ook als de spanning er af is.

Hoe kan ik dit het beste doen???

mvg een beginner

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: variable in het geheugen slaan ?

Berichtdoor Koepel » 10 Okt 2016, 22:35

Daar is het EEPROM voor.

Bijvoorbeeld bij een Arduino Uno, zit er EEPROM geheugen in de microcontroller zelf.
Dit is de library : https://www.arduino.cc/en/Reference/EEPROM
Daar staan ook een flink aantal voorbeelden.

Je kunt dus een variabele naar het EEPROM schrijven, en die bij het opstarten inlezen.

Het EEPROM kan niet oneindig geschreven worden, ongeveer 100 000 keer.

Als je een variable naar het EEPROM schrijft, dan zou de Arduino uit kunnen gaan terwijl je aan het schrijven bent, dan is die waarde in het EEPROM niet goed meer. Er zijn dus inderdaad apparaten die zo slecht geprogrammeerd zijn, dat ze hier de fout in gaan of niet herkennen als de gegevens onjuist zijn. Zoals bij sommige Philips LCD TVs die groen beeld gaven als er iets mis ging.

Begin met EEPROM.read() en EEPROM.write().

Hieronder een voorbeeld dat een teller onthoudt en een Arduino Uno in één dag heeft gesloopt. Dit is echt geen grap, het kan anderhalve dag duren, of twee dagen, maar na een tijdje is het EEPROM echt stuk.
Code: Alles selecteren
// With single byte
// The very first location is used to store the counter.

#include <EEPROM.h>

byte count;

void setup()
{
  Serial.begin( 9600);
  Serial.println( "Started");
  Serial.println( "Disconnect the Arduino, and it remembers the count");
  Serial.println( "Warning!   The Arduino is broken after running this sketch for one day");

  count = EEPROM.read(0);       // from EEPROM location 0

  Serial.print( "Read from EEPROM: ");
  Serial.println( count);
}

void loop()
{
  Serial.println( count);
  count++;

  // Write value every second.
  // The EEPROM is broken after 100 000 writes, that is 1 day.
  EEPROM.write( 0, count);

  delay( 1000);
}

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: variable in het geheugen slaan ?

Berichtdoor shooter » 11 Okt 2016, 18:36

dus alleen schrijven als de variabele is verandert.
je zou ook de voeding kunnen scannen als deze uitgaat (dan houd een condensator nog even spanning erop en kun jij snel schrijven.
je kunt ook een RTC gebruiken (daar zit een batterij op en wat los geheugen die je via I2C kunt vullen.
paul deelen
shooter@home.nl

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: alajowapopimi, Google [Bot] en 101 gasten