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
Mehrere Werte in Eeprom schreiben und auslesen
17.11.2014, 13:46
Beitrag #9
RE: Mehrere Werte in Eeprom schreiben und auslesen
Danke für eure Antworten. Ich habe das jetzt so gemacht. Ist sicherlich nicht professionell, aber es sieht so aus als würde es gehen. Hab jetzt nur keine Zeit mehr
es genau zu testen, muss auf Arbeit.
Danke an alle!!!!!!!!!
Code:
#include <LiquidCrystal.h>
#include <EEPROM.h>
int temp = 0;
int LED=13;
int lampe=6;
int an = 0;
int aus = 0;
int speichern=0;
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
volatile unsigned long alteZeit=0, entprellZeit=20, cal=0;

void setup() {
  Serial.begin(38400);
  lcd.begin(16,2);
  pinMode(LED, OUTPUT);    // LED Pin
  pinMode(2, INPUT);       // Pin 2 ist INT0
  digitalWrite(2, HIGH);   // interner Pull up Widerstand auf 5V
  attachInterrupt(0, interruptRoutine, LOW);
  // Pin 2 (INT 0) geht auf LOW (0V) dann interruptRoutine aufrufen
  pinMode(A1,INPUT);          // Taste AN hoch  
  digitalWrite(A1,HIGH);      // interner pullup Widerstand
  pinMode(A2,INPUT);          // Taste AN runter
  digitalWrite(A2,HIGH);
  pinMode(A3,INPUT);          // Taste AUS hoch  
  digitalWrite(A3,HIGH);      // interner pullup Widerstand
  pinMode(A4,INPUT);          // Taste AUS runter
  digitalWrite(A4,HIGH);
  pinMode(lampe,OUTPUT);
  an=eepromRead(0); // Startwert aus dem EEPROM lesen
  aus=eepromRead(1); // Startwert aus dem EEPROM lesen
}
void loop() {
  //Interupt AN
  if(cal==1) {
    if(readButton(1)) an+=1; // Einschaltwert hoch
    if(readButton(2)) an-=1; // Einschaltwert runter
    lcd.clear();
    lcd.print ( "Einschalten: " );
    lcd.print ( an );
    delay ( 500 );
    if(readButton(3)) aus+=1; // Ausschaltwert hoch
    if(readButton(4)) aus-=1; // Ausschaltwert runter
    lcd.clear();
    lcd.print ( "Ausschalten: " );
    lcd.print ( aus );
    delay ( 500 );
    LcdClearLine(1);
    speichern=1; // Wert verändert, bei verlassen der cal > speichern
  }
  if(speichern==1) {            // Wert soll gespeichert werden
    eepromWrite(0,0);
    eepromWrite(1,0);
    speichern=0;                // Wert wurde gespeichert
  }
  int tempReading = analogRead(temp);
  float tempVolts = tempReading * 1.6 / 1024.0;
  float temp = (tempVolts - 0.5) * 100.0;
  if (temp <=aus )
  digitalWrite(lampe,HIGH);
  Serial.println(an);
  Serial.println(aus);
  //LcdClearLine(1);
  lcd.setCursor(0,0);
  lcd.print("Temp.:");
  lcd.print(temp);
  lcd.write(223);
  lcd.print("C");
  lcd.setCursor(0,1);
  lcd.print("Heizung:");
  lcd.print(an);
  lcd.print ( " / " );
  lcd.print(aus);
  delay(100);
}
int readButton(int pin) {     // Taste einlesen
  if(analogRead(pin) < 500) { // Analog Eingang abfragen
    delay(entprellZeit);            
    if(analogRead(pin) < 500)
      return 1;               // war gedrückt
  }
  return 0;                   // war nicht gedrückt
}
void interruptRoutine() {
  if((millis() - alteZeit) > entprellZeit) {
    // innerhalb der entprellZeit nichts machen
    digitalWrite(LED, !digitalRead(LED)); // LED umschalten
    alteZeit = millis(); // letzte Schaltzeit merken
    cal = !cal; // Einstellmodus wechseln  
  }
}
int eepromRead(int adr) {
an = EEPROM.read(0);
aus = EEPROM.read(1);
   return aus;
} //eepromReadInt
void eepromWrite(int adr, int wert) {
// Integer in das EEPROM schreiben
  EEPROM.write(0, an);
  EEPROM.write(1, aus);
  return;
}
// hilfsfunktion zum leeren einer zeile
void LcdClearLine(int r)
{
  lcd.setCursor(0,r);
  for (int i = 0; i < 16; i = i + 1)
  {
    lcd.print("            ");
  }
}
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.11.2014, 16:40
Beitrag #10
RE: Mehrere Werte in Eeprom schreiben und auslesen
(17.11.2014 13:46)Kurt schrieb:  Danke für eure Antworten. Ich habe das jetzt so gemacht. Ist sicherlich nicht professionell, aber es sieht so aus als würde es gehen. Hab jetzt nur keine Zeit mehr
es genau zu testen, muss auf Arbeit.
Danke an alle!!!!!!!!!

Hallo Kurt,
ja man siehts im Code das du da noch einiges geradeziehen mußt...
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.11.2014, 20:24
Beitrag #11
RE: Mehrere Werte in Eeprom schreiben und auslesen
Zitat:Hallo Ricardo,
schön dich hier mal wieder zu lesen...hattest Urlaub im Webfreien Raum ?
Dieses Blockweise lesen und schreiben vom EEPROM ist aber nur in der AVR Lib enthalten und nicht in der EEPROM Lib von der Arduino IDE - richtig so ?
Moin Bitklopfer,

yo, mich gibts noch. Ich hatte schweinemäßig viel zu tun (100 PCs XP-> Win7 / Server virtualisieren / eben schnell mal ein Sicherungssystem in AutoIT schreiben etc.). Danach kam dann erstmal eine fette Bronchitis ... Um nicht ganz den Arduino zu verlernen habe ich angefangen eine Lib für PullDown-Menüs auf dem GLCD zu schreiben...Noch 1 oder 2 Wochen dann sollte die laufen ;-)

Zu deiner Frage: Ja, die Routinen stehen im AVR LIBC Package. Die älteren Versionen der IDE wollten wohl nicht damit umgehen weil die mitgelieferte LIBC Version die block-Module so noch nicht drin hatte (glaube ich zumindest).

Glad to be back Big Grin

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.11.2014, 21:28 (Dieser Beitrag wurde zuletzt bearbeitet: 17.11.2014 21:30 von Bitklopfer.)
Beitrag #12
RE: Mehrere Werte in Eeprom schreiben und auslesen
(17.11.2014 20:24)rkuehle schrieb:  Moin Bitklopfer,

yo, mich gibts noch. Ich hatte schweinemäßig viel zu tun (100 PCs XP-> Win7 / Server virtualisieren / eben schnell mal ein Sicherungssystem in AutoIT schreiben etc.). Danach kam dann erstmal eine fette Bronchitis ... Um nicht ganz den Arduino zu verlernen habe ich angefangen eine Lib für PullDown-Menüs auf dem GLCD zu schreiben...Noch 1 oder 2 Wochen dann sollte die laufen ;-)

Zu deiner Frage: Ja, die Routinen stehen im AVR LIBC Package. Die älteren Versionen der IDE wollten wohl nicht damit umgehen weil die mitgelieferte LIBC Version die block-Module so noch nicht drin hatte (glaube ich zumindest).

Glad to be back Big Grin

Grüße Ricardo

Hi Ricardo,
na dann hattest ordentlich was an der Backe...bin froh wenn meine handvoll Kisten hier laufen...

Hoffe mal dir gehts wieder gut und kannst wieder gerade kucken...
...weil Grafik-LCD's gibt es gerade bei Electronic Assembly zum kennenlernen, ein Set mit USB Demo Board und 2 LCD's (mit oder ohne Grafik) nach Wahl samt Backlight für 60 Euro +MWst + 8,50 Porto. Achso ich glaub man braucht dazu den Werbeflyer zum bestellen. Kann ich aber zuschicken als PDF Angel

Ahja, war mir doch so...hab ja auch schon mit dem EEPROM was gemacht. Im AVR Studio hatte ichs dann ausm Datenblatt abgetippt.

lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Mit dem Arduino JSON Webseiten auslesen seb201 3 73 Gestern 22:25
Letzter Beitrag: Tommy56
  Data Logger Daten auf SD Card schreiben Crichton 12 293 22.11.2016 18:32
Letzter Beitrag: Crichton
  Messchieber auslesen mit nem UNO roadcaptain 8 293 15.11.2016 14:30
Letzter Beitrag: Tommy56
  U-blox Neo 6M GPS auslesen Matthias_Arduino 15 871 09.11.2016 16:40
Letzter Beitrag: AvrRobot
  mehrere Taster entprellen Kitt 15 508 24.10.2016 21:17
Letzter Beitrag: georg01
  mit Attiny85 Feuchtigkeitssensor auslesen toto1975 17 557 19.08.2016 22:40
Letzter Beitrag: hotsystems
  Taster für mehrere Funktionen matthias3579 5 345 16.08.2016 16:00
Letzter Beitrag: StephanBuerger
  Serial Monitor ASCII 1 schreiben BennIY 11 580 01.08.2016 16:42
Letzter Beitrag: Mathias
  Gewichteten Durchschnitt berechnen, 20 Werte in fortlaufender Variable speichern TimeMen 10 468 03.07.2016 09:00
Letzter Beitrag: Binatone
  Ausgabe druckt immer 2 Werte anstatt nur einen. Finde den Fehler nicht TimeMen 24 736 02.07.2016 14:18
Letzter Beitrag: hotsystems

Gehe zu:


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