Forum: Mikrocontroller und Digitale Elektronik AVR über PC-Programm ansteuern?


von Daniel L. (grorkef)


Lesenswert?

Guten Abend,

ich möchte mir ein paar RGB Leisten bauen und die mit einem ATmega8 
ansteuerun. Das dürfte ich hinbekommen (vielleicht mit bisschen Hilfe 
aber ich denke das klappt) :)

Nun überlegte ich wie den Input für die Variablen mache wie RGB (oder 
HSV weis noch nicht ob ich das machen soll) und Programm auswahl, usw. 
und da dachte ich dran ein kleines einfaches Programm auf PC zu 
programmieren um den Mikrocontroller über USB Kabel die Befehle zu 
geben. Nun ist es so ich von PC-Programmierung so garkeine Ahnung habe 
:). Wollte mal hören ob es sehr aufwendig ist so etwas zu realiesieren 
und welche Sprache ich am besten verwende. Ich dachte da so an eine 
Zeitrahmen von 3-4 Wochen um das Programm zu fertig zu bekommen.

Soll einfach nur Fenster sehen mit:
- An/Aus
- Automatischer Farbwechsel/Geschwindigkeit
- RGB oder HSV als Feste Farbe

MFG Daniel L.

von Michael (Gast)


Lesenswert?

Hallo Daniel,
an was für eine Mikrocontroller hast du denn gedacht. Ich gehe davon aus 
mal das du eine AVR verwendest, und die haben kein USB anschluß.Warum 
denn überhaubt so kompliziert? hat deine PC denn kein UART?

von Christopher Schenk (Gast)


Lesenswert?

Hallo Daniel,

Ohne HSV genau zu kennen glaube ich das es schwer wird da brauchst du 
mindetsens 16 Bit PWM.

MFG

von Daniel L. (grorkef)


Lesenswert?

Naja eigentlich würde ich gerne mein ATmega8-16 verwenden :) Naja ich 
hab zwar ein USB-Serial Kabel aber das brauch ich auch noch so für 
STK500 und es ist doof wenn ich das permanent angeschlossen lasse :) und 
direkt Serial-Port hab ich seit min 10 Jahren an keinem Rechner mehr 
gesehen :) Mein Rechner hier hat nich mal mehr Parallel-Port ^^

von Andreas G. (elektronikschmied)


Lesenswert?

Hallo Daniel,

wenn Du den Atmel über USB an den PC hängen willst, kannst Du an seinen 
UART-Port einen Chip hängen, wie er vielleicht aucht in Deinem Adapter 
verbaut ist. Ich würde einen von FTDI nehmen (die heissen FT245...oder 
so; Google ist Dein Freund...).
Diese ICs setzen UART auf USB um. Der Clou ist, dass es dafür auf dem PC 
Treiber gibt (Virtual COM Port). Das heisst, dass Du eignetlich gar kein 
Programm schreiben musst. Denk Dir ein Protokoll aus, das Du auf den 
Atmel implementierst. Auf dem PC FTDI-VCP Treiber installieren, 
Terminalprogramm Deiner Wahl aufmachen, COMPort und Parameter (COM x 
9600 8 N 1...) und mit "set scene total blue" oder "$4$" oder was auch 
immer Du als Protokoll definiert hast, sitzt Du im Blauen...

VG

von Karl H. (kbuchegg)


Lesenswert?

Daniel L. schrieb:

> geben. Nun ist es so ich von PC-Programmierung so garkeine Ahnung habe
> :). Wollte mal hören ob es sehr aufwendig ist so etwas zu realiesieren
> und welche Sprache ich am besten verwende.

Geht so.
Nimm Visual Basic oder C#.
Je nachdem welches Buch dir in der nächsten Bibliothek dazu besser 
zusagt :-)

> Ich dachte da so an eine
> Zeitrahmen von 3-4 Wochen um das Programm zu fertig zu bekommen.

Klingt erst mal realistisch. VB bzw. C# nehmen dir den ganzen Kram der 
Fenstererzeugung etc. ab. Du schiebst deine Control-Elemente (Button, 
Schieber etc.) auf das Fenster und die IDE baut das dann in den Code 
ein. Noch eine Behandlung von Änderungen drannhängen und dann sollte das 
schon so in etwa funktionieren.

> Soll einfach nur Fenster sehen mit:
> - An/Aus
> - Automatischer Farbwechsel/Geschwindigkeit
> - RGB oder HSV als Feste Farbe

