Hi, ich programmiere zum Spass nebenbei ein wenig Mikrocontroller (Atmega8). Ich würde mich in das Level Anfänger einstufen. Um meinen Atmega zu programmieren benutze ich folgendes: http://www.mikrocontroller.net/attachment/66477/desktop.jpg Ich möchte jetzt mal einen weiteren schritt gehen. Sagen wir ich hätte eine LED an den Atmega angeschlossen und die Helligkeit dieser LED wird mit einer Variablen X gesteuert. Ich möchte nun von meinem Computer diese Variable X an den Atmega senden. Die LED soll dann auf den neuen Wert langsam gefaded werden und sobald der Wert X erreicht ist soll der Atmega eine Variable Y auf 1 setzen damit dieser Wert erreicht ist und an den PC senden. Wie könnte ich dies am besten umsetzen. Python kann ich ein mittelmässig. hilft hier die erweiterung pyserial weiter? Danke und Gruss
Benutze mal die Suchfunktion. Beispiele für serielle Kommunikation (AVR Seitig) wurden hier schon öfters vorgestellt. Und ja, Python braucht dazu eine Erweiterung.
Mike77 schrieb: > Ich möchte nun von meinem Computer diese Variable X an den Atmega > senden. > Die LED soll dann auf den neuen Wert langsam gefaded werden und sobald > der Wert X erreicht ist soll der Atmega eine Variable Y auf 1 setzen > damit dieser Wert erreicht ist und an den PC senden. Über die Schnittstelle wandern gewöhnlich nur Bytes. Um die Zerlegung deines Variableninhaltes in solche gebräuchlichen Informationseinheiten wirst du dich selber kümmern müssen, ggf. indem du eine passende Funktion in der Programmiersprache deiner Wahl aufrufst. Auf dem ATmega wirst du mit Python nicht weit kommen ;-)
oje kann ich nicht einfach einen Zahlenwert an den Comport senden an welchem der Atmega liest diesen ein?
klar kann man das und wenn der atmega fertig ist, kann er auch den wert 1 zurücksenden
da bleibt nur die frage wie ich das hinbekomme :-D hats da ein tutorial?
> oje kann ich nicht einfach einen Zahlenwert an den Comport senden an > welchem der Atmega liest diesen ein? "einfach einen Zahlenwert"... so einfach ist das nicht, da Du dir Gedanken machen musst, wie Du den kodierst. Natürlich könntest Du einfach als ASCII-Zeichen senden: "123", das wäre dann auf der seriellen Schnittstelle 0x31 0x32 0x33 ... Du kannst dir vorstellen, dass es nicht so trivial ist, das dann auf dem Mikrocontroller wieder in z. B. einen uint8_t mit dem Wert 123 umzuwandeln (jaja, scanf). Also wirst Du etwas geschickter Kodieren müssen: Z. B. wenn der Wertebereich sich mit 0 .. 255 abdecken lässt, nehme ein Byte. Das sollte auch im Python-Programm trivial umzusetzen sein. Im Mikrocontroller wäre dann die Vorgehensweise ganz einfach (und dazu gibt es genügend Codebeispiele): Eine globale Variable "wert", dessen Wert in der Interrupt-Routine für ein empfangenes Zeichen einfach auf dieses gesetzt wird. Wenn Du Lust und Launa hast, mach noch ein bisschen triviales Protokoll drumherum (a la SLIP oder so) um Anfang und Ende einer Übertragung zu markieren; bei einem einzigen zu übertragenden Wert allerdings halbswegs überflüssig...
Das kommt dann dabei heraus, wenn man das Programmieren mit Typenlosen Scriptsprachen erlernt. Finde mal heraus, was genau eine Variable ist. Wo befindet sich die Variable. Wo müsstest Du z.M. Meßgeräte oder Leuchtdioden anschließen (nur theoretisch gesehen), um zu sehen, was in der Variable drin ist. Und wann würde dann welche LED leuchten. Du solltest lernen, wie der Computer Daten codiert und im Speicher ablegt. Danach kannst Du lernen, wie eine serielle Schnittstelle funktioniert und worin sie sich von einer parallelen Schnittstelle (z.B. Centronics, Druckerport) unterscheidet. Ich empfehle Dir, bei Gelegenheit C zu lernen.
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.