4 cijfers op EEPROM, highbyte/lowbyte??

Arduino specifieke Software
Berichten: 2
Geregistreerd: 25 Jun 2017, 22:31

4 cijfers op EEPROM, highbyte/lowbyte??

Berichtdoor GWNICK » 25 Jun 2017, 22:36

Hallo Mensen,
Ik heb een vraag...
Ik wil een 4 cijferig getal opslaan op de eeprom van de arduino.
Helaas kunnen hier per adres maar 3 getallen op...
Nu heb ik al iets geprobeerd met de highbyte en de lowbyte
Zou iemand mij dit kunnen uitleggen?
mvg Nick

Advertisement

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

Re: 4 cijfers op EEPROM, highbyte/lowbyte??

Berichtdoor Koepel » 25 Jun 2017, 22:55

Hallo.

Kun je laten zien wat je geprobeerd hebt, dat praat gemakkelijker.

Wat is een vier cijferig getal bijvoorbeeld. Bedoel je een leesbare tekst in ASCII, of een integer die tot 9999 kan lopen, of vier aparte integers ?

Met EEPROM.write() en EEPROM.read() kun je één byte schrijven en lezen. Een byte is één teken, of een cijfer van 0...255.
Met EEPROM.put() en EEPROM.get() kun je een heel blok data schrijven en lezen.

Berichten: 2
Geregistreerd: 25 Jun 2017, 22:31

Re: 4 cijfers op EEPROM, highbyte/lowbyte??

Berichtdoor GWNICK » 26 Jun 2017, 17:29

Ja hoor
ik wil een integer opslaan van 4 getallen.
Ik maak een electronisch slot met een knop waarmee men een nieuw wachtwoord kan instellen.
Maar zodra men de arduino opstart is dit nieuwe wachtwoord natuurlijk weer gereset...
'password' is de variabele waarin het wachtwoord staat.
Hier is het stukje waarin het wachtwoord verander
Code: Alles selecteren
  password = tempPassword; // Nieuw wachtwoord opgeslagen
            EEPROM.put(100,password);

en aan het begin van de loop wil ik dit neerzetten:

Code: Alles selecteren
password = EEPROM.read(100);


dit alles zou werken met een wachtwoord van 3 cijfers
maar ik wil het proberen met 4

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

Re: 4 cijfers op EEPROM, highbyte/lowbyte??

Berichtdoor Koepel » 26 Jun 2017, 21:45

De EEPROM.read() hoort niet bij de EEPROM.put().

Of .read() en .write().
Of .put() en .get().

Lees de reference eens door. Begin hier: https://www.arduino.cc/en/Reference/EEPROM

Ik heb nog steeds moeite met je integer van 4 getallen.
Stel dat je een Arduino Uno of Mega hebt, dan is een 'int' een 16-bit signed integer en daar past natuurlijk een getal in van vier cijfers. Met vier cijfers bedoel ik een waarde van 0 tot en met 9999.

Wanneer je zowel een .put() als een .get() met een integer doet, dan zou het goed moeten gaan.

Gebruikers-avatar
Berichten: 116
Geregistreerd: 23 Dec 2011, 00:11
Woonplaats: Enschede

Re: 4 cijfers op EEPROM, highbyte/lowbyte??

Berichtdoor bigred » 01 Jul 2017, 19:37

Normaal kun je maar 1 byte (0-255) naar een eeprom adres schrijven.

Ik heb zoiets ooit gedaan door het getal in 2 stukken op te delen en in 2 eeprom adressen op te slaan.

Code: Alles selecteren
void writeeeprombreakreleasedelay() {
  int eepromhigh =  breakreleasedelay / 100;
  int eepromlow = breakreleasedelay - (eepromhigh *100);
  int eepromadres = (2);
  EEPROM.write(eepromadres, eepromlow);
  EEPROM.write(eepromadres + 1, eepromhigh);
}


Waarin breakreleasedelay het getal bevat dat ik op wil slaan.
Zorg wel dat breakreleasedelay niet groter kan zijn dan 4 cijfers (in theorie niet groter dan 25599) anders gaat het fout.

Natuurlijk moet je daarna de boel weer bij elkaar optellen:
Code: Alles selecteren
 
void readeeprombreakreleasedelay() {
  int eepromadres = (2);
  breakreleasedelay = (EEPROM.read(eepromadres) + (EEPROM.read(eepromadres + 1) * 100))
}

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 20 gasten