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?
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)
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.
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.
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.
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.
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.
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
> 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.
Warum nicht den CmdMessenger3 verwenden? Der ist fertig, und hat alles eingebaut, was man für diesen Zweck braucht.
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.
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
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.
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
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ß.
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.
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.
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.
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
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
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.
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.
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
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.
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.
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.
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;
> 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.
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.