Hello again,
nun habe ich versucht einige Messwerte im EEPROM des Arduino zu speichern und auszulesen ... erfolglos.
#include "DHT.h"
#include "EEPROM.h"
#define DHTPIN 50
#define DHTTYPE DHT22
int addr = 0;
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
Serial.begin(9600);
dht.begin();
}
void loop()
{
start:
int h = dht.readHumidity();
int t = dht.readTemperature();
if (isnan(t) || isnan(h))
{
goto start;
}
else
{
EEPROM.write(addr, h);
addr = addr + 1;
if (addr == 512)
addr = 0;
EEPROM.write(addr, t);
addr = addr + 1;
if (addr == 512)
addr = 0;
}
delay(1000);
}
Leider weiß ich aber nicht warum.
Nachdem ich den obrigen Sketch etwa eine Minute hab laufen lassen, habe mit Folgendem versucht auszulesen.
#include "EEPROM.h"
int addr = 0;
byte val;
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.print(addr);
Serial.print("\t");
Serial.print(val, DEC);
Serial.println();
addr = addr + 1;
if (addr == 512)
addr = 0;
delay(100);
}
Der Serial Monitor zeigte mir
1 0
2 0
3 0
...
Da ich als Wert nur zweistellige Zahlen erwarte ( % und Temp, wobei ein- oder dreistellige Zahlen sehr unwahrscheinlich sind), habe ich
// need to divide by 4 because analog inputs range from
// 0 to 1023 and each byte of the EEPROM can only hold a
// value from 0 to 255.
int val = analogRead(0) / 4;
vernachlässigt.
Hat schon jemand meinen Fehler gefunden?
Kann der Mega2560 4096 Byte speichern?
Kann ich das Auslesen beim letzen Byte stoppen? Das Programm anhalten?
Danke.
Lg Jim