Hallo Gemeinde,
seit ca. einem halben Jahr beschäftige ich mich mit dem Arduino. Wie jeder Anfänger suchte ich im Internet nach Programmierbeispielen für diverse Anwendungen.
Nun stehe ich vor einer Herausforderung, welche ich anscheinend alleine nicht bewältigen kann. Der grundsätzliche Aufbau eines Programmes (hier Sketches) besteht aus der Deklaration inkl. Einbindung div. Libraries - einem anschließenden Setup und dann der Loop-Funktion.
Wie verhält es sich aber, wenn ich nach Anlegen der Speisespannung (einschalten) zwischen zwei Programmabläufen wählen möchte? Ich dachte dabei an z.B. zählen von Cent-Stücken um die Anzahl zu ermitteln. Nachdem dies erfolgt / bekannt ist, möchte ich nun über eine Tastatur (wie auch immer geartet) eine Vorgabe erstellen, um dann die schon vorhandene Peripherie zu nutzen und den Zähler Rückwärts laufen zu lassen - d.h. in diesem Beispiel: Schachteln mit einer vorgegebenen Anzahl von Cent-Stücken zu füllen.
Ist so etwas überhaupt mit einem Arduino (mal abgesehen von den IO-Ports) möglich? Sicher besteht die Möglichkeit die jeweiligen Programme in 2 ATMega's zu speichern und wahlweise den einen oder anderen Chip an die Peripherie zu schalten, aber dies ist nicht in meinem Sinne.
Vielleicht hat jemand hier eine Lösung, wie's evtl. funktionieren könnte?
Das hat nichts mit unterschiedlichen Sketches zu tun
Wenn automatisch zwischen verschiedenen Programmen umgeschaltet werden soll, willst ist ein endlicher Automaten. Da werden einfach verschiedene Funktionen in einer bestimmten Reihenfolge ausgeführt.
Wenn per Hand (z.B. per Schalter) zwei Abläufe auswählen will, wird jeweils auch nur eine andere Funktion aufgerufen.
Hallo DD,
Warum so kompliziert?
Ein einfaches if tuts doch. Und mit einem Schalter entscheiden, ob der eine oder andere Codeteil im Loop durchlaufen werden soll.
Mache ich auch so, Kalibrierroutine und normales Programm. Abfrage und Entscheidung bei mir im Setup.
Oder hast Du zu wenige IOs oder Speicher?
Pat
Je nachdem wie aufwändig deine zusätzliche Hardware ist, kannst du diese Anforderung durch einen kleinen Arduino (Pro Mini) oder (Uno) bzw. einen etwas größeren (Mega) erledigen lassen.
Die Software lässt sich dann z.B. auch durch ein Menü in einem Display steuern und damit deine verschieden Funktionen starten. Diese müssen ja nicht gleichzeitig laufen.
Ein solches Menü hat den Vorteil du kannst den Funktionsumfang deines Programmes in einem bestimmten Umfang erweitern.
PatK:
Warum so kompliziert?
Ein einfaches if tuts doch. Und mit einem Schalter entscheiden, ob der eine oder andere Codeteil im Loop durchlaufen werden soll.
Genau so. Du musst beide Programme zu einem kombinieren. Je nach Schalterstellung/Sensorsignal wird das eine oder andere ausgeführt. In der Loop steht die Fallunterscheidung und die Einzelprogramme werden als Unterprogramme aufgerufen. Im Setup muss man halt alles zusammen deklarieren. Schwierig wird es nur, wenn der Speicher nicht ausreicht oder Librarys nicht kompatibel sind, da man dann größere Änderungen an beiden Programmen vornehmen muss.
Ich gehe mal davon aus, dass wenn die Hardware in beiden Sketchen genutzt wird, auch die Libraries die gleichen sind.
Wenn es eine normale und eine seltene Sonderfunktion (Wartung, Testmodus o.ä) sind, nimmt man üblicherweise einen der vorhandenen Taster, fragt den in setup() ab und speichert das in einer globalen Variablen.
In der "Bedienungsanleitung" heisst es dann:
Die Sonderfunktion wird aktiviert, indem man das Gerät ausschaltet und den X-Taster gedrückt hält beim Einschalten.
Wenn man nicht will, kommt man - ausser über Reset - nicht von der einen in die andere Funktion.
Daten kann man dann aber nur über eeprom austauschen.