INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Temperaturdaten auf EEPROM speichern und später auslesen
26.01.2014, 17:56 (Dieser Beitrag wurde zuletzt bearbeitet: 26.01.2014 18:04 von Jannikcool.)
Beitrag #1
Question Temperaturdaten auf EEPROM speichern und später auslesen
Hallo ihr!
In der Schule müssen wir die sogenannte Facharbeit machen. Wir haben uns als Thema ausgesucht, den Arduino als Wetterstation zu programmieren und ihn dann dank eines Heißluftballons nach oben zu schicken! Angel
Wir wollen dort oben unter anderem die Temperatur messen und die gemessene Temperatur dann in den EEPROM speichern. Das Messen stellt für uns kein Problem dar, das Speichern jedoch schon. Ich habe zwei Sketche geschrieben: Einen zum Schreiben und einen zum Auslesen. Ich habe das Gefühl dass das Schrieben klappt, jedoch am Auslesen hakt es etwas. Könntet ihr bitte einen Blick darüber werfen? Das wäre super nett!

Temperatur lesen und auf EEPROM schreiben:
Code:
#include <EEPROM.h>

int address = 0;

const unsigned int TEMP_SENSOR_PIN = 0;
const float SUPPLY_VOLTAGE = 5000;
const unsigned int BOUD_RATE = 9600;

void setup() {
  Serial.begin(BOUD_RATE);
}

void loop() {
  int val = analogRead(get_temperature()) / 4;
  EEPROM.write(address, val);
  address = address + 1;
  if (address == 512)
    address = 0;
  delay(1000);
}
  
const float get_temperature() {
const int sensor_volate = analogRead(TEMP_SENSOR_PIN);
const float voltage = sensor_volate *(SUPPLY_VOLTAGE / 1024);
return voltage / 10;
}

Temperatur vom EEPROM auslesen:
Code:
#include <EEPROM.h>

int address = 0;
byte value;

void setup() {
  Serial.begin(9600);
}

void loop() {
  value = EEPROM.read(address);
  Serial.print(address);
  Serial.print(" EEPROM POSITION   ");
  Serial.print(value);
  Serial.print(" Gard  ");
  Serial.println();
  address = address + 1;
  if (address == 512)
    address = 0;
  delay(1000);
}

Sketch zum puren Temperaturmessen:
Code:
/* Test for the Temperature Sensor LM35CZ */
#include <EEPROM.h>

int addr = 0;
const unsigned int TEMP_SENSOR_PIN = 0;
const float SUPPLY_VOLTAGE = 5000;
const unsigned int BOUD_RATE = 9600;

void setup() {
Serial.begin(BOUD_RATE);
}

void loop() {
Serial.print(get_temperature());
Serial.println(" C");
int val = analogRead(0) / 4;  
EEPROM.write(addr, val);
addr = addr + 1;
if (addr == 512)
  addr = 0;
  
delay (1000);
}

const float get_temperature() {
const int sensor_volate = analogRead(TEMP_SENSOR_PIN);
const float voltage = sensor_volate *(SUPPLY_VOLTAGE / 1024);
return voltage / 10;
}

Hier noch den aufgebauten Arduino:
[Bild: 2014-01-26%2017.20.36.jpg]

Ich habe den Arduino Uno R3 und beim Temperatursensor handelt es sich um den LM35cz. Solltet ihr noch Fragen haben, dann stellt doch einfach eine Frage.


Angehängte Datei(en) Thumbnail(s)
   

.ino  NEU_TEMP_EEPROM_READ.ino (Größe: 356 Bytes / Downloads: 233)
.ino  NEU_TEMP_EEPROM_WRITE.ino (Größe: 548 Bytes / Downloads: 165)
.ino  _5_Sek_Temp_Kopie.ino (Größe: 603 Bytes / Downloads: 152)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.01.2014, 22:26
Beitrag #2
RE: Temperaturdaten auf EEPROM speichern und später auslesen
Du hast oben EEPROM.write(address, val); gemacht und willst javal dann
in den EEPROM schreiben.

Welche werte kommen bei val überhaupt raus ? Lass sie dir mal mit Serial.print ausgeben.
Denn du kannst pro Adresse im EEPROM nur ein Byte speichern. Also sollte der Wert val nicht größer als 255 sein.

Ansonsten musst du das so machen:

EEPROM.write(adress,highByte(val));
EEPROM.write(adress,lowByte(val));

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.01.2014, 18:01 (Dieser Beitrag wurde zuletzt bearbeitet: 27.01.2014 18:02 von Jannikcool.)
Beitrag #3
RE: Temperaturdaten auf EEPROM speichern und später auslesen
(26.01.2014 22:26)sven1277 schrieb:  Du hast oben EEPROM.write(address, val); gemacht und willst javal dann
in den EEPROM schreiben.

Welche werte kommen bei val überhaupt raus ? Lass sie dir mal mit Serial.print ausgeben.
Denn du kannst pro Adresse im EEPROM nur ein Byte speichern. Also sollte der Wert val nicht größer als 255 sein.

Ansonsten musst du das so machen:

EEPROM.write(adress,highByte(val));
EEPROM.write(adress,lowByte(val));

Gruß

Danke hat jetzt nach etlichen Stunden probieren endlich geklappt. Der "value"-Wert war einfach Falsch! Vielen vielen Dank! Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  API auslesen von Coindesk! Gandalf 1 231 15.01.2018 15:34
Letzter Beitrag: Tommy56
Star BME680 IAQ Wert auslesen Bitklopfer 7 490 08.01.2018 11:48
Letzter Beitrag: Bitklopfer
  Floatwerte in eEPROM schreiben/lesen Diskusguppy 1 312 28.12.2017 20:38
Letzter Beitrag: Tommy56
  Kleiner Denkanstoß - Auslesen eines KY-040 Encoders Stargazer 26 1.142 20.12.2017 16:13
Letzter Beitrag: Stargazer
  Arduino Uno - einen digitalen Pin mit nodeMCU 12E auslesen Stargazer 6 346 17.12.2017 17:40
Letzter Beitrag: hotsystems
  MPU6050 / GY521 auslesen und verstehen Hitikatus 3 703 30.09.2017 11:48
Letzter Beitrag: Hitikatus
  EEPROM ardun 3 653 13.04.2017 10:10
Letzter Beitrag: Bitklopfer
  Arduino Serielle Schnittstelle auslesen mit Visual Basic Obermuda 1 863 29.01.2017 17:02
Letzter Beitrag: hotsystems
  Variable über EEPROM in ein Script einbinden... Badger1875 5 1.022 01.01.2017 15:08
Letzter Beitrag: Tommy56
  Mit dem Arduino JSON Webseiten auslesen seb201 3 918 05.12.2016 22:25
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste