Go Down

Topic: Steuerung des Arduino via Excel (VBA) möglich? (Read 7239 times) previous topic - next topic

uwefed

Du solltest Dich etwas in die Materie einlesen.
Arduino IDE bringt bereits den C Compiler mit. Das gleiche gilt füt Processing. Beiders CC-Lizenz und gratis

Grüße Uwe

obiwan

Ja richtig, aber wie soll ich mit der "Arduino-Software" eine Oberfläche "programmieren" (wie in Post '4 gezeigt)?

Ich schätze mal mit demhier kann ich arbeiten? http://www.chip.de/downloads/Visual-C-2010-Express_24082800.html

sth77

Visual C++ Express gibts bspw. kostenlos. Wenn du Programmiereinsteiger bist, stehen dir aber alle Möglichkeiten offen. Leicht zu lernen und für schnelle, sichtbare Erfolge ist bspw Processing geeignet. Die Ähnlichkeit zur Arduino-IDE ist unübersehbar: http://www.processing.org/learning/gettingstarted/
Eine recht aktive und hilfsbereite  Community bekommst du auch bei PureBasic, eine Testversion mit 600 Zeilen Programmbegrenzung bekommst du auch kostenlos: http://www.purebasic.com/german/
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

obiwan

Alos ich möchte so einfach wie möglich eine "Oberfläche" realisieren um die vorgegebenen Parameter abändern zu können ohne jedesmal in dem Quellcode direkt die Angaben zu ändern. Wenn es da schon etwas gibt wo ich z.B. schon "vorgefertigte" Elemente habe die ich "nur" auf ein "Deshboard" ziehen muss und dann angebe welcher Parameter zu welchem "Eingabefeld" gehärt währe das natürlich einfacher als alles von A bis Z selber in C/C++/C# oder was auch immer programmieren zu müssen.

In Excel z.B. kann ich ja sogenannte "Kombinationsfelder", "Listenfelder" u.s.w. verwenden und diesen dann einen VBA-Code zuweisen.

So ähnlich währ das schön für mein Projekt...

markbee

Evtl. schaust Du auch mal nach Qt. Das ist kostenlos und plattformübergreifend und relativ einfach zu programmieren.
XBee blog: http://lookmanowire.blogspot.com/

obiwan

Also Firmata scheidet schonmal aus - da habe ich ja nur die Möglichkeit den Port auszuwählen und Low oder High vorzugeben (oder hab ich das falsch verstanden)?

Mir geht es hier jetzt auch nicht darum von euch die ganzen möglichen Programmiersprachen aufgelistet zu bekommen.

Ich möchte mir schnell und einfach eine Oberfläche zur Eingabe/Änderung der Parameter erstellen.

markbee

Einfach und schnell ist definitiv Processing. Bei allen anderen ist die Lernkurve und der Aufwand deutlich höher.
XBee blog: http://lookmanowire.blogspot.com/

obiwan

Einfach und schnell ist definitiv Processing.
Und damit kann ich mir eine "Eingabeoberfläche" basteln? Also mit der Software die ich mir bei arduino.cc runergeladen habe kann ich ja die "Sketche" schreiben, die ich dann auf das Board lade um etwas auszuführen. Und mit dieser Software kann ich mir auch eingene Eingabeoberflächen gestalten? Wie? Habe dazu noch nichts im www gefunden. Da ist immer die Rede von ... GUI also "Ein Grafisches User Interface" was z.B. mit MS VB 2010 "geschrieben" ist. Genau so etwas möchte ich.

mkl0815


Also Firmata scheidet schonmal aus - da habe ich ja nur die Möglichkeit den Port auszuwählen und Low oder High vorzugeben (oder hab ich das falsch verstanden)?

Mir geht es hier jetzt auch nicht darum von euch die ganzen möglichen Programmiersprachen aufgelistet zu bekommen.

Ich möchte mir schnell und einfach eine Oberfläche zur Eingabe/Änderung der Parameter erstellen.


Ich glaube hier gibt es noch ein Verständnisproblem.
Eigentlich brauchst Du 2 Programme.

Ein Programm auf dem PC, mit Eingabefeldern für die Steuerzeiten Deiner Ventile und einem großen roten "START" Button.

Ein weiteres Programm brauchst Du auf dem Arduino, das die vom PC-Programm gelieferten Befehle umsetzt. (z.B. Firmata).

Die Frage dabei ist, in welchem Programm die Steuerlogik steckt. Steckt die Logik im PC-Programm, dann kannst Du Firmata verwenden, denn das Timing wann welches Pin geschaltet werden soll, macht dann das PC-Programm. Vorteil ist, das Du auf dem Arduino auf eine fertige Lösung setzen kannst. Nachteilig könnte sein ein exaktes Timing zu erreichen, da die Befehle seriell übermittelt werden, was Zeit kostet und hier ggf. schon Unterschiede im ms Bereich möglich wären.

Zweite Möglichkeit ist, das die Logik im Arduino-Programm steckt. Dann musst Du das vermutlich auch selbst schreiben. Du brauchst dann ein sinnvolles Protokoll, mit dem Du Steuerdaten übermittelst: z.b. als String "V1,30,35:V2,40,45:V3,50,55,K1:60" "Vx" ist jeweils das Ventil Nummer x mit den beiden Steuerzeiten in ms. "Kx" ist dann die entsprechende Kamera. Den Steuerstring musst Du dann auf dem Arduino in die entsprechende Werte zerlegen.
Vorteil dieser Lösung ist, das Du vom PC-Programm unabhängig bist. Denn wer am Ende den Steuerstring über die serielle Schnittstelle schickt ist egal (im einfachsten Fall kommen die Daten über den seriellen Monitor der IDE). Ein weiterer Vorteil ist, das Dein Timing exakter ist, weil es nicht von irgendeiner Kommunikation abhängt. Nachteil ist die größere Komplexität des Arduinoprogramms.

Mario.

mkl0815


Und mit dieser Software kann ich mir auch eingene Eingabeoberflächen gestalten? Wie? Habe dazu noch nichts im www gefunden. Da ist immer die Rede von ... GUI also "Ein Grafisches User Interface" was z.B. mit MS VB 2010 "geschrieben" ist. Genau so etwas möchte ich.

http://playground.arduino.cc/interfacing/processing
Hier wird die Integration von Arduino und Processing beschrieben.
und hier: http://raumfuehler.andreasmuxel.com/index.php/arduino-und-processing/kommunikation-arduino-board-zu-processing/
oder hier: http://www.heise.de/ct/projekte/machmit/processing

obiwan

#25
Apr 25, 2013, 02:25 pm Last Edit: Apr 25, 2013, 02:32 pm by obiwan Reason: 1
Also vom Ablauf her habe ich mir das so vorgestellt:

1. Eingabe der entsprechenden Parameter (ms wann welches Ventil öffnet/schließt und die Kamera auslöst) über die "GUI"
2. "Start"-Knopf drücken
3. Datenübertragung an das Board
4. x ms warten (damit das Programm vollständig auf dem Board geladen wurde)
5. Ventil 1 öffnet für y ms
6. Ventil 2 öffnet für y ms
...
7. Kamea löst aus (blitz wird über die Kamera gesteuert weshalb ich diese nicht über das Board steuere)
8. Programmende (der Arduino mach nix mehr und warte bis das nächste mal der "Start"-Knopf gedrückt wird)

Natürlich kann ich das ganze auch über die Arduino-Software steuern und jedesmal den "Sketch" anpassen und dann übertragen.
Aber mit einer Eingabeoberfläche währe das ganze viel "schöner". Nur möchte ich dafür nicht extra ein EDV-Studium absolvieren müssen  :smiley-red:

mkl0815

#26
Apr 25, 2013, 02:49 pm Last Edit: Apr 25, 2013, 02:57 pm by mkl0815 Reason: 1

Also vom Ablauf her habe ich mir das so vorgestellt:
...
3. Datenübertragung an das Board
4. x ms warten (damit das Programm vollständig auf dem Board geladen wurde)
...

Natürlich kann ich das ganze auch über die Arduino-Software steuern und jedesmal den "Sketch" anpassen und dann übertragen.
Aber mit einer Eingabeoberfläche währe das ganze viel "schöner". Nur möchte ich dafür nicht extra ein EDV-Studium absolvieren müssen  :smiley-red:

Genau darum geht es. Du sollst ja nicht jedesmal den Sketch anpassen und damit jedesmal ein angepasstes Programm auf den Arduino laden, sondern an ein auf dem Arduino laufendes Programm nur die Daten übergeben.

Das kann im einfachsten Fall sogar der serielle Monitor der IDE sein. Dort kannst Du ja einen String an den Arduino über die serielle Schnittstelle schicken.

obiwan

#27
Apr 25, 2013, 03:12 pm Last Edit: Apr 25, 2013, 03:20 pm by obiwan Reason: 1
... sondern an ein auf dem Arduino laufendes Programm nur die Daten übergeben.

Nein ich glaube wir reden aneinander vorbei...

Mal "ganz einfach" erläutert:

Ich schreibe einen "Sketch" bei dem folgendes passieren soll (mit einfachsten Zeit-Beispielen):

Nachdem ich einen "Auslöser" (nich am PC, nicht an der Kamera sondern z.B. an Pin 13 angeschlossen) drücke

öffnet nach 3 sec Ventil 1 für 1 sec
öffnet nach 4 sec Ventil 2 für 1 sec
öffnet nach 5 sec Ventil 3 für 1 sec
löst die Kamera nach 6 sec aus

Nachdem der Sketch geschrieben ist lade ich ihn auf das Board und wenn ich jetzt den "Auslöser" drücke
passiert das oben angegebene.
Wenn ich den "Auslöser" erneut drücke passiert das ganze noch einmal von vorne.
Das ganze passiert jedesmal wenn ich den "Auslöser" drücke.

Wenn ich jetzt die Parameter änder möchte, damit die Kamera nicht nach 6 sondern erst nach 7 sec
auslöst, muss ich den "Sketch" anpassen, ihn neu auf das Board laden und wenn ich dann den
"Auslöser" drücke löst die Kamera nach 6 sec aus (die Ventile öffnen wie gehabt).

Was ich nun möchte ist, dass ich nicht im "Sketch" den Wert von 6 auf 7 für die Kameraauslösung
anpasse, sondern ich möchte eine "Eingabeoberfläche" mit einem "Feld" für den "Wert" der Kamera
haben den ich anpasse und wenn ich dann auf der "Eingabeoberfläche" den "Start-Knopf" drücke
passiert nix anderes als wenn ich den "Sketch" auf das Board übertrage.

Also die "Oberfläche" soll mir lediglich die Veränderung der "Variablen Werte" erleichtern.


sth77

Um das ganze Geraffel um Kommunikationsprotokolle und die Programmierung auf zwei Systemen (Windows und Arduino) zu umgehen habe ich ja (vielleicht in weiser Voraussicht ;)) bereits diesen Vorschlag gemacht:


Extra einen PC hinzustellen finde ich etwas übertrieben. Das Ganze lässt sich doch wunderbar mit einem 4zeiligen LCD und ein paar Tastern erledigen, einschl. Speicherung der Parameter im Eeprom usw..


Wird nach meinem Dafürhalten etwas einfacher.
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

sth77

Ich glaube da fehlen noch einige Kenntnisse. Du versuchst Probleme zu umgehen, die prinzipiell keine sind. Wenn du deine Zeiten als Variablen definierst, sind sie auch frei wählbar - vom reinen Hochladen in den Arduino werden sie nicht zu Konstanten. Du kannst die Variablen mit einem bestimmten Wert initialisieren, der kann sich aber zur Laufzeit ohne Weiteres ändern, per Knopfdruck oder durch andere Einflüsse. Eine permanente Neuprogrammierung ist gar nicht nötig.
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Go Up