Forum: Mikrocontroller und Digitale Elektronik [Arduino-Control] - Analyse und Steuerung des Arduino (oder kompatible Boards)


von Martin L. (sbond)



Lesenswert?

hier ist immer die laufend aktualisierte Version:
http://arduino.cc/forum/index.php/topic,141146.0.html

-----------------------------------------------------------


Arduino-Control


Version: 0.6.2.0 Alpha
Datum: 06.12.2012



kurze Einleitung

Das Programm "Arduino-Control" dient allgemein zur Analyse und Steuerung 
von verschiedenen Arduino-Boards (bzw. kompatible Boards). Das Programm 
soll es ermöglichen, die Zustände der Pins und der Quellcode-Variablen 
am PC zu visualisieren und diese ggf. direkt zu verändern. Die 
ursprüngliche Idee, ein Oszilloskop zu programmieren, musste ich leider 
aufgeben, da die Hardware-Schnittstelle und die verwendete 
Programmiersprache in diesem Fall nicht geeignet sind.


Die Software befindet sich momentan noch im Alpha-Stadium. Sie läuft 
stabil, beinhaltet jedoch noch viele Fehler und Optimierungsprobleme. 
Außerdem werden einige Funktionen noch nicht verwendet, obwohl die 
Steuerungselemente im Programm schon verankert sind.




Das aktuelle Aussehen der Software:

Arduino-Control_-_0.6.2.0_Alpha_-_01.jpg:

In diesem Menü kann das verwendete Board ausgewählt und mit der Software 
verbunden werden. Die Modell-Auswahl hat in der aktuellen Version 
allerdings noch keinen Einfluss auf die Funktionalität des Programms.

Zu der Statusleiste:
die 2. Spalte zeigt an, in welcher Geschwindigkeit die Software arbeitet 
und wie schnell die Anzeige aktualisiert wird.
die 4. Spalte zeigt an, in welcher Frequenz die Ansicht der Software 
aktualisiert wird.
die 5. Spalte zeigt an, wie viele Datenpakete pro Sekunde empfangen 
werden.  (Der Wert ist momentan fehlerhaft und sollte ignoriert werden)
die 6. Spalte zeigt an, wie viele Daten pro Sekunde empfangen werden. 
(Bei einer Baudrate von 250000 liegt das Maximum bei 25 KB/s)


Arduino-Control_-_0.6.2.0_Alpha_-_02.jpg:

Im "Live Graph"-Menü können Signalverläufe dargestellt werden. Bei einem 
langsamen Laptop (wie bei mir) können ca. 100-300 Werte/sek geplottet 
werden.
Bei besseren Rechnern liegt der Wert bei ca. 400-1000 Werte/sek. Es 
können zur Zeit 660 Werte dargestellt werden, anschließend werden die 
alten Werte überschrieben.
Dies lässt sich durch die Einstellung der Auflösung (im Programm) 
einstellen. Leider sind hohe Plottgeschwindigkeiten aktuell nicht 
möglich. Zum einen sind noch viele Optimierungsprobleme in der 
Programmierung zu beheben, zum anderen nutzt das Programm nur 1 Kern der 
CPU (die Grafikkarte wird gar nicht verwendet)



Arduino-Control_-_0.6.2.0_Alpha_-_03.jpg:

Das Menü "Prozessabbild" zeigt die Zustände der Pins/Variablen an, die 
Überwacht werden sollen. Mit Linksklick auf die Blöcke (digitale Pins) 
oder auf die Balkendiagramme (analoge Pins / Variablen) können die 
Zustände überwacht bzw. die Überwachung der Zustände deaktiviert werden. 
Wird auf ein Block geklickt, so sendet die Software augenblicklich die 
Anforderung an das Board.

graue Box: Pin wird überwacht und der aktuelle Zustand ist LOW
grüne Box: Pin wird überwacht und der aktuelle Zustand ist HIGH
rote Box: Pin wird nicht überwacht. Sollten jedoch Daten empfangen 
werden, so wird der Zustand auf überwacht gesetzt.
gelbe Box: Pin sollte überwacht werden, aber es werden keine Daten 
emfangen. Nach einem Timeout, wird der Pin nicht mehr überwacht. (-> 
rote Box)

Gründe:
-zu viele Daten wurden gesendet oder es kam zu Übertragungsfehlern
-Mein Programm ist eben noch eine Alpha-Version :P    Der Header für den 
Arduino-Quellcode ist noch fehlerhaft. Dadurch werden z.B. die letzten 
Pins manchmal nicht gesendet oder die Übertragung wird abgebrochen)




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;D;13;R;1;#e

#s;   -> Datenpaket anfang
D;     -> Digitaler Pin     (A, =Analog)
13;     -> Pin 13
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




Gruß
-SBond-

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.