Arduino Forum

International => Deutsch => Topic started by: obiwan on Apr 24, 2013, 01:32 pm

Title: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 24, 2013, 01:32 pm
Hallo,

steht ja alles im Prinzip schon in der Überschrift: kann ich den Arduino auch via Excel (mittels VBA) steuern? Das ist mir nämlich geläufiger als die Sprache C.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: Eisebaer on Apr 24, 2013, 01:39 pm
hi,

prinzipell kein problem, aber Du brauchst eine actveX-komponente(dll), die den serial port bedienen kann. mir ist keine bekannt, die auf standard-installationen vorhanden ist. mit dem visual studio wir eine mitinstalliert, aber die ist nicht auf andere rechner portierbar. wäre selbst neugierig, ob's da was gibt, das man von "außen", also z.b. von ecxel steuern kann.

gruß stefan
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: uwefed on Apr 24, 2013, 02:33 pm
Arduino kann über die serielle Schnittstelle (USB) gesteuert werden (Bibliothek Firmata.h). Das ist dann aber immer nur eine Fernsteuerung und die Kommandos kommen vom PC. Ich finde das aber nur sinnvoll wenn man mehr Rechenpower bzw Speicher braucht als Arduino bereitstellt.

Für die Standartanwendungen ist es nicht sinnvoll.
Die beste Lösung ist daß Du C lernst.

Grüße Uwe
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 24, 2013, 02:57 pm
Hmm... in der Regel "schreibt" man das Programm und "schickt" es ans Board, wo es dann ausgeführt wird.

Ich möchte die Steuerung aber über eine Oberfläche realisieren, auf der ein "Start" Button ist und wenn man den drückt "passiert etwas".

Mir ist nur noch nicht ganz klar womit ich das realisieren kann?

Als beispiel mal eine vereinfachte darstellung dessen was ich möchte. Die Parameter möchte ich ändern und dann durch drücken von Start das ganze ausführen.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: Eisebaer on Apr 24, 2013, 02:59 pm
hi nochmal,

hab' jetzt selbst noch gesucht. beim vb-studio ist die MSComm32 dabei. als freier ersatz wird oft XMComm von richard grier genannt.
http://home.comcast.net/~hardandsoftware/xmcomm.htm (http://home.comcast.net/~hardandsoftware/xmcomm.htm)
ob Du dann firmata verwendest oder einen einen selbstgeschriebenen kleinen lauscher auf den arduino lädst, ist geschmackssache.

gruß stefan
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: Eisebaer on Apr 24, 2013, 03:06 pm
hat sich jetzt überschnitten.

Quote
Mir ist nur noch nicht ganz klar womit ich das realisieren kann?


Du brauchst auf jeden fall ein programm auf dem arduino, das die befehle die Du schickst, dann umsetzt.

Du kannst nicht direkt einen befehl (z.b. setze PIN 1 auf HIGH) vom pc an den pin schicken, sondern Du kannst einen befehl vom pc an das programm schicken, das auf dem arduino läuft.

wie weit firmata das möglich macht oder vereinfacht, weiß ich nicht. da mußt Du Dich ein bißchen einlesen.
http://arduino.cc/en/Reference/Firmata (http://arduino.cc/en/Reference/Firmata)

gruß stefan
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 24, 2013, 03:08 pm
Die beste Lösung ist daß Du C lernst.
Die Befehle zur Steuerung des Borads würde ich ja noch hinbekommen, aber mit C dann gleich eine ganze Oberfläche zu Programmieren stelle ich mir dan doch etwas erschwerter vor. Gibt es nich schon irgendein "Oberflächendesigner" bei dem man nur bestimmte Parameter vorgeben muss?
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: Eisebaer on Apr 24, 2013, 03:51 pm
hi,

Quote
Gibt es nich schon irgendein "Oberflächendesigner" bei dem man nur bestimmte Parameter vorgeben muss?


sicher, kommt nur darauf an, womit Du wie steuern willst. android, iphone, web, touchscreen direkt am arduino usw..

aber wenn Du sowieso immer mit einem pc dranhängst, ist Deine lösung sicher nicht die schlechteste. vor allem, wenn Du mit VBA schon vertraut bist...