Ja, ist nicht weiter wild, so etwas zu machen. Die Kommandos schickst du 
über die 'serielle Schnittstelle' zum Mega8 und dort musst du dann das 
Kommando behandeln. Die serielle Schnittstelle kann man auch über USB 
führen, und zwar so, dass du weder am Mega8 noch am PC etwas davon 
merkst. Für dich ist das nach wie vor eine serielle Schnittstelle.

von Daniel L. (grorkef)


Lesenswert?

Ja das über Terminalprogramm zu machen ist sicherlich ein Lösung aber 
nicht gerade Benutzerfreundlich damit hab ich auf Breadboard schon 
experimentiert. Sicherlich als Zwischenlösung ok. Aber ich würde schon 
gerne über ganz einfaches Programm das ganze machen. Nicht nur, weils 
dann Benutzerfreundlicher wird, auch weil ich es mir in erster Line um 
den Lerneffekt geht dabei.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Das Programm auf dem PC kannst Du ja später immer noch daraus machen. 
Wenn dies hinter der Maske auch nur RS232 spricht, kannst Du sehr gut in 
kleinen Schritten vorgehen.

1. uP-Code schreiben und über Terminal steuern.
2. VB, C#, ???-Programm schreiben, welches per RS232 m it dem uP 
spricht.
3. Lan, Wlan, BT -> RS232-Adapter dranhängen und uP-Code damit ohne 
Kabel bertreiben.
4. Besseres Programm schreiben, welches ebenfalls wieder über RS232 
reder
5. ...

Das schöne daran ist, dass Du jederzeit auf die Leitung schauen kannst:
  Zweiten RS232-Port parallel dranhängen [nur Rx] und mit einem 
Terminalprogramm lauschen

von Soe (Gast)


Lesenswert?

Weder C# noch C++ oder VB erzeugen von sich aus Fenster oder bieten die 
Möglichkeit Elemente so einfach irgendwo hinzuschieben. Denn das macht 
nämlich die Entwicklungsumgebung für dich ;-)
Mein Tipp daher: Besorg dir in einer Bibliothek deiner Wahl ein Buch 
über eine Entwicklungsumgebung dem selbige am besten schon als 
Trial-Version beigelgt ist. Ich bin mit "C++ in 21 Tagen" ziemlich gut 
gefahren. Das gibt es im Netz auch irgendwo komplett als pdf :-)
Mit ein wenig Google-Suchen nach Beispielprogrammen  schaffst du es in 
weniger als 21 Tagen eine RS232-Schnittstelle mit schickem Programm 
anzusprechen ;-)
(zur Not kann ich dir auch Beispiel-Code schicken)

von Daniel L. (grorkef)


Lesenswert?

Hi,

nachdem das mit dem RGB Faden so gut geklappt hat, wollte ich gestern 
abend mich an den größeren Teil meins Projektes machen das UART 
Protokoll zum steueren des µC vom PC aus... da ich hier aber überhaupt 
keine Ahnung habe, hab ich mal bei Google gesucht ob es ähnliche 
projekte gibt bei den sowas schon mal umgesetzt wurde und ich musste 
leider feststellen das ich nichts gefunden habe... Entweder habe ich 
Falsch gesucht oder das wird wirklich so selten umgesetzt.

Es wäre nett falls jemand Beispiele kennt sie hier mal zu posten ich 
würde mir das gerne mal angucken :)

von oldmax (Gast)


Lesenswert?

Hi
ich hab mal ein Programm geschrieben, um mir die Variablen während des 
Programmes im Controler anzusehen, so eine Art Diagnose. Diese Software 
müßtest du hier irgendwo unter OpenEye finden. In der gezipten Datei 
findest du das lauffähige PC-Programm sowie eine Anleitung in der Doku, 
um deinem Controller die Verbindung zum PC zu ermöglichen. Ich habe auch 
versucht, das ein wenig zu beschreiben, so das es auch für andere 
Übertragungen geeignet wäre. Ach ja, stör dich nicht an der 
Programmiersprache Assembler.
Gruß oldmax

von Xion (Gast)


Lesenswert?

Hallo Danie,
wenn du irgend welche GUI schreiben willst dann empfele ich dir QT!
Grüße
Xion

von Günter J. (gjung)


Lesenswert?

Also QT ist zwar cute,
aber hat eine sehr steile Lernkurve und ist damit nicht
unbedingt für Anfänger zu empfehlen.
Wenn dann mal eine gewisse Erfahrung mit C++ da ist,
dann ist QT sicher eine gute Wahl.

Gruß,
Günter

von Karl H. (kbuchegg)


Lesenswert?

Daniel L. schrieb:
> Hi,
>
> nachdem das mit dem RGB Faden so gut geklappt hat, wollte ich gestern
> abend mich an den größeren Teil meins Projektes machen das UART
> Protokoll zum steueren des µC vom PC aus... da ich hier aber überhaupt
> keine Ahnung habe, hab ich mal bei Google gesucht ob es ähnliche
> projekte gibt bei den sowas schon mal umgesetzt wurde und ich musste
> leider feststellen das ich nichts gefunden habe... Entweder habe ich
> Falsch gesucht oder das wird wirklich so selten umgesetzt.
>
> Es wäre nett falls jemand Beispiele kennt sie hier mal zu posten ich
> würde mir das gerne mal angucken :)

Auf welcher Seite hängt es denn?

Auf AVR Seite oder auf PC Seite

AVR Seite:
arbeite den UART Abschnitt im gcc-Tutorium durch. Zum Testen nimmst du 
einfach ein Terminalprogramm, wie zb Hyperterminal.

Auf PC Seite:
Da musst du durch. Zum Testen wäre es gut, wenn du bereits etwas 
Funktionierendes im AVR hättest (das mit Hyperterminal abgetestet 
wurde). Allerdings etwas ganz simples, wie zb: du sendest 'A' und eine 
LED geht an. Du sendest 'B' und die LED geht aus. Beschreibungen zur 
Ansteurung einer seriellen Schnittstelle auf PC-Seite findest du im Web 
zu Hauf.

Zum Thema Protokoll:
Machs nicht komnplizierter als notwendig! Du denkst jetzt 
wahrscheinlich, dass da irgendwelche ganz komplizierte Dinge 
dahinterstecken. Das Gegenteil ist der Fall. Ein Protokoll ist einfach 
nur eine Vorschrift, die garantiert, dass der Empfänger auch das 
erkennt, was der Sender mitteilen wollte.
Zb könnte dein Protokoll so aussehen:
Am Anfang kommt ein Kennbuchstabe. Jeder Buchstabe steht für eine 
bestimmte Aktion.
Danach kommen Zahlen, die als Parameter für die Aktion fungieren. Gibt 
es mehrere Parameter, werden sie duch , voneinander getrennt.
Jede Aktion wird mit einem ; abgeschlossen.

Das ist zb ein ganz einfaches Protokoll. Nachrichten in diesem Protokoll 
sehen zb so aus
H1,64;
und das könnte zb bedeuten: Setze die Helligkeit der Led 1 auf 64

oder
Z1;
für Zero (Helligkeit auf 0 setzen) die Led 1

oder
D1,5,20,128;
was bedeuten könnte: Dimme die Led 1 innerhalb von 5 Sekunden vom Wert 
20 auf den Wert 128

oder ...

Denk dir was aus. Hier kannst du kreativ sein.
Durch den Kommandobuchstaben kann der AVR immer erkennen, wo eine 
Kommandosequenz anfängt und durch den ; kann er immer erkennen, wann das 
Kommando zu Ende ist und ein neues anfangen wird.

von Daniel L. (grorkef)


Angehängte Dateien:

Lesenswert?

So bin fertig geworden sowohl mit dem Hardware als auch mit dem Software 
Teil und muss sagen das mir C# wirklich gut gefällt :)

Hab in der Woche viel neues gelernt, stand oft da und hab stunden lang 
überlegt wie ich was machen soll und das ist nun dabei raus gekommen.

Es ist mein erstes µC Projekt überhaupt. Vieles daraus ist im Trail and 
Error verfahren entstanden, ich hatte eine Idee und hab einfach mal 
angefangen und das hab ich solange verändert bis es das gemacht hatte 
was ich wollte oder ich mit dem Ergebniss für erste Zufrieden bin. 
Wahrscheinlich gibt es viele Sachen, wo manch einer ich fragt warum ich 
das so gemacht habe oder warum ich so umständlich ist :) Aber ich brauch 
ja auch noch bisschen Luft für die nächste Version :)

Die Software ist jetzt nicht unbedingt schön aber es ist funktional und 
tut das was ich will :)

Derzeit sind Funktion implementiert:
- AN/AUS
- RGB Feste Farbe
- RGB Faden mit variabler Zeit
- HSV Faden mit variabler Zeit und Helligkeit

Der µC hat zwar auch die möglichkeit eine Feste Farbe mit HSV Werten 
dazustellen aber dafür hab ich noch keine "Gute" Lösung für die Software 
gefunden.

So ich hoffe das ich bisschen konsturktive Kritik erhalte.

MFG Daniel L.

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.