|
Arduino LCD Menü Rotary und Settings im Untermenü setzen?
|
|
|
27.11.2013, 18:10
(Dieser Beitrag wurde zuletzt bearbeitet: 11.12.2013 21:39 von Wampo.)
Beitrag #1
|
|||
|
|||
|
Hy Leute,
und schon wieder steht das nächste Projekt vor der Tür! ![]() Kurze beschreibung, es geht um eine Trigger Box für ne Canon DSLR! Funktionen: Triggern über Lichtsensor, Triggern über Soundsensor, Triggern über Motionsensor, Triggern über Zeitinterval und den Langzeitbelichtungsmodus. Ok gut soweit von den unterprogrammen kein problem, aber ich will es auf ein i2c angesteuertes LCD übertragen und eine Menüstruktur erstellen....bitte hierzu den Bildanhang beachten. Abfolge: Begrüßungsbildschirm mit Versionsnummer und geplänkl---> Startbildschirm mit auswahlmöglichkeit über einen RotaryPoti-->buttonklick übernimmt den modus und geht ins nächste menü zum einstellen der werte (LichtValue, SoundValue oder delayzeit sollen auch blinken wärend dem einstellen ) ---> button klick übernimmt den eingestellten wert weiter zum abschlussmenü auf dem dann der modus angezeigt werden soll und ein paar extradaten (uhrzeit, bildzähler, ausgewähltes setting bla bla) ----> mit einem ECS button kann dann wieder in das hauptmenü gewechselt werden!Funktion Langzeitbelichtung soll auf dem schlussmenü die verstrichene zeit anzeigen (stichwort RTC) und wird über einen button angetriggert und bei erneutem druck ausgetriggert. So nun meine eigentlichen fragen: 1. Ist so eine Menüstruktur möglich? 2. Kann ich werte einstellen die beibehalten werden und nach nem reset halt weg sind oder gar nach dem ausschalten wieder abrufbar wären? 3. Wie funktioniert das überhaupt mit dem Werte setzen, zb für Licht Value 468? An der hardwäre scheitert es nicht, es is die Programmierung, habe im netz noch keine für mich brauchbaren sachen gesehen... ![]() Erbitte dringend HILFE und Vorschläge und evtl kleine Codeschippsel oder kleine anstöße. Um Gottes willen nicht als "MACH MAL" Post verstehen! Suche nur HirnstupserMfG Daniel |
|||
|
28.11.2013, 14:32
Beitrag #2
|
|||
|
|||
|
RE: Menüauswahl & Wertsetzung
Hallo, das ist alles zu machen, klar. Dazu müssen die Konfigurationswerte im EEPROM angelegt werden, dann kannst du Teile, die nur beim power up ausgeführt werden sollen in den Setup-Bereich packen. Schnipsel gibt es doch in den Beispielen reichlich, die man verwenden kann. Bei verschiedenen Betriebsmodi würde ich eine Statemaschine einsetzen.
Gruß, Stefan . . . . . . //Wo mein Kölbchen dampft, da bin ich unverkrampft. |
|||
|
11.12.2013, 18:34
(Dieser Beitrag wurde zuletzt bearbeitet: 11.12.2013 20:03 von Wampo.)
Beitrag #3
|
|||
|
|||
|
RE: Menüauswahl & Wertsetzung
Hy Community,
hab endlich ein passenden Codeschnipsel gefunden mit dem ich ein Menü erstellen kann wie ich es möchte, allerdings wie immer mal wieder kommt man an einer gewissen Stelle nicht weiter!!! ![]() Die Menüstruktur ist erstellt--> Läuft Menüscrollen durch einen Rotary Encoder mit Pushbutton--> Läuft Programmauswahl durch druck auf Pushbutton--> Läuft Das Programm läuft bei anwahl los--> LÄUFT NICHT!!!!!!! Ich pflege mal unten den gesamten Code ein und hier meine Frage. Code: #include <Wire.h> Im Case 0 wird sollte doch jetzt eigtl jetzt das Unterprogramm LIGHT läufen oder bis zum drehen oder pushen am Rotary alles abgebrochen wird und ins Hauptmenü zurück gekehrt wird?!?! Die SWITCH CASE sachen funzen iwie nich so recht bzw die Unterprogramme die dann eigtl laufen sollen tun es nicht. Kurz und knapp nochmal das problem zusammengefasst: Wenn der CASE 0 eintritt soll das Unterprogramm INTERVALL gestartet werden, es soll aber solange im CASE0 bleiben bis ich durch den druck auf den Pushbutton bestätige das zb der wert eingestellt ist den ich benötige. Kurzes aufblinken des LCD bestätigt die eingabe und geht über in den eigentlichen MODE loop der ausgewählt wurde. |
|||
|
04.08.2014, 17:21
(Dieser Beitrag wurde zuletzt bearbeitet: 04.08.2014 17:29 von Wampo.)
Beitrag #4
|
|||
|
|||
|
Rotary und Array auswählen
Kann mir um Gottes willen irgendjemand weiterhelfen, ich sitz jetz nun schon mind. 2 tage dran und hab glaube ich 2 mio Blogs gelesen.
Einfache geschichte für jemanden der sich damit auskennt! Der aufbau ebenfalls simpel, ein Rotary Encoder soll aus einem Array Werte (LCD-Beleuchtung in msec) wählen. Im Array stehen 5 Werte char* TO[5] ={1000, 5000, 10000, 15000, 20000}. In einem Untermenü möchte ich nun per drehung CW oder CCW das Array durchgehen. WIE ZUM GEIER GEHT DAS???? Code: //ROTARY Ich benutze im Code den Rotary mit dem ergebnis encoderValue ++ oder eben encoderValue -- Ich blicke einfach nicht mehr durch!!!! |
|||
|
04.08.2014, 17:58
(Dieser Beitrag wurde zuletzt bearbeitet: 04.08.2014 18:02 von Bitklopfer.)
Beitrag #5
|
|||
|
|||
RE: Rotary und Array auswählen
(04.08.2014 17:21)Wampo schrieb: Kann mir um Gottes willen irgendjemand weiterhelfen, ich sitz jetz nun schon mind. 2 tage dran und hab glaube ich 2 mio Blogs gelesen. Hallo Wampo, da empfehle ich dir mal meinen Beitrag von neulich darüber findest du auch ein gutes Datenblatt wo die Funktion dieser Encoder deutlich macht.. ...und da gibts sogar ne Lib dazu... lg bk An alle Neuankömmlinge hier, wenn ihr Code(Sketch) hier posten wollt dann liest euch bitte diese Anleitung durch. Und benutzt vor dem Beitrag absenden den "Vorschau" Button. Ich spreche fließend Schwäbisch, Deutsch das Notwendigste und für die Begriffsstutzigen erprobtes Tacheles mit direkten Hinweisen ohne Schnörkel... Dont feed the Troll's 1+1 = 10 ...und ich bin hier nicht der Suchmaschinen-Ersatz ...nur mal so als genereller Tipp..
|
|||
|
04.08.2014, 18:06
(Dieser Beitrag wurde zuletzt bearbeitet: 04.08.2014 18:10 von Wampo.)
Beitrag #6
|
|||
|
|||
|
RE: Arduino LCD Menü Rotary und Settings im Untermenü setzen?
Es geht nicht dadrum das ich den Encoder nicht verstehe, ich verstehe nicht wie ich das Array durchlaufen kann und somit z.b. einen nächsten wert setze.
z.b. das TimeOut steht bei 10000msec, nun gehe ich in das untermenü in meine settings und möchte aus dem array per rotary das array durchlaufen und bei dem wert den ich abspeichern möchte bestätige ich. aus dem array werden werte gezogen per rotary. Die Frage ist überhaupt ob mein char* Array stimmt oder nimmt man für feste werte was anderes. |
|||
|
04.08.2014, 18:14
Beitrag #7
|
|||
|
|||
RE: Arduino LCD Menü Rotary und Settings im Untermenü setzen?
(04.08.2014 18:06)Wampo schrieb: Es geht nicht dadrum das ich den Encoder nicht verstehe, ich verstehe nicht wie ich das Array durchlaufen kann und somit z.b. einen nächsten wert setze. dann schau dir doch mal diesen Beitrag von rkuehle an da geht es auch um eine Listenauswahl...nur ein bischen anderster eingebettet... An alle Neuankömmlinge hier, wenn ihr Code(Sketch) hier posten wollt dann liest euch bitte diese Anleitung durch. Und benutzt vor dem Beitrag absenden den "Vorschau" Button. Ich spreche fließend Schwäbisch, Deutsch das Notwendigste und für die Begriffsstutzigen erprobtes Tacheles mit direkten Hinweisen ohne Schnörkel... Dont feed the Troll's 1+1 = 10 ...und ich bin hier nicht der Suchmaschinen-Ersatz ...nur mal so als genereller Tipp..
|
|||
|
04.08.2014, 19:38
(Dieser Beitrag wurde zuletzt bearbeitet: 04.08.2014 20:42 von Wampo.)
Beitrag #8
|
|||
|
|||
|
RE: Arduino LCD Menü Rotary und Settings im Untermenü setzen?
Keine hilfe!!!! nur noch mehr missverständnis!
Ok Ok, anscheinend reden wir aneinander vorbei! Ich fang nochmal ganz von vorne an! Ich habe ein Array--> int light[6] ={1000, 5000, 10000, 15000, 20000, 30000};, dieses Array ist mit integer gefüllt. (ich weiss wie ich ein Array erstelle und wie ich es abrufen kann) Diese Zahlen stehen für millisec in einem delay. Ich habe einen Rotary Drehencoder mit Pushbutton (ebenfalls weiß ich wie dieser funktioniert und wie er aufgebaut bzw. abgefragt wird) Mein problem ist nun folgendes: ich möchte, gehen wir davon aus, eine LED blinken lassen in verschiedenen abständen, diese Abstände sind im Array gespeichert. Ich möchte nun über die Rotarydrehfunktion durch dieses Array laufen bildlich gesehen ungefähr so --> Rotary +1 CW = light[0], Rotary +2 CW light[1], dabei steht die [0] für 1000 und die [1] für 5000 usw. Somit wird mit jeder drehung ein anderer wert in die Blinkpause von der LED aus dem Array genommen und im delay eingesetzt. Wie kann ich das bewerkstelligen. Ich habe schon mit i++ rumprobiert, laststate do while alles, ich weiss nicht wie das geht. |
|||
|
|
|
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste





) ---> button klick übernimmt den eingestellten wert weiter zum abschlussmenü auf dem dann der modus angezeigt werden soll und ein paar extradaten (uhrzeit, bildzähler, ausgewähltes setting bla bla) ----> mit einem ECS button kann dann wieder in das hauptmenü gewechselt werden!


...und ich bin hier nicht der Suchmaschinen-Ersatz
...nur mal so als genereller Tipp..