Werte Automatisch in einem Array speichern

Guten Tag zusammen,

ist es möglich, Werte automatisch in Array Indexen zu speichern?

Hintergrund:
Es sollen Kartennummern (RFID) eingespeichert werden, die dann anschließend über das Array verglichen werden sollen. Pro Array Index soll 1 Kartennummer gespeichert werden. Nur wenn ich das für jedes Index wiederhole, sprengt das einfach den Rahmen des Programms.
(Die Werte der Indexe werden anschließend auf einer SD-Karte gespeichert)

Hier ein Programmierbeispiel:

int[] Kartennnummern = new int[50];       //Anlegen eines Arrays mit 50 Indexen

Kartennummern[0]=RFID 1        
Kartennummern[1]=RFID 2
usw...

Ich vermute, dass Deine Karten-ID länger, als int sind. Du willst nicht die Indexe, sondern die ID speichern. Schau doch erst mal nach, wie lang diese bei Deinen RFID sind, dann kann man Abschätzungen über den Speicherbedarf machen.

Gruß Tommy

Konstanten kannst Du auch im Programmspeicher ablegen: PROGMEM. Möglicherweise wäre das Arrays of strings für Deine Anwendung geeignet.

50 mal 7 Byte sind etwa 350 Byte ... wie kommst du zur Aussage

Es geht darum, dass ich das gerne einfach halten würde. Und nicht immer

Kartennummern[0]=RFID 1
Kartennummern[1]=RFID 2
Kartennummern[2]=RFID 3

eintippen muss.

Und müssen deine UID's wirklich im RAM liegen? Reicht nicht das Speichern auf der SD-Karte wie in deinem anderen Thread angedeutet?
[/quote]

Hatte ich vergessen dabei zu schreiben, ja ich Speicher das alles auf einer SD-Karte. Trotzdem hätte ich es gerne, dass die Arduino jedes mal wenn eine neue Kartennummer erkannt wird, diese automatisch in ein neues Index des Arrays speichert. (Der wert des Indexes wird dann auf der SD-Karte gespeichert)

Tommy56:
Ich vermute, dass Deine Karten-ID länger, als int sind. Du willst nicht die Indexe, sondern die ID speichern. Schau doch erst mal nach, wie lang diese bei Deinen RFID sind, dann kann man Abschätzungen über den Speicherbedarf machen.

Gruß Tommy

Stimmt. Die ID's sind 6-7 stellig, also statt int Long verwendet.

LneWolf96:
Trotzdem hätte ich es gerne, dass die Arduino jedes mal wenn eine neue Kartennummer erkannt wird, diese automatisch in ein neues Index des Arrays speichert. (Der wert des Indexes wird dann auf der SD-Karte gespeichert)

Das würde ich als Lernmodus bezeichnen, wo eine neue ID gelesen und gespeichert wird. Wenn Du alle RFIDs nacheinender anlernst, brauchst Du überhaupt keine ID zu tippen.

Ein Speichern im Programmspeicher wie in #2 vorgeschlagen, ist dann nicht möglich.

Ich biete ein uint64_t

Hi

Die RFID-IDs sind - meines Wissen - in Dezimal - Da kommt man mit24 Bit auf '9999999'dez (0x98967F), mit 32bit auf '999999999'dez (0x3B9AC9FF) - sollte reichen.

MfG

agmue:
Das würde ich als Lernmodus bezeichnen, wo eine neue ID gelesen und gespeichert wird. Wenn Du alle RFIDs nacheinender anlernst, brauchst Du überhaupt keine ID zu tippen.

Was genau meinst du mit dem Lernmodus? Hab mit Arduino jetzt schon einiges Programmiert, aber noch nichts von dem Lernmodus gehört :'D

noiasca:
Long variables are extended size variables for number storage, and store 32 bits (4 bytes)
könntest aber eine zweite uint32_t / unsigned long nehmen und dort die restlichen 3 bytes abspeichern.

Nur mal zur Richtigstellung:

In einem Byte kriegt man locker 2 Ziffern unter (selbst wenn es Hex-Ziffern wären).

Ein uint32_t (unsigned long bei arduino C++) mit 4 Byte kann Zahlen 0 ... 4294967295 (über 9 Dezimal Ziffern oder 8 Hex-Ziffern 0 ... FFFFFFFF) darstellen.

LneWolf96:
Was genau meinst du mit dem Lernmodus?

Beispielsweise drückst Du eine Taste, schaltest damit Dein Programm in den Lernmodus, hälst den RFID vor den Leser und Dein Programm speichert den neuen Code. Nach 10 Sekunden schaltet der Lernmodus wieder ab.

Der Lernmodus kann Teil Deines Programms werden. Anstelle des Tasters geht auch ein RFID-Code, fände ich eleganter.

In

Die ID’s sind 6-7 stellig, also statt int Long verwendet.

habe ich das als 7 stellige Zahl ( 9999999 ) verstanden.
Die würde in ein long passen.
7 Bytes bräuchten natürlich ein uint64_t, oder man arbeitet gleich mit Byte-Arrays.