Arduino-Control
Version: 0.4.0.0 Alpha
Datum: 16.12.2012
Datei ist ganz unten (Anhang)
Linien: ganz oben (Ladung an/aus), in der Mitte (Pins der 7-Segmentanzeige), unten: Lade/Entlade-Kurve des Kondensators (10µF)
Hallo Leute,
...ich bin ganz neu hier
Ich habe mir vor kurzem ein Arduino-Board (und noch einige andere) zugelegt und bin begeistert.
Nach viel spielerei habe ich jetzt nach einer Möglichkeit gesucht, die vom Arduino gesendeten Daten (serial.print) auf einem PC zu visualisieren.
...quasi wie mit einem Oszilloskop. Leider war das Ergebnis der Suche sehr ernüchternd.
...und darum programmiere ich jetzt selber ein Software-Oszi.
Meine Software ist noch im Alpha-Stadium und wird später natürlich als Freeware angeboten.
Funktionen:
-Übertragung der Daten zwischen Software und Arduino mit einer Baudrate von 250000 (ca. 31 Kb/s ,maximal)
-maximale Baudrate 256000 (ich empfehle aber 250000)
-Bis zu 2850 Datenpakete können pro Sekunde ausgewertet werden.
-bis zu 10 Kanäle können gleichzeitig dargestellt werden (könnten noch sehr viel mehr sein, aber 10 sollten ja wohl reichen)
-der Zustand aller Analoge Pins,Digitale Pins, Variablen im Arduinocode, können angezeigt und auch im laufenden Betrieb geändert werden (auch setzen von PWM)
-neben dem Graph steht auch eine Konsole/Terminal zur Verfügung
wird auch noch kommen:
-Ping und Reaktionstest
-der freie SDRAM und die Laufzeit des Arduino können angezeigt werden
-Messen von Impulsen
-lesen/schreiben/sichern/rücksichern/formatieren des EEPROM
-Triggern von periodischen Signalen (steigende und fallende flanke)
-Single-Shot-Modus
-Rolling-Modus
-X-Y-Betrieb
-HoldOff-Modus
-Mittelwertbildung von Signalen
-Grenzwertüberwachung
-differenzbild von zwei Signalen erzeugen
-Datenlogging
-Offline-Auswertung + FFT
...und was noch so ansteht
Zur kommunikation mit dem Arduino wird im C-Code ein header eingebunden (benötigt ca. 8KB Flash und 0,5KB SDRAM. Dieser kommuniziert dann mit der Software automatisch.
Man sollte nur darauf achten, dass man in der Loop-Schleife nicht zu lange Delays einsetzt, da sonst das Oszilligramm sehr Zeitdiskret aussieht.
Ohne Header kann die Software aber noch "manuell" mit dem Arduino kommunizieren und oszilloskopieren.
Der einzige große Nachteil der Software.... es ist mit AutoIt geschrieben. Es ist also nur ein langsamer Interpreter.
Zum Zählen von 0 auf 1 Mrd braucht es bei mir 43 sek. (C braucht 4 sek und PureBasic schafft es in 0,3 sek.)
Bei meinen Tests auf verschiedenen Rechnern konnte ich 80 - 300 Messungen (aller Arduino-Eingänge/Ausgänge gleichzeitig) pro Sekunde plotten.
Sehr viel schneller geht es aber eh nicht, da man mit den ca. 20-30 Kb/s die man empfängt keine Darstellungsfrequenz im KHz-Bereich schafft.
Kurzes tutorial:
-Arduino-Control - 0.4 Alpha.rar entpacken
-den "ArduinoControl"-Ordner in arduino-1.0.3/libraries kopieren
-die Arduino IDE starten
- Datei -> Beispiele -> ArduinoControl -> minimal
- Auf den Arduino uploaden
jetzt kann man die "Arduino-Control - 0.4 Alpha.exe" starten Baudrate und COM-Port bestätigen und unten bei den Kanälen die Pins anzeigen.
Habe es erfolgreich getestet mit:
-Arduino Uno Rev. 3
-DFRduino nano328 (Arduino Nano v3.0 kompatibel)
-Freaduino MEGA2560 v1.2-White Color ( Arduino compatible)
zu der "senden"-Funktion:
steht schon da drin: #s;A;0;R;1;#e
#s; -> Datenpaket anfang
A; -> Analog in (D, Digital in/out)
0; -> Pin 0
R; -> Lesen (W, für schreiben)
1; -> Wert (1 ja, 0 Nein)
#e -> Datenpaket ende
das kann der Arduino übersetzen und führt dann den Befehl aus.
Beispiele:
#s;A;0;R;1;#e -> Analog in, Pin 0: wird nun gelesen und dauerhaft an die Software gesendet
#s;D;5;R;0;#e -> Digital in/out, Pin 5: der Zustand wird nicht mehr überwacht; es werden keine Daten mehr über diesen Pin an die Software gesendet
#s;A;3;W;120;#e -> Digital out, Pin 3: setze PWM mit dem Wert 120
#s;D;4;W;0;#e -> Digital out, Pin 4: setzt den Pin auf LOW
#s;D;4;W;1;#e -> Digital out, Pin 4: setzt den Pin auf HIGH
Werte, die vom Arduino gesendet werden: #s;D,6,0;A,2,342;...;...;...;#e
#s; -> Datenpaket anfang
D, -> Digital in/out
6, -> Pin 6
0; -> Wert 0
.... weitere Werte
#e -> Datenpaket ende
naja...
es würde mich freuen, wenn noch jemand eine gute Idee hätte, was man noch brauchen könnte. Testen könnt ihr natürlich auch. Allerdings funktioniert nur knapp die Hälfte der Funktionen (Alpha-Version )
mfg
-SBond-
Arduino-Control - 0.4 Alpha.rar (749 KB)