Pages: [1] 2   Go Down
Author Topic: [SUCHE] Einen Programmierer für einen GUI, der Parameter ins EEPROM lädt.  (Read 2250 times)
0 Members and 1 Guest are viewing this topic.
Lemgo
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-cool


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


Liebe Grüße,

waxmuth

Hier noch der Code:

Code:
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

« Last Edit: April 03, 2012, 02:09:39 pm by waxmuth » Logged

Germany
Offline Offline
Edison Member
*
Karma: 48
Posts: 2338
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Vorweg: Ich bin die nächsten Monate ausgebucht... smiley-grin
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
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Cologne
Offline Offline
God Member
*****
Karma: 11
Posts: 511
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Lemgo
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley


Vorweg: Ich bin die nächsten Monate ausgebucht... smiley-grin
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
« Last Edit: January 29, 2012, 06:22:47 pm by waxmuth » Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21850
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Lemgo
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21850
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Lemgo
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: January 30, 2012, 03:28:38 am by waxmuth » Logged

Germany
Offline Offline
Edison Member
*
Karma: 48
Posts: 2338
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Lemgo
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja, das wird ja immer besser smiley

So langsam blicke ich da auch durch.

Das protokoll könnte ja folgendermaßen aussehen:

Code:
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
« Last Edit: January 30, 2012, 03:53:05 am by waxmuth » Logged

Germany
Offline Offline
Full Member
***
Karma: 1
Posts: 130
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-grin
Logged

Lemgo
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Kann dir gerne bei Problemen helfen. Aber Vorsicht! Bin C#-ler  smiley-grin

 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 smiley

Yannick
Logged

Germany
Offline Offline
Full Member
***
Karma: 1
Posts: 130
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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:
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:
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.
Logged

Lemgo
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-grin

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
« Last Edit: January 30, 2012, 08:12:54 am by waxmuth » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Pages: [1] 2   Go Up
Jump to: