variable in het geheugen slaan ?
3 berichten
• Pagina 1 van 1
- greenfield
- Berichten: 8
- Geregistreerd: 14 Apr 2016, 17:29
variable in het geheugen slaan ?
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
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
Re: variable in het geheugen slaan ?
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.
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);
}
Re: variable in het geheugen slaan ?
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.
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
shooter@home.nl
3 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 6 gasten