Go Down

Topic: [SUCHE] Einen Programmierer für einen GUI, der Parameter ins EEPROM lädt. (Read 2 times) previous topic - next topic

waxmuth

Guten Abend,

so, versuche es auch hier nochmal.

Da mir das Projekt echt viel bedeutet, brauche ich dringed Hilfe.

Ich suche jemanden, der einen GUI fertigstellt, welcher den bereits hochgeladenen Sketch im Arduino per USB anpasst bzw. modifiziert. Auch ein Tool, welches ein Template modifiziert und dieses dann auf den Arduino lädt, wäre denkbar. Ich habe schon im Visual Basic-Forum und im AVR Forum gefragt. Aber entweder die einen kennen sich nicht mit Arduino aus, oder die anderen haben keine Kenntnisse in Visual Basic.

Vielleicht habe ich hier endlich mal den Nerv getroffen? Ich habe in Visual Basic mal die Oberfläche entworfen, die Code fehlt halt noch. Die Arduino-Sketch habe ich mal angehängt. So ungefähr wird er aussehen, bloß dass noch 5 weitere Ausgänge hinzukommen und der Ausgang 13 auf einen anderen, PWM-fähigen Ausgang angepasst wird.

Angepasst in dem Code werden nur PWM-Frequenz, Delay und Einschaltdauer des jeweiligen Ausgangs.

Der Arduino-Code steht, das ganze sollte aber sehr leicht und trotzdem schön umgesetzt werden.

Alternativ wäre auch eine Umsetzung in AVR ohne Arduino Bootloader möglich, damit kenne ich mich aber leider nicht aus. Auch da würde ich mich freuen, wenn mir geholfen wird!

Als Entlohnung ließe sich logischerweise über Geld sprechen. Würde mich natürlich über kostenlose Arbeit freuen, aber ich weiß auch, dass Zeit = Geld ist 8)


Ich würde mich extremst freuen, wenn mir jemand helfen würde!


Liebe Grüße,

waxmuth

Hier noch der Code:

Code: [Select]
void setup()  {
 pinMode(13, OUTPUT);
}

void loop()  {
 digitalWrite(13, HIGH);  
 delay(10);
 digitalWrite(13, LOW);
 delay(200);
 digitalWrite(13, HIGH);  
 delay(10);
 digitalWrite(13, LOW);
 delay(200);
 digitalWrite(13, HIGH);  
 delay(10);
 digitalWrite(13, LOW);
 delay(200);
 digitalWrite(13, HIGH);  
 delay(50);
 digitalWrite(13, LOW);
 delay(1500);
}


Bild der Oberfläche hängt an


sth77

Vorweg: Ich bin die nächsten Monate ausgebucht... :D
Aber da, was du vorhast, ist doch keine Änderung des Sketches. Da gibt man doch nur weiter, welcher Ausgang wie beschaltet werden soll. Im Prinzip das, was mit Firmata möglich ist, wenn ich mich recht entsinne: http://firmata.org/wiki/Main_Page
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

erni-berni

Mein erster Ansatz dazu:
Lass VB über die serielle Schnittstelle die Parameter aus der GUI an den Arduino senden. In VB geht das über MS Comm Control 6.0, ich selbst habe das aber noch nicht gemacht.
Der Arduino horcht, ob was gesendet wird und ändert daraufhin die Zustände der Pins.

waxmuth

Guten Morgen,

ich bedanke mich schonmal für eure Hilfe.

Das Problem ist aber, dass ich die Werte auf dem Arduino so anpassen will, dass er sie auch im computerlosen Zustand behält.

Beispielsweise setze ich im GUI den delay von 100ms auf 1000ms. Dann auf den Arduino "uploaden" und er übernimmt das ganze so auch.

Aus meiner Sicht ist das doch eine Anpassung des Sketches?! :smiley-red:

Bitte korrigiert mich und helft mir :)



Vorweg: Ich bin die nächsten Monate ausgebucht... :D
Aber da, was du vorhast, ist doch keine Änderung des Sketches. Da gibt man doch nur weiter, welcher Ausgang wie beschaltet werden soll. Im Prinzip das, was mit Firmata möglich ist, wenn ich mich recht entsinne: http://firmata.org/wiki/Main_Page



Habe mir das eben mal angesehen. Prinzipiell ist der Ansatz nicht schlecht. Der Arduino behält auf jeden Fall seinen Zustand, wenn man das Programm beendet. Zieh man in aber vom USB ab und beendet das Programm und steckt ihn wieder hinein, ist logischerweise nix mehr da. Also das ist praktisch eine Livesteuerung + Analogauswertung.

Aber ich möchte ja auch das Timing anpassen. So ganz klappen kann das doch nicht, oder liege ich da falsch? :smiley-red: :smiley-red:


Das ganze soll an Board eines RC-Flugzeugs mitgenommen werden, deshalb muss das Setting bzw. die Werte gespeichert werden. PCB Layout steht, die Ardu-Software werkelt ja auch. Aber an Visual Basic hapert es. Wenn jemand was vernünftiges, einfaches und kleines umsetzt, lässt sich gerne über eine Entlohnung reden.
waxmuth

uwefed

Der Sketch muß nicht für die Anpassung der Werte verändert werden. Es müssen nur die Parameten übertragen werden und der Sketch nimmt diese vom PC entgegen und speichert sie zB im internen EEPROM ab. Nach dem Einschalten werden die Werte aus dem EEPROM gelesen und diese für die PWM-Frequenz, Delay und Einschaltdauer verwendet.

Viele Grüße Uwe

waxmuth

Morgen,

Danke für die hilfreiche Antwort!!

Da bin ich ja gar nicht drauf gekommen, kenne mich nicht ganz mit dem umfang eines arduino aus.


Ntürlich, das EEPROM gibts ja auch noch, man man man :smiley-mr-green:

So, wenn mir da jetzt noch jemand bei der Umsetzung helfen könnte... Ich wäre ja so sehr dankbar!!


Waxmuth

uwefed

Unter Hilfe verstehen wir: Du schreibst den Sketch und wir helfen die Fehler auszubügeln.
Grüße Uwe

waxmuth

Ups, ja ich meinte das anders. Sage ich es so: wenn mir das jemand umsetzen würde, würde ich mich sehr freuen.

Ich gucke mir das nachher aber auch nochmal selber an, wenn ich am PC bin.

Die Umsetzung als Sketch könnte ich mit eurer Hilfe bestimmt schaffen, aber Visual Basic... Das wir nix, und im VB-forum kennt sich leider keiner mit Arduino aus.


Liebe Grüße,

Yannick

sth77

Der VB-Programmierer muss nichts vom Arduino verstehen, der Hardware-Programmeirer nichts von VB. Es muss nur ein Protokoll definiert werden, nach dem beide zusammenspielen. So muss das VB-Programm nur eine von dir definierte Zeichenfolge über die serielle Schnittstelle schicken, z.B. in dieser Art: D01,1, heißt "übersetzt" setze digitalen Ausgang 1 auf HIGH. Der Arduino muss dieses Protokoll auswerten, lauscht also an der seriellen Schnittstelle. Ob er einen Rückgabewert an das VB-Programm sendet oder nicht, liegt an der Definition des Protokolls. Und da bist du gefragt, das musst du vorgeben, bevor irgendjemand mit der Arbeit beginnen kann.
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

waxmuth

Ja, das wird ja immer besser :)

So langsam blicke ich da auch durch.

Das protokoll könnte ja folgendermaßen aussehen:

Code: [Select]

P03-50-10
W50
P05-50-50
W50
P06-70-20
W50


p03 für ausgang 03, zweiter wert (z.b. 50) pwm-frequenz und der 3. Wert der Zeile als einschaltdauer.
W50 steht für das delay zwischen den beiden schritten.

Eine Rückgabe wäre nicht von nöten.

Waxmuth

Trib

Hallo zusammen,

darin sehe ich ebenfalls kein Problem. Man kann einfach per SerialRead die neuen Werte einlesen und in den eeprom schreiben. Beim nächsten Start liest man diese dort aus.
Das VB Programm muss lediglich um die Komponente für die Serielle Schnittstelle erweitert werden, die im rein lesenden Zugriff in Sekunden programmiert ist.
Dank .NET gibt es dort aber auch massenweise fertige Komponenten, die auch beim Lesen die allermeisten Fehlerquellen berücksichtigen.
Z.B. Hier:
Serial Port Communication

Kann dir gerne bei Problemen helfen. Aber Vorsicht! Bin C#-ler  :D

waxmuth


Kann dir gerne bei Problemen helfen. Aber Vorsicht! Bin C#-ler  :D


:smiley-mr-green: so lange es funktioniert, ist mir das wuppe.

Ich habe wie gesagt leider keine Ahnung von Schnittstellenprogrammierung, und von VB erst recht nicht.

Deswegen wäre ich sehr froh, wenn ich mit dir zusammenarbeiten könnte :)

Yannick

Trib


Ich habe wie gesagt leider keine Ahnung von Schnittstellenprogrammierung, und von VB erst recht nicht.


Das Du keine Ahnung von Schnittstellen hast, ist nicht wild. Aber warum startest Du ein VB-Projekt, wenn Du das auch nicht kannst?  :smiley-eek:

Der von mir gepostete Link ist dann natürlich schon etwas komplex, da in dem Tutorial von dem Optimum der Schnittstellenprogrammierung ausgegangen wird.
Letztendlich ist es aber so, dass man die Klasse SerialPort aus dem Namespace System.IO.Ports nutzen kann.
Code: [Select]
Imports System.IO.Ports
Dann instanziert man den Spaß und übergibt die Einstellungen des Ports. Das bekommt man Dank Visual Studio ganz einfach hin, in dem man einen Punkt hinter die Klasse macht (Intellisense nennt sich das). Dort kann man dann die Übertragungsrate, die Port Nummer und vieles mehr übergeben.

Code: [Select]
Private comPort As New SerialPort()
comPort.BaudRate = 8000
comPort.Port = 'COM1'
...usw...
If Not (comPort.IsOpen = True) Then
  comPort.Open()
comPort.Write("Text der übermittelt wird")

Falls nötig könnte man nun ein Event zu abbonieren, um ein mögliches Ergebnis vom Arduino zu empfangen.
Code: [Select]
AddHandler comPort.DataReceived, AddressOf comPort_DataReceived

Natürlich kann ich Dir das auch "mal eben" komplett programmieren. Aber wo wäre dann der Lerneffekt ;-)
So schwierig ist das Ganze wirklich nicht! Denke es sind alle wichtigen Elemente benannt.

waxmuth


Das Du keine Ahnung von Schnittstellen hast, ist nicht wild. Aber warum startest Du ein VB-Projekt, wenn Du das auch nicht kannst?  :smiley-eek:


Einfach mal reinschauen :smiley-mr-green: :smiley-mr-green:

Habe vor einiger Zeit mal einen Umrechner von Fahrenheit in Clesius gebastelt, das war aber auch eher nach Anleitung :D

Hmm,

lieber wäre es mir, du würdest den Code fertigstellen, aber du hast natürlich nicht ganz unrecht.


...So schwierig ist das Ganze wirklich nicht!


Das sehe ich leider ganz anders :smiley-red: Ich habe aktuell nicht mal eine Idee, wo ich da überhaupt ansetzen müsste.

Yannick

funkedelic

ich kann dir zwar nicht helfen, dich aber vieleicht ein wenig ermuntern!

ich habe mir anfang januar meinen erstes arduino board geholt. hatte bis dahin noch nicht wircklch damit zu tun.
jetzt nach fast 4 wochen habe ich meine terrarien-steuerung fast fertig. es ist zwar einiges an arbeit sich alles mal durchzulesen aber es geht.

ich würde sagen das ich dein projekt jetzt nach knapp 4 wochen ganz alleine hin bekommen würde mit arduino und processing! wenn du processing noch nicht kennst, guck es dir an. die ide ist wie die arduino ide aufgebaut, benutzt aber java und kein c als grundgerüst. gibt es aber viele anleitung und tut´s im netz zu. damit könntest du auch die pins direkt ansprechen.

cu

Go Up