Switch Case mit einer sich ändernden Zahl von Cases

Ich arbeite gerade an meine Thermocyler und habe nun das Problem das ist ein Switch Case machen will.
Jedoch habe ich nun das Problem das ich eine Zahle über USB bekommen und ich dann diese Menge an Cases brauche. d.h es mus eine sich ändernde Zahl an cases geben?Mir fallen leider keine Ideen ein.

MFG losspost

Selbst modifizierender Code?
Das ist auf einer Harvard Architektur fast unmöglich.

Nicht selbst modifzierter Code. Ein ganz normales Arduino Programm.Es soll so funktionierne:

Ich bekomme über Serial die Variable cycle gesendet an den Arduino.
Nach der Zahl soll sich dann die Zahl der Case States orientieren. Ich sende eine nicht feste Zahl an Zyklus, Die Temperatur des Zyklus und die Dauer des Zyklus. z.b 3 Zyklen, (100,4,22 Grad), (5Minuten,3Minuten,10 Minuten). Und entsprechend soll er disse durchlaufen. Es soll aber auch möglich sein z.b 6 Zyklen zu senden

Oder kann ich das irgendwie anders lösen

Losspost:
Oder kann ich das irgendwie anders lösen

Oder kann man das Problem sogar irgendwie anders beschreiben?
Zum Beispiel so, dass ich verstehe, was eigentlich das Problem ist.

Wenn Du in bestimmten Zeitabständen immer drei Zahlenwerte mit betimmter Bedeutung erhältst, z.B.

  • Zyklus-Identifikationsnummer
  • Temperatur
  • Dauer
    dann sehe ich keine Probleme, diese Zahlenwerte in einem Programm nach dem Empfang weiter zu verarbeiten

Eine switch-case Konstruktion baut im Prinzip zur Kompilierzeit eine Sprungtabelle im Programm zusammen, und die ist während der Laufzeit des Programms fest und unveränderlich.

Losspost:
Oder kann ich das irgendwie anders lösen

Bestimmt, wenn die Anzahl der Zyklen endlich ist. Was ist der maximale Wert für die Anzahl?

Also Ich baue aktuell einen PCR Thermocyler. Dieser wird über den Arduino gesteuert. Desweiteren soll man an einer PC Software in Python folgende Werte angeben können: Wie viele Zyklen durchlaufen werden sollen, welche Temperatur jeder Zyklus haben soll, wie lang dieser Zyklus sein soll und wie lange es insgesamt dauern soll. Ein Zyklus ist z.b 5min auf 100 Grad, dann geht es in den nächsten von 3min 40 Grad. Dabei soll es möglich sein die Temperatur,Zyklus,dauer bei jeder Benutzung Variable in der Python software einzugeben. Einen Maximalwert stelle ich mir so bei 10 vor.

Ganz grob skizzierte Lösung: Ein Temperaturfeld (Array), ein Zeitfeld, beide mit 10 Elementen. Python schickt Daten, die speicherst Du in die Felder und merkst die die Zyklen. Dann gehst Du vom ersten Feld (Index=0) bis bis zum letzten Feld (Index = Zyklen-1) und arbeitest das ab. Dabei ist loop() Deine Schleife.

Wenn neue Daten kommen, werden die Feldinhalte überschrieben.

Könnte das so gehen?

Ich bin leider ziemlich neu mit Arduino programmierung was meinst du mit Index?

Bei meinFeld[5] ist "5" der Index. Siehe Arrays.

Bei sowas hast du zwei Optionen:

1.) Du weißt dass es nur maximal X Messungen gibt. Dann legst du Speicher für X Messungen an. Wenn es weniger sind ok, aber es wird halt immer X Speicher belegt. Ist auch für Anfänger besser, da man weniger Fehler macht. Man muss nur abfragen dass man nicht mehr Messungen macht als man Speicher angelegt hat

2.) Du verwendest dynamischen Speicher. Dann wird immer nur so viel belegt wie auch tatsächlich gebraucht wird. Hat aber auch etwas Overhead und ist komplizierter.

Am besten ersteres nehmen

Nimm doch ein String Objekt, Semikolon getrennt und schreib da alles rein. Mit strtok holst du es später wieder aus dem dahinterliegenden Array mit .c_str raus. Solange der Speicher reicht, könnte es gut gehen

duck und weg

PCR Reaktionen sind ziemlich empfindlich bezüglich Temperaturgenauigkeit. Ich bezweifle, daß Du dazu eine Termozykler bauen kannst wenn Du keine Ahnung mit der Arduino-Programmierung hast. Du brauchst mindestens eine PID Regelung der Temperatur und eine Regelung der Heiz/Kühlleistung des Peltierelements.

Grüße Uwe

Und den Thread Titel ändern, oder einen neuen anfangen.
"Switch Case mit einer sich ändernden Zahl von Cases" war einfach eine blöde Idee. :wink: