Forum: Mikrocontroller und Digitale Elektronik Serieller Monitor bei Arduino


von Hans F. (Gast)


Lesenswert?

Gude Mosche,

Oben rechts beim Arduino Programm gibt es den Button "Serieller Monitor"

Wer kennt sich damit aus?

Was ich möchte:

Ich möchte mehrere int Variablen über den Seriellen Monitor verändern. 
Das Problem ist vor allem, wie kann man zwischen den int Variablen 
auswählen um dann den Wert einzugeben?

von Rainer U. (r-u)


Lesenswert?

Hans F. schrieb:
> Wer kennt sich damit aus?

liest Du z.B. hier:
http://coptermagazin.de/arduino-grundlagen-teil-11-serielle-schnittstelle/

Hans F. schrieb:
> Ich möchte mehrere int Variablen über den Seriellen Monitor verändern.
> Das Problem ist vor allem, wie kann man zwischen den int Variablen
> auswählen um dann den Wert einzugeben?

Ein passendes Programm schreiben. (es ist kein Debugger/Simulator)

von Stefan F. (Gast)


Lesenswert?

Der Monitor sendet einfach nur deine Eingaben an den µC und zeigt an, 
was der µC an den PC sendet. Genau dafür und nicht mehr ist er gedacht.

Variablen Modifizieren ist Aufgabe deines Programmes.

von Einer K. (Gast)


Lesenswert?

Wenn man es schöner haben will, kann man auch ncurses und putty 
verwenden.

Der serielle Monitor ist zu doof/primitiv für schöne Menues.

von Hans F. (Gast)


Lesenswert?

Dann wäre es wohl besser eine Benutzeroberfläche zu erstellen. Welches 
wäre für meinen Fall empfehlenswert?

Es sollen wie gesagt mehrere Variablen über diese Benutzeroberfläche 
veränderbar sein, damit ich es nicht ständig im Programmcode ändern und 
jedes mal hochladen muss.

von Stefan F. (Gast)


Lesenswert?

Kannst du gerne machen. BNedenke jedoch, daß auch dieses Programm 
irgendwie mit einem µC kommunizieren muss. Es gibt ja keine direkte 
Verbindung vom Bildschirm deines Computers zum RAM des Mikrocontrollers.

Ich würde im ersten Schritt eine serielles Kommunikationsprotokoll 
implementieren, dass man mit dem Serial Monitor testen kann. Ich könnte 
mir Befehle wie

"set A to 12"

vorstellen, die als text an den µC gesendet werden. Der interpretiert 
den Text und sende eine Erfolgsmeldung zurück.

Wenn dass dann läuft, kannst du im nächsten Scritt eine Bunte Windows 
Oberfläche programmieren, die das ganze schön darstellt und seriell mit 
dem µC kommuniziert.

von Brain 2.0 (Gast)


Lesenswert?

Warum muss denn der Serielle Monitor dafür herhalten ?
Da muss der Arduino ständig am PC hängen.
Du kannst die Variablen doch auch direkt im Arduino ändern.
Anzeigen in einem LCD und auswählen per Taster oder Drehimpulsgeber und 
anschließendem füllen der Variablen.

von Hans F. (Gast)


Lesenswert?

Das ist schwieriger als ich dachte. Habe es mit Matlab versucht, aber 
die ganzen Bibliotheken die ich benutzen machen schwierigkeiten.
Das kann doch nicht so schwierig sein?! Irgendeine einfache Lösung 
sollte es doch geben?

Stefan U. schrieb:
> Kannst du gerne machen. BNedenke jedoch, daß auch dieses Programm
> irgendwie mit einem µC kommunizieren muss. Es gibt ja keine direkte
> Verbindung vom Bildschirm deines Computers zum RAM des Mikrocontrollers.
>
> Ich würde im ersten Schritt eine serielles Kommunikationsprotokoll
> implementieren, dass man mit dem Serial Monitor testen kann. Ich könnte
> mir Befehle wie
>
> "set A to 12"
>
> vorstellen, die als text an den µC gesendet werden. Der interpretiert
> den Text und sende eine Erfolgsmeldung zurück.
>
> Wenn dass dann läuft, kannst du im nächsten Scritt eine Bunte Windows
> Oberfläche programmieren, die das ganze schön darstellt und seriell mit
> dem µC kommuniziert.

Ich weiß doch wie man eine Variable mit dem Seriellen Monitor verändert. 
Das Problem ist, wenn man mehrere Variablen zum verändern hat oder was 
meinst du genau?

Brain 2.0 schrieb:
> Warum muss denn der Serielle Monitor dafür herhalten ?
> Da muss der Arduino ständig am PC hängen.
> Du kannst die Variablen doch auch direkt im Arduino ändern.
> Anzeigen in einem LCD und auswählen per Taster oder Drehimpulsgeber und
> anschließendem füllen der Variablen.

Nein, es kann auch alles andere sein, aber einen LCD Teil habe ich 
leider nicht

von Stefan F. (Gast)


Lesenswert?

> Ich weiß doch wie man eine Variable mit dem Seriellen Monitor verändert.
> Das Problem ist, wenn man mehrere Variablen zum verändern hat oder was
> meinst du genau?

Wo ist das Problem, wenn du so etwas bereits für eine Variable 
implementiert hast? Anstatt wild herum zu raten würde ich gerne konkrete 
Hilfe für ein konkretes Problem geben. Aber das musst du schon selbst 
beschrieben. Ein bisschen Quelltext und Scrennshots zeigen könnte 
eventuell hilfreich sein.

> Irgendeine einfache Lösung sollte es doch geben?

Ja, ein Debugger.

von Einer K. (Gast)


Lesenswert?

Warum nicht den CmdMessenger3 verwenden?
Der ist fertig, und hat alles eingebaut, was man für diesen Zweck 
braucht.

von VersuchMachtKlug (Gast)


Angehängte Dateien:

Lesenswert?

Wenn Du Windows benutzt, versuch es mal mit SerialComInstruments 4.
Hier gibt es 4 Möglichkeiten numerische Werte an den Arduino zu senden, 
siehe Bild.

von Hans F. (Gast)


Lesenswert?

Arduino F. schrieb:
> Warum nicht den CmdMessenger3 verwenden?
> Der ist fertig, und hat alles eingebaut, was man für diesen Zweck
> braucht.

Hast du vllt ein Beispiel? Hab hier:

https://github.com/thijse/Arduino-CmdMessenger

ein Beispiel gefunden, aber damit kann man überhaupt nichts anfangen.

VersuchMachtKlug schrieb:
> Wenn Du Windows benutzt, versuch es mal mit SerialComInstruments
> 4.
> Hier gibt es 4 Möglichkeiten numerische Werte an den Arduino zu senden,
> siehe Bild.

Hab den mir heruntergeladen, aber ehrlich gesagt keine Ahnung wie das 
mit Arduino funktionieren soll. Kann ich überhaupt meinen vorhandenen 
Code hier verwenden? Das wäre wichtig, weil ich sehr viele Bibliotheken 
verwende. Informationen im Netz ist leider mangelware

von Einer K. (Gast)


Lesenswert?

Hans F. schrieb:
> ein Beispiel gefunden, aber damit kann man überhaupt nichts anfangen.
10 Beispiele sind dabei....

Und wieso überhaupt "man"?
Du!

Wie soll dir ein Beispiel von mir helfen, wenn dir die 10 mitgelieferten 
nichts sagen?
Nein, ich glauben nicht dass irgendwelche Beispiele, von mir, einfacher 
sind.

Hans F. schrieb:
> Das Problem ist vor allem, wie kann man zwischen den int Variablen
> auswählen um dann den Wert einzugeben?
Wenn du sie in ein Array stopfst, könntest du einen Index verwenden.
Alternativ, für jede Variable ein eigenes Kommando.


Du musst dir also Kommandos ausdenken!
So viel wie du brauchst, um deine ganzen Variablen zu ändern.

Hans F. schrieb:
> Kann ich überhaupt meinen vorhandenen
> Code hier verwenden?
Auch wenn es dich jetzt überrascht: Wir kennen deinen Code nicht!
Also kann ich dir die Frage nicht beantworten.

von Joachim B. (jar)


Angehängte Dateien:

Lesenswert?

Hans F. schrieb:
> Gude Mosche,
> Was ich möchte:
> Ich möchte mehrere int Variablen über den Seriellen Monitor verändern.
> Das Problem ist vor allem, wie kann man zwischen den int Variablen
> auswählen um dann den Wert einzugeben?

kannst du programmieren oder nur C&P?


für jede Variable legst du einen "Befehl" an

z.B. "A="

sendest also "A=15"

wenn der Ardu im empfangenen Text "A=" findet braucht er ja nur noch 
"A=" entfernen oder ab dahinter die 15 in A zu speichern

siehe Beispiel up in meinem Ausschnitt

von Brain 2.0 (Gast)


Lesenswert?

Hans F. schrieb:
> Nein, es kann auch alles andere sein, aber einen LCD Teil habe ich
> leider nicht

Die LCD's sind nicht so teuer. Bekommst du auch hier in DL für wenige 
Euro.
Google mal nach "arduino lcd 16x2", da ist die Auswahl groß.

von Einer K. (Gast)


Lesenswert?

Brain 2.0 schrieb:
> Die LCD's sind nicht so teuer. Bekommst du auch hier in DL für wenige
> Euro.

Ich befürchte, dass bei der Menueführung, und Drehencoder Auswertung, 
auch wieder eine Überforderung eintritt.

Aber ja, irgendwo muss man ja anfangen, mit lernen und üben, üben und 
lernen.

von Brain 2.0 (Gast)


Lesenswert?

Arduino F. schrieb:
> Ich befürchte, dass bei der Menueführung, und Drehencoder Auswertung,
> auch wieder eine Überforderung eintritt.

Ja, ok....
Das kann ich gerade nicht beurteilen, aber du magst Recht haben.

Allerdings um die Variablen zu ändern, bedarf es keinem aufwändigen 
Menü, nur ein "wenig" Erfahrung in der Programmierung. Und da sehe ich 
dann auch wieder ein Problem.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Hans F. schrieb:
> Ich möchte mehrere int Variablen über den Seriellen Monitor verändern.

Beschreibe doch erstmal Dein Projekt und warum Du Variablen über eine 
Schnittstelle ändern möchtest. Danach kann man sich Gedanken über eine 
geeignete (Benutzer-)Schnittstelle machen.

Wir wissen ja gar nicht, was Du mit dem Ändern der Variablen überhaupt 
erreichen willst. Den Wert einer Variablen zwischen zwei Werten springen 
zu lassen kann ich zum Beispiel auch mit einem Umschalter erreichen. Mit 
einem simplen Taster können das auch mehrere Werte sein, zwischen denen 
man wechselt.

Also setze uns bitte mal in Kenntnis, was Du erreichen willst. Die 
Formulierung "mehrere Variablen ändern" ist so pauschal, dass man sich 
darunter alles mögliche vorstellen kann. Möchtest Du dies tatsächlich 
durch Eingabe in einem Terminalprogramm über die serielle Schnittstelle 
machen, musst Du einen kleinen Interpreter schreiben, der die Eingaben 
auch auswertet. Joachims Beispiel war da ein erster Ansatz.

Aber vielleicht soll Dein µC auch autonom, d.h. ohne angeschlossenen PC 
laufen? Dann braucht man entsprechende "Eingabegeräte". Das können zum 
Beispiel Taster oder auch ein Drehgeber sein.

von Joachim B. (jar)


Lesenswert?

Frank M. schrieb:
> ... Joachims Beispiel war da ein erster Ansatz.
>
> Aber vielleicht soll Dein µC auch autonom, d.h. ohne angeschlossenen PC
> laufen? Dann braucht man entsprechende "Eingabegeräte". Das können zum
> Beispiel Taster oder auch ein Drehgeber sein.

oder ein usb LANport -> sharkoon
https://www.google.de/search?q=sharkoon+usb+server&ie=utf-8&oe=utf-8&client=firefox-b&gfe_rd=cr&ei=YApWWfbTB7OF8Qfd35iQCw#q=sharkoon+usb+LANport

oder ein PI mit virtualHERE
https://www.virtualhere.com/

oder oder oder

ich steuere meinen Arduino per WEB, respektive ändere up oder down 
Zeiten oder steuere manuell über WEB an Arduino die Rolladen up/down

von Hans F. (Gast)


Lesenswert?

Frank M. schrieb:
> Hans F. schrieb:
>> Ich möchte mehrere int Variablen über den Seriellen Monitor verändern.
>
> Beschreibe doch erstmal Dein Projekt und warum Du Variablen über eine
> Schnittstelle ändern möchtest. Danach kann man sich Gedanken über eine
> geeignete (Benutzer-)Schnittstelle machen.
>
> Wir wissen ja gar nicht, was Du mit dem Ändern der Variablen überhaupt
> erreichen willst. Den Wert einer Variablen zwischen zwei Werten springen
> zu lassen kann ich zum Beispiel auch mit einem Umschalter erreichen. Mit
> einem simplen Taster können das auch mehrere Werte sein, zwischen denen
> man wechselt.
>
> Also setze uns bitte mal in Kenntnis, was Du erreichen willst. Die
> Formulierung "mehrere Variablen ändern" ist so pauschal, dass man sich
> darunter alles mögliche vorstellen kann. Möchtest Du dies tatsächlich
> durch Eingabe in einem Terminalprogramm über die serielle Schnittstelle
> machen, musst Du einen kleinen Interpreter schreiben, der die Eingaben
> auch auswertet. Joachims Beispiel war da ein erster Ansatz.
>
> Aber vielleicht soll Dein µC auch autonom, d.h. ohne angeschlossenen PC
> laufen? Dann braucht man entsprechende "Eingabegeräte". Das können zum
> Beispiel Taster oder auch ein Drehgeber sein.


Unter anderem will ich die Helligkeit von 5 Leuchten regeln (8Bit). 
Meine 5 Variablen sollen also Werte zwischen 0 und 256 annehmen können. 
Ich möchte aber nicht jedes mal die Variable im Code ändern und das 
Programm jedes mal neu hochladen. Also möchte die Variablen irgendwie am 
PC ändern, wie ist egal, nur soll es am PC stattfinden und nicht extern.

Hab viele, ich denke auch gute Antworten bzw. Möglichkeiten erhalten, 
aber irgendwie bin ich zu dumm diese umzusetzen. Ich versuche es 
jedenfalls weiter

von Brain 2.0 (Gast)


Lesenswert?

Naja, warum einfach, wenn es auch umständlich geht.
Ohne PC ist es sicher einfacher oder besser mit dem Arduino zu lösen.

Aber ok, du möchtest nicht.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Hans F. schrieb:
> Unter anderem will ich die Helligkeit von 5 Leuchten regeln (8Bit).

Einfachste Möglichkeit: Für jede der 5 Leuchten einen Taste. Wird diese 
gedrückt, dann erhöhst Du die Helligkeit für die Leuchte um 1, bei 
Ankommen bei 255 erniedrigst Du die Helligkeit wieder, bis sie wieder 
bei 0 angelangt ist. Dann drückst Du die Taste solange bis die 
gewünschte Helligkeit erreicht hast. Das ist einfacher, als jedes Mal 
den PC hochzufahren.

von Joachim B. (jar)


Lesenswert?

Hans F. schrieb:
> Unter anderem will ich die Helligkeit von 5 Leuchten regeln (8Bit).
> Meine 5 Variablen sollen also Werte zwischen 0 und 256 annehmen können.
> Ich möchte aber nicht jedes mal die Variable im Code ändern und das
> Programm jedes mal neu hochladen. Also möchte die Variablen irgendwie am
> PC ändern, wie ist egal, nur soll es am PC stattfinden und nicht extern.

???
wer bedient denn sonst Geräte über einen PC,

du deinen Herd?
oder stellst du deine Uhren über den PC?

einfacher wären doch Tasten am Arduino!
aber nun gut, wenn dein Arduino am PC hängt dann sende deine Befehler 
per HTERM oder Hyperterm

> Hab viele, ich denke auch gute Antworten bzw. Möglichkeiten erhalten,
> aber irgendwie bin ich zu dumm diese umzusetzen. Ich versuche es
> jedenfalls weiter

nun ja einen Programmierkurs und selber lernen kann das Forum nicht 
ersetzen.

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

Brain 2.0 schrieb:
> Aber ok, du möchtest nicht.

Da bin ich mir nicht sicher...

Es ist wohl eher das "Ochs vorm Berge" Problem.

Ich würde mich ja fragen: "Was will ich überhaupt?"
Und dann: "Wie kann ich es erreichen?"

Dann würde ich mir überlegen, wie viele Kommandos soll der Arduino 
verstehen?

Hier scheint 1 Kommando zu reichen.
Bisher.

Ich nenne es mal: "Set", oder einfach nur "S"

z.B: um um PWM Kanal 2 auf 128 zu setzen:
S,2,128;

Wenn es nur dieses Kommando gibt, kann man das S auch weg lassen.
also z.B. 2,128; oder 2=128 oder oder oder

Das ist leicht auf der seriellen Konsole einzugeben.
Und relativ leicht zu parsen.

Wobei ich sagen muss, dass Eingaben parsen, schon eine Hürde sein kann.
Aber eine Hürde, die man sowieso irgendwann mal nehmen muss, wenn man 
denn irgendwann mal, erfolgreich und flüssig, programmieren möchte.

von Praktikus (Gast)


Lesenswert?

Hans F. schrieb:
> Ich möchte aber nicht jedes mal die Variable im Code ändern und das
> Programm jedes mal neu hochladen. Also möchte die Variablen irgendwie am
> PC ändern, wie ist egal

Wenn die Lampen eh am PC hängen ist es doch egal ob du irgend welche 
Variablen separat änderst oder mit einen neuen Sketch hochlädst.

von Brain 2.0 (Gast)


Lesenswert?

Arduino F. schrieb:
> Brain 2.0 schrieb:
>> Aber ok, du möchtest nicht.
>
> Da bin ich mir nicht sicher...

Naja, er schrieb es aber so:
> Also möchte die Variablen irgendwie am
> PC ändern, wie ist egal, nur soll es am PC stattfinden und nicht extern.

Und bei 5 Variablen ist das intern kein Thema, da braucht man keinen PC.

Mit einem Taster die Variable auswählen (wird durch eine Led angezeigt) 
und mit einem Drehgeber (wurde hier auch schon mehrfach erwähnt) den 
Wert der Variablen hoch bzw. runterstellen. Dies kann evtl. an einem LCD 
angezeigt werden.

Alles einfacher als mit dem PC, nur man muss auch programmieren können. 
Das geht nicht einfach nur per C&P.

von Einer K. (Gast)


Lesenswert?

Brain 2.0 schrieb:
> Alles einfacher als mit dem PC,
??

Hier ein Beispiel mit dem CmdMessenger:
1
#include <CmdMessenger.h>
2
3
4
5
CmdMessenger cmdMessenger = CmdMessenger(Serial);
6
7
void  OnSetDimmer()
8
{
9
  byte pin   = cmdMessenger.readInt16Arg(); 
10
  byte value = cmdMessenger.readInt16Arg(); 
11
  if(digitalPinToTimer(pin))
12
  {
13
    analogWrite(pin,value);
14
    Serial.println("OK");
15
  }else
16
  {
17
    Serial.println("Not a PWM Pin");
18
  }
19
}
20
21
void setup() 
22
{
23
  Serial.begin(9600); 
24
  cmdMessenger.attach(1, OnSetDimmer);
25
}
26
27
void loop() 
28
{
29
   cmdMessenger.feedinSerialData();
30
}

Es kennt (bisher) nur ein Kommando: die 1, Für Set
Es erwartet einen Arduino Pin Bezeichner.
Und ein Value.
Die 3 Elemente werden durch Komma separiert und mit einem Semikolon 
abgeschlossen.

Es wird geprüft, ob der Pin ein PWM fähiger Pin ist, und wenn ja, wird 
das PWM Value gesetzt.

z.B: Pin 11 soll auf 128 gesetzt werden
1,11,128;

z.B: Pin 3 soll auf 255 gesetzt werden
1,3,255;

von Stefan F. (Gast)


Lesenswert?

> Wenn die Lampen eh am PC hängen ist es doch egal ob du irgend welche
> Variablen separat änderst oder mit einen neuen Sketch hochlädst.

Nach 10.000 mal hochladen ist der µC des Arduino Boardes warscheinlich 
kaputt/verschlissen.

von Erwin D. (Gast)


Lesenswert?

Stefan U. schrieb:
>> Wenn die Lampen eh am PC hängen ist es doch egal ob du irgend
> welche
>> Variablen separat änderst oder mit einen neuen Sketch hochlädst.
>
> Nach 10.000 mal hochladen ist der µC des Arduino Boardes warscheinlich
> kaputt/verschlissen.

Wenn die Lampen am PC hängen, braucht er nicht mal den Arduino!

von Stefan F. (Gast)


Lesenswert?

Ein PC kann aber keine Lampen dimmen - ohne zusätzlichen 
Mikrocontroller.

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.