gruß stefan
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 24, 2013, 04:05 pm
aber wenn Du sowieso immer mit einem pc dranhängst, ist Deine lösung sicher nicht die schlechteste. vor allem, wenn Du mit VBA schon vertraut bist...
Von welcher Lösung sprichst du? Hab ich was überlesen? Ich bin doch gerade auf der Suche nach einer Lösung...
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: sth77 on Apr 24, 2013, 04:16 pm
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..
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: Eisebaer on Apr 24, 2013, 04:38 pm
hi,

Quote
Von welcher Lösung sprichst du? Hab ich was überlesen? Ich bin doch gerade auf der Suche nach einer Lösung...


von VBA, XMComm, und firmata bzw. etwas selbsgeschriebenem für den arduino...
fehlt doch nichts mehr in der werkzeugkette, oder?

gruß stefan
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 24, 2013, 07:25 pm
Das sind doch "noch" alles Bömische Dörfer für mich...  :smiley-red:
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: Sheldor on Apr 25, 2013, 08:52 am
In dem Buch von Erik Bartmann gibt es ein Projekt, bei dem er eine Arduino Oberfläche mit C# programmiert, deren Befehle dann vom Arduino umgesetzt werden (PINs ansteuern etc.). Vielleicht wäre das ja für Dich interessant?
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 25, 2013, 09:41 am
Ja auf jeden Fall. Meinst du dieses hier: O'Reillys basics : Die elektronische Welt mit Arduino entdecken von Erik Bartmann Ausgabe 1 (2011) von Erik Bartmann (1001)
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 25, 2013, 11:46 am
So, das Buch ist bestellt. Ich hoffe ich muss mir jetzt noch noch extra für tausende von Euros einen C-Compiler kaufen???
Gibt es C schon for free oder als open source? Oder muss ich das auch kaufen?
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: uwefed on Apr 25, 2013, 11:57 am
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
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 25, 2013, 12:13 pm
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 (http://www.chip.de/downloads/Visual-C-2010-Express_24082800.html)
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: sth77 on Apr 25, 2013, 12:24 pm
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/
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 25, 2013, 12:36 pm
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...
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: markbee on Apr 25, 2013, 12:54 pm
Evtl. schaust Du auch mal nach Qt. Das ist kostenlos und plattformübergreifend und relativ einfach zu programmieren.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 25, 2013, 12:57 pm
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.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: markbee on Apr 25, 2013, 12:59 pm
Einfach und schnell ist definitiv Processing. Bei allen anderen ist die Lernkurve und der Aufwand deutlich höher.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 25, 2013, 02:03 pm
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.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: mkl0815 on Apr 25, 2013, 02:09 pm

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.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: mkl0815 on Apr 25, 2013, 02:11 pm

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 (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/ (http://raumfuehler.andreasmuxel.com/index.php/arduino-und-processing/kommunikation-arduino-board-zu-processing/)
oder hier: http://www.heise.de/ct/projekte/machmit/processing (http://www.heise.de/ct/projekte/machmit/processing)
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 25, 2013, 02:25 pm
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:
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: mkl0815 on Apr 25, 2013, 02:49 pm

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.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 25, 2013, 03:12 pm
... 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.

Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: sth77 on Apr 25, 2013, 03:20 pm
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.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: sth77 on Apr 25, 2013, 03:26 pm
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.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: mkl0815 on Apr 25, 2013, 03:27 pm
Nein, wir reden nicht aneinader vorbei.

Natürlich ist auf dem Arduino ein Sketch, der die Ventile und die Kamera bedient. Was Du willst, ist aber, das die Parameter für die Steuerung (wann welches Ventil und wann welche Kamera auslöst) anpassen, und zwar OHNE das Du den kompletten Sketch neu hochladen musst.
Genau davon rede ich ja die ganze Zeit.

Im Prinzip macht Dein Sketch auf dem Arduino 2 Dinge.

1.) Er wartet darauf, das der "Auslöser" an Pin 13 gedrückt wird, dann spult er sein Steuerprogramm ab (Ventile, Kamera ...). Danach wartet er wieder auf den Auslöser.
2.) Zusätzlich zum Warten auf den Auslöser, prüft der Sketch regelmäßig die serielle Schnittstelle, ob da Daten übertragen wurden. Wenn ja, nimmt er die Daten an und ersetzt damit die bisherigen Stuerdaten.

Das ist der Teil auf dem Arudino.


Dein PC-Programm macht dann nix anderes als über ein Formular (egal in welcher Sprache) die Daten eingeben zu lassen und beim Drücken auf den "Start"-Knopf die Daten seriell an den Arduino zu schicken.

Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 25, 2013, 03:29 pm
Ich glaube mit einem "kleinen" Display wird das nicht zu realisieren sein.

Ich möchte z.B. nicht immer das Ventil 1, Ventil 2 und Ventil 3 öffnen.

Ich möcht auch, dass z.B. "nur" Ventil 1 angesteuert wird und z.B. nach 3 sec. für 1 sec. öffnet und dann nach 4 sec. für 2 sec. öffnet.

Also alle Parameter sollen änderbar sein - auch die Anzahl und ansteuerung der Ventile.

Ich möchte z.B. auch zwei Kamras anschließen können. Mal will ich das beide Kameras angeschlossen sind und auch beide auslösen,
mal soll nur eine auslösen, mal ist nur eine angeschlossen, ...

Das geht wohl kaum über ein kleines Display mit 4 Zeilen und 4 Einstellknöpkes.

Anbei mal eine Grafik eines "fertigen" Programmes das so aussieht wie ich mir das vorstelle
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 25, 2013, 03:33 pm
Dein PC-Programm macht dann nix anderes als über ein Formular (egal in welcher Sprache) die Daten eingeben zu lassen und beim Drücken auf den "Start"-Knopf die Daten seriell an den Arduino zu schicken.


Ja genau!

Und wenn das egal ist, mit welcher "Sprache" dieses "Formular" geschrieben wurde, dann müsste das doch auch mit Excel-VBA gehen (um auf die eingangs gestellte Frage zurückzukommen)? Und wie kann ich das ganze nun realisieren, dass das "Formular" mit dem Board "kommuniziert"?
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: sth77 on Apr 25, 2013, 03:52 pm
Diese Darstellung war aber nicht Teil der ursprünglichen Fragestellung. :D Wie soll man als Leser des Threads bzw. auch Helfer darauf kommen?
Ich denke, du verrennst dich da schon etwas, das wird fürs erste Projekt zu viel, was dann wiederum in Frust endet und in der Regel mit der Aufgabe des Projektes. Wäre schade drum.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 25, 2013, 04:00 pm
Diese Darstellung war aber nicht Teil der ursprünglichen Fragestellung.


Ich dachte das Bild in #4 währe eindeutig gewesen?

Natürlich kommt erstmal Schritt 1 = Hardware
Dann Schritt 2 = Software = Sketch schreiben auf das Board laden
Und zum Abschluss käm dann noch die GUI zur Steuerung der Parameter.

Nur wenn Schritt 2 und 3 z.B. nur durch ein "komplettes" C Programm zu realisieren währen, oder schon bei Schritt 2 der Schritt 3 mit berücksichtig werden muss,
währe es doppelte arbeit die Schritte 2 und 3 nacheinander zu lösen.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: sth77 on Apr 25, 2013, 04:10 pm

Ich dachte das Bild in #4 währe eindeutig gewesen?

Die neue Darstellung ist aber ungleich komplexer, und nicht mehr so leicht auf einem zeichenbasierten LCD umsetzbar wie ich das im Vorfeld dachte. Schwamm drüber, wenn es von Anfang an so kompliziert werden soll, musst du dir ein Protokoll überlegen, welches wirklich jede Einstellmöglichkeit abdeckt. Dieser Steuerungssatz wird dann über die serielle Schnittstelle übertragen, muss exakt empfangen, interpretiert und richtig ausgegeben werden. Hinweise zu dieser Herangehensweise hat mkl0815 ja bereis gegeben.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: Eisebaer on Apr 25, 2013, 04:17 pm
hi,

zum verständnis für obiwan. könnte schnell mal jemand die zehn zeilen für den arduino schreiben, damit man dann in den serial monitor
5
enter
800
enter
eingibt, und dann die led13 5mal für 800ms aufblinkt? ich sitz in der firma und hab' keinen arduino hier.
es ist glaube ich noch ein großes verständnisproblem. und damit wäre dann einiges klarer. eine gui statt des serial monitors ist dann der zweite schritt. die kann er sich in vba schreiben.

gruß stefan
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 25, 2013, 04:19 pm
Hinweise zu dieser Herangehensweise hat mkl0815 ja bereis gegeben.


Ja aber wie geht's nun weiter? Geht das mit Excel oder brauche ich ein anderes Programm um so ein "Formular" zur Übertragung der Daten vorzunehmen?

Ach ja, die komplexe Darstellung vier Beiträge zuvor sollte nur darstellen wie ich mir das vorstelle. So komplex brauche ich das nicht. Mir geht es nur um die Auswahlmöglichkeit der Ventile und die Zeitangaben.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 25, 2013, 04:31 pm
Hier mal ein kleiner Beispielcode zur Verdeutlichung:

Code: [Select]

int led1 = 12;
int led2 = 13;
int pin    = 7;
int value = 0;

void setup()
{                
  pinMode(led1, OUTPUT);    
  pinMode(led2, OUTPUT);    
  pinMode(pin, INPUT);
}

void loop()
{
  vaule = digitalRead(pin);
  digitalWrite(led1, value);
  delay(1000);
  digitalWrite(led2, value);
}


Wenn ich den Taster an Pin 7 gedrückt halte leuchte die LED an Pin 12 auf,
dann kommt eine Sekunde Pause und dann leuchtet die LED an Pin 13 auf.

Ich möchte nun die Pausenzeit über ein "Formular" ans Board schicken können.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: guntherb on Apr 25, 2013, 05:04 pm
Schau dir doch mal das Beispiel ReadASCIIString (http://arduino.cc/en/Tutorial/ReadASCIIString) an.

Da passiert genau das.

du gibt auf dem PC einen Wert ein, und der Arduino ändert daraufhin seine Werte.

Du kannst das auch mit nur einer LED machen, am allereinfachsten mit der LED an Pin 13, die schon auf dem Board ist, dafür mußt den Sketch anpassen.

der Zweite Schritt ist dann erst, auf dem PC eine grafische Benutzeroberfläche zu programmieren, die die entsprechenden Daten sendet.

Auf die Gefahr hin, mich zu wiederholen:
Fang klein an.
Kleine Codestückchen, mit kleiner Hardware, das dann Schrittweise erweitern.

Wenn du gleich alles auf einmal machen willst, dann wirst du verzweifeln und alles hinwerfen.

Gunther
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: michael_x on Apr 25, 2013, 06:10 pm
Du bist doch der VBA-Fuzzy, obiwan!

Frage an den Excel-VBA Experten: gibt es ein ActiveX control, das serielle Schnittstelle kann:

- Herausfinden welche es Ports gibt
- Port öffnen
- Baudrate einstellen
- Text senden.

Und kannst du das in deine ExcelUmgebung integrieren ?

Sonst steigst du halt mal von VBA auf VB.net um. Da ist sowas auf jeden Fall drin.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 25, 2013, 07:04 pm
BÖMISCHE DÖRFER DAS SIND FÜR MICH...  :smiley-red:

Ich bauche nur den Hinweis zur Verbindung beider Welten.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: michael_x on Apr 25, 2013, 10:30 pm
Quote
Hinweis zur Verbindung beider Welten

Hast du schonmal google nach
"vba serielle schnittstelle ansprechen"
gefragt?

Der Arduino ist eine serielle Schnittstelle ( COM4 oder so, wie du es auch in der IDE / SerialMointor siehst. )
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 26, 2013, 08:31 am
Danke für den Tip! Werde mich da mal einlesen.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: erni-berni on Apr 26, 2013, 08:54 am
Es gibt ein ActiveX -> http://www.parallax.com/tabid/393/Default.aspx (http://www.parallax.com/tabid/393/Default.aspx)
Das ist zwar mehr zur Datenerfassung gedacht bietet aber auch einige Möglichkeiten der Rückmeldung.
Das habe ich für mein Projekt Pulsmonitor http://dingfabrik.de/2012/11/19/ding-des-monats-112012-biofeedback-mit-arduino/  (http://dingfabrik.de/2012/11/19/ding-des-monats-112012-biofeedback-mit-arduino/) benutzt.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 26, 2013, 08:58 am
So, hier habe ich jetzt mal das "einfache" Programm zur Steuerung des Arduino:

Code: [Select]

// Programm zur Steuerung von 3 Ventilen und 2 Kameras

int VENTIL1 = 2;     // Pin 2 = Ventil 1
int VENTIL2 = 3;     // Pin 3 = Ventil 2
int VENTIL3 = 4;     // Pin 4 = Ventil 3

int KAMERA1 = 8      // Pin 8 = Kamera 1 (Nikon D700)
int KAMERA2 = 9      // Pin 9 = Kamera 2 (Nikon D90)

int START = 13       // Pin 13 = Startknopf

void setup()
{
  pinMode(VENTIL1, OUTPUT);
  pinMode(VENTIL2, OUTPUT);
  pinMode(VENTIL3, OUTPUT);
  pinMode(KAMERA1, OUTPUT);
  pinMode(KAMERA2, OUTPUT);
  pinMode(START, INPUT);
}

void loop()
{
  // hier muß der "START-Befehl" erfolgen

  Delay3000; // Pause für drei Sekunden

  // Steuerung Ventil 1
  digitalWrite(VENTIL1, HIGH); // Ventil 1 öffnen
  delay 1000; // Pause für eine Sekunde
  digitalWrite(VENTIL1; LOW); // Ventil 1 schließen
  delay 1000; // Pause für eine Sekunde

  // Steuerung Ventil 2
  digitalWrite(VENTIL2, HIGH); // Ventil 2 öffnen
  delay 1000; // Pause für eine Sekunde
  digitalWrite(VENTIL2; LOW); // Ventil 2 schließen
  delay 1000; // Pause für eine Sekunde

  // Steuerung Ventil 3
  digitalWrite(VENTIL3, HIGH); // Ventil 3 öffnen
  delay 1000; // Pause für eine Sekunde
  digitalWrite(VENTIL3; LOW); // Ventil 3 schließen
  delay 1000; // Pause für eine Sekunde


  // Steuerung Kamera 1+2
  digitalWrite(KAMERA1, HIGH); // Kamera 1 auslösen
  digitalWrite(KAMERA2, HIGH); // Kamera 2 auslösen
}


Da habe ich ein paar Fragen zu:

1. Wie genau muss der "START"-Befehl aussehen, um das ganze durch Drücken des Buttons in Bewegung zu setzen?
2. Werden so wie im Programm angegeben beide Kameras auch gleichzeitig ausgelöst?
3. Was wenn die Kamera schon vor Öffnen des Ventil 3 auslösen soll? Den Abalauf dann komplett umzuschreiben währe sehr aufwendig.
   Kann man das irgendwie geschickter lösen, dass nicht "starr" Ventil 1 dann 2 dann 3 dann Kamera 1+2 im "Programmablauf" stehen
   sondern irgedwie mit Variablen o.ä. so das man einen "Zeitablauf" vorgeben kann?
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 26, 2013, 09:17 am
Das habe ich für mein Projekt Pulsmonitor http://dingfabrik.de/2012/11/19/ding-des-monats-112012-biofeedback-mit-arduino/  (http://dingfabrik.de/2012/11/19/ding-des-monats-112012-biofeedback-mit-arduino/) benutzt.
Hmm... soweit ich das sehen kann liest du aber nur die Werte vom Arduino aus - ich will ja genau den anderen Weg gehen... aber die "zündende" Idee ist mir noch nicht gekommen  :smiley-red:
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: guntherb on Apr 26, 2013, 09:45 am
1. Wie genau muss der "START"-Befehl aussehen, um das ganze durch Drücken des Buttons in Bewegung zu setzen?

Schau dir mal die Beispiele "Button" und "Debounce" an. Da wird das beschrieben.


2. Werden so wie im Programm angegeben beide Kameras auch gleichzeitig ausgelöst?

ja. Mit wenigen µs Verzögerung.


Kann man das irgendwie geschickter lösen, dass nicht "starr" Ventil 1 dann 2 dann 3 dann Kamera 1+2 im "Programmablauf" stehen
   sondern irgedwie mit Variablen o.ä. so das man einen "Zeitablauf" vorgeben kann?

Natürlich.
Schau' dir mal das Beispiel "BlinkWithoutDelay" an.
Da wird die Methode beschrieben.
Im Prinzip sollte das so gehen:
Bei Knopfdruck millis() merken.
Code: [Select]
startzeit = millis();
Dann für die einzelnen Aktionen abfragen:
Code: [Select]
if (startzeit + Ventil1zeit < millis()){
 digitalWrite(VENTIL1, HIGH);
}

 
Wie gesagt, im Beispiel BlinkWithoutDelay ist der Ansatz beschrieben.

Die Zeiten mußt du dir alle als Variable definieren.
Code: [Select]
unsigned long Ventil1ein = 5000;
unsigned long Ventil1aus = 6000;
unsigned long Ventil2ein = 5500;
unsigned long Ventil2aus = 6700;
etc
.
Die Zeiten am besten immer absolut von Start an gerechnet, muß aber nicht sein, dann musst du halt addieren.





Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 26, 2013, 10:09 am
Warum unsigned long und nicht "nur" long?
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 26, 2013, 10:31 am
Währ das Proggi so jetzt "richtig" im Ansatz:?

Code: [Select]

// Programm zur Steuerung von 3 Ventilen und 2 Kameras

int VENTIL1 = 2;     // Pin 2 = Ventil 1
int VENTIL2 = 3;     // Pin 3 = Ventil 2
int VENTIL3 = 4;     // Pin 4 = Ventil 3

int KAMERA1 = 8    // Pin 8 = Kamera 1 (Nikon D700)
int KAMERA2 = 9    // Pin 9 = Kamera 2 (Nikon D90)

int START = 13       // Pin 13 = Startknopf

int VALUE = 0

unsigned long VENTIL1_EIN = 5500;
unsigned long VENTIL1_AUS = 6000;
unsigned long VENTIL2_EIN = 6500;
unsigned long VENTIL2_AUS = 7000;
unsigned long VENTIL3_EIN = 7500;
unsigned long VENTIL3_AUS = 8000;
unsigned long KAMERA1_EIN = 7500;
unsigned long KAMERA2_EIN = 7500;

void setup()
{
  pinMode(VENTIL1, OUTPUT);
  pinMode(VENTIL2, OUTPUT);
  pinMode(VENTIL3, OUTPUT);
  pinMode(KAMERA1, OUTPUT);
  pinMode(KAMERA2, OUTPUT);
  pinMode(START, INPUT);
}

void loop()
{
  VALUE = digitalRead(START)

  if (VALUE = 1)
  {
     Delay3000;
     STARTZEIT = millis();
        if (STARTZEIT + VENTIL1_AN == millis())
        {
        digitalWrite(VENTIL1, HIGH);
        }
        if (STARTZEIT + VENTIL1_AUS == millis())
        {
        digitalWrite(VENTIL1, LOW);
        }
        if (STARTZEIT + VENTIL2_AN == millis())
        {
        digitalWrite(VENTIL2, HIGH);
        }
        if (STARTZEIT + VENTIL2_AUS == millis())
        {
        digitalWrite(VENTIL2, LOW);
        }



Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: guntherb on Apr 26, 2013, 10:41 am
Schon besser. Aber funktioniert hat es nicht, oder?  :)


Die Abfrage kannst du nicht auf "==" machen, denn diese Bedingung ist nur genau 1ms wahr.
Besser ist "<".
Und dann solltest du, ähnlich wie im Beispiel "BlinkWithoutDelay" auch eine Statusvariable für deine Ausgänge einführen, damit du nur einmal schaltest.

Mach dir doch ein Steckbrett, auf dem anstelle der Optokoppler jeweils eine LED mit Vorwiderstand am Ausgang hängt. Dann kannst du einfach ausprobieren, ob dein Sketch läuft.

Immer weiter probieren!
Versuch macht kluch!   ;)

Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 26, 2013, 10:47 am
eine LED mit Vorwiderstand
warum mit Vorwiderstand und wie groß sollte der sein? 100??
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 26, 2013, 10:58 am
Die Abfrage kannst du nicht auf "==" machen, denn diese Bedingung ist nur genau 1ms wahr. Besser ist "<".
Aber dann würde das Ventil doch sofort öffnen wenn kleiner millis gesagt wird - oder??? Das versteh ich nicht so ganz.

Ich möchte doch das nach dem drücke des Buttons erst einmal 3 Sekunden gewartet wird bis der Prozess startet und dann soll nach 5,5 Sekunden (also eigentlich nach 3 Sekunden + 5,5 Sekunden = 8,5 Sekunden) das erste Ventil für 0,5 Sekunden öffnen (wobei ich mir die 3 Sekunden am Anfang auch sparen kann - sollte nur eine "Sicherheitsreserve sein, dass auch alles richtig "übertragen" wurde).
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: guntherb on Apr 26, 2013, 11:39 am

Die Abfrage kannst du nicht auf "==" machen, denn diese Bedingung ist nur genau 1ms wahr. Besser ist "<".
Aber dann würde das Ventil doch sofort öffnen wenn kleiner millis gesagt wird - oder??? Das versteh ich nicht so ganz.


Warum?
Du drückst den Knopf beim Stand der  internen Systemuhr = 10000 und damit setzt Startzeit = 10000;
in der nächsten if Anweisung fragst du ab 10000 + 5500 < 10001?  falsch, also keine Ausführung des Befehls.
das macht der Arduino solange bis irgendwannn, 5,5sek später:
if (10000 + 5500 < 15501)  jetzt true, also wird der Pin gesetzt.



eine LED mit Vorwiderstand
warum mit Vorwiderstand und wie groß sollte der sein? 100??
besser 200? bis 500?.
Eine LED (die normalen bunten Signal LED, nicht die HighPower Leucht-LEDs) braucht etwa 10mA um vernünftig zu leuchten, bei >35mA gehen die meisten kaputt. Also gilt es den Strom zubegrenzen mit einem Vorwiderstand:
(5V (Arduino-Ausgang) - 1,5V (LED Spannung) ) / 10mA  = 350?.
(die LEDs auf dem Arduino-Board laufen mit 1k Vorwiderstand)

Zum Schalter abfragen würde ich (für den Anfang) sowas reinsetzen:
Code: [Select]
while (digitalRead(Startknopf) == HIGH  && Start == false) {    // Für Schalter nach Masse.  Für Schalter nach 5V auf LOW prüfen
  STARTZEIT = millis();
}
Start = true;
delay(100);  // zum Entprellen des Tasters


Die while-Schleife wird solange durchlaufen (er "hängt in der Whileschleife fest") bis der Taster gedrückt wurde.
Variable boolean Start sorgt dafür, dass er erst wieder in die whileschleife eintritt, wenn der nächste Start freigegeben ist.
Das würde ich jetzt wieder über eine Abfrage machen:
Code: [Select]
if (STARTZEIT + AllesFertig == millis()){
Start = false;
}
später kannst du das auch über den PC wieder freischalten.

AllesFertig sollte eine Zeit sein, die länger als alle anderen ist.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 26, 2013, 11:54 am
Puh... da hoff ich mal, daß am Wochenende schlechtes Wetter ist, damit ich das mit meinem Steckbrett mal testen kann.

Bis hierhinn erstmal vielen Dank! Sobald der Code "steht" und meine LEDs so blinken wie später die Ventile öfnen sollen, meld ich mich wieder
(oder wenns Probleme beim Code gibt  :smiley-red:).
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: Eisebaer on Apr 26, 2013, 03:52 pm
hi,

ich hab' jetzt mal eine kleine anbindung von excel an arduino gemacht.
dazu verwende ich XMComm von dieser seite.
http://home.comcast.net/~hardandsoftware/xmcomm.htm (http://home.comcast.net/~hardandsoftware/xmcomm.htm)
das ist ein in VBA-kreisen bekannter ersatz für die kostenpflichtige MSComm.
den ino-sketch hochladen und im excel drei werte einstellen.
ich habe keine ahnung, ob die portierung auf einen anderen rechner so funktioniert.
aber wer will, kann's probieren.

gruß stefan

Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 27, 2013, 02:38 pm
Währ schön, wenn das jemand testen könnte. Ich bin nun ja erst einmal damit beschäftigt die Hardware zusammenzulöten...
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: Eisebaer on Apr 27, 2013, 03:01 pm
hi,

mußt nix groß testen. xmComm drauf, arduino anstecken, los...

gruß stefan

PS.: achja, com-port einstellen im VBA-code nicht vergessen.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 28, 2013, 09:20 am
mußt nix groß testen. xmComm drauf, arduino anstecken, los...
Ich bekomme die Excel-Datei nicht runtergeladen. Da kommt immer nur ein unvollständiger Download an: Serial.xls.xb5k7ku.partial
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: Eisebaer on Apr 28, 2013, 11:13 am
seltsam, ich kann sie downloaden.
ich probier's als zip...

gruß stefan

EDIT: zip ist kaputt, aber das excel sollte funktionieren...
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: obiwan on Apr 28, 2013, 12:24 pm
Ich bekomme schon wieder einen Fehler
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: guntherb on Apr 28, 2013, 12:58 pm
Die ZIP datei kann ich auch nicht öffnen.
Die Excel hingegen schon.
Title: Re: Steuerung des Arduino via Excel (VBA) möglich?
Post by: Eisebaer on Apr 28, 2013, 01:38 pm
die zip wurde wirklich beim hochladen beschädigt. auch als rar das gleiche ergebnis.
aber das excel geht, keine ahnung, wieso bei obiwan nicht.
ich kann's Dir's, obiwan, per mail schicken. PN genügt...

gruß stefan