C Projekt LED Helligkeit über den Terminal steuern.

Tabax

Neues Mitglied
22. Mai 2012
2
0
0
30
Sprachen
Hallo Leute,
ich bin ganz neu in der Welt der Programmiersprachen und Mikrocontroller und deswegen hätte ich eine Frage.
Und zwar sollen wir in der Schule ein Projekt machen, welches am ende des Semester als Klausur zählt.

Mein Projekt soll dazu da sein, um mit einem AT Mega MC die Helligkeit einer LED über den Terminal zu steuern. Die HElligkeit soll über Prozente gesteuert werden.

Da ich noch fast keine ahnung habe wie das Programmiertechnisch laufen soll, wollte ich fragen wie so eine beispiel Methode bei mir HandelCharacter aussehen soll.

Sie soll dazu gut sein, Zeichen entgegen zunehmen und da man ja nicht weiss, ob noch ein weiteres Zeichen kommt, soll mit einem Enter im Terminal bestätigen kann, das die eingegebenen werte genommen werden sollen und kein weiteres zeichen mehr geschickt wird.

Also ich gebe 6 ein und als nächstes zeichen 0 für 60% und dann soll man Enter drücken können und das LED ändert sich auf 60% helligkeit.

(Wir arbeiten mit AVR Studio 4).

naja vielleicht habt ihrs nicht ganz verstanden deswegen schreibe ich einfach mal den aufgabentext hin:

Die Funktion "HandelCharacter" nimmt Zeichen entgegen und soll dazu gut sein den angegebenen Prozentwert mit /cr zu bestätigen.

Eigentlich lerne ich das in der Schule, aber durch die ganzen anderen schüler haben ja auch fragen und der lehrer kann sich nicht zerteilen also wollte ich euch mal um hilfe bitten, damit ich etwas vorarbeiten kann.

Also hatt vielleicht jemand ein Muster oder idee für sowas??
Danke im vorraus

Grüße,
Tabax
 
:ciao:Hi,

erstmal herzlich Willkommen bei uns. :ciao:

Eigentlich ist es recht einfach. Zum Empfangen der Zeichen nutzt Du einen Interrupt, der gefeuert wird, wenn ein Zeichen über UART reinkommt. Dieses Zeichen nimmst Du entgegen und schiebst es in einen FiFo-Puffer. Wenn das Zeichen, das Du empfangen hast ein "\CR" ist, rufst Du eine Funktion auf, die Dir die Helligkeit der LED setzt.

Die Helligkeit der LED kannst Du über PWM regeln.

EDIT: Was wir hier überhaupt nicht mögen, dann sowas hier: klick mich

Grüße
Heinrich
 
Hi Tabax,

herzlich willkommen im Forum :flowers:

Und zwar sollen wir in der Schule ein Projekt machen, welches am ende des Semester als Klausur zählt.
Sommerferien fangen je nach Bundesland Mitte Juni oder Juli an. Also tippe ich mal auf etwa 1 Monat Zeit. ;)

Mein Projekt soll dazu da sein, um mit einem AT Mega MC die Helligkeit einer LED über den Terminal zu steuern. Die HElligkeit soll über Prozente gesteuert werden.
...
...
Also ich gebe 6 ein und als nächstes zeichen 0 für 60% und dann soll man Enter drücken können und das LED ändert sich auf 60% helligkeit.

(Wir arbeiten mit AVR Studio 4).

naja vielleicht habt ihrs nicht ganz verstanden deswegen schreibe ich einfach mal den aufgabentext hin:

Die Funktion "HandelCharacter" nimmt Zeichen entgegen und soll dazu gut sein den angegebenen Prozentwert mit /cr zu bestätigen.
Also die Helligkeit steuerst du mit PWM. Je nach verwendetem Timer hast du 8Bit oder 16Bit. Bei 8Bit gehts von 0..255. Also sind zBsp. 255 = 100% und 0 = 0%. Bei 16Bit sind es 65535 und 0. Das sollte das kleinste Problem sein.

Hast du für die Fehlersuche ein Character-LCD mit dran ? Sonst nimm die sowieso verwendete Serielle (UART) mit für das Debugging (interne Werte ausgeben).

Eigentlich lerne ich das in der Schule, aber durch die ganzen anderen schüler haben ja auch fragen und der lehrer kann sich nicht zerteilen also wollte ich euch mal um hilfe bitten, damit ich etwas vorarbeiten kann.

Also hatt vielleicht jemand ein Muster oder idee für sowas??
Also ich tippe mal auf ein C-Programm (ich programmier nicht in C).
Such doch mal nach "UART" für die serielle Schnittstelle oder nach "PWM" und "Timer" für die LED-Steuerung. Da sollte was zu finden sein. Das mußt du nur noch zusammenbringen.

Fang mit der Seriellen Schnittstelle an. Dann kannst du die Schnittstelle gleich für Debug-Ausgaben verwenden. Das ist eigentlich auch die Hauptaufgabe. Danach solltest du die Routine schreiben die dir die ASCII-Zeichen so verarbeitet wie du es brauchst. Danach kannst du dann mit dem Timer für PWM abschließen. Damit bauen die Teile aufeinander auf und du hast bereits von Anfang an die Möglichkeit Infos aus dem Mikrocontroller zum PC zu senden.

Gruß
Dino
 
EDIT: Was wir hier überhaupt nicht mögen, dann sowas hier: klick mich
da ist mir einer zuvorgekommen ;)
Wollte ich auch grade mal nach suchen. Nach den ganzen Cross-Postings in der letzten Zeit.

Konzentrier dich auf ein Forum. Es müssen nicht unnötig viele Leute ihre teilweise doch recht knappe FREIZEIT opfern weil die Frage in mehreren Foren angestoßen wird.

EDIT: Also beim Mikrocontroller.Net sind im zweiten Beitrag von ...
"Karl Heinz Buchegger (kbuchegg) (Moderator) Datum: 22.05.2012 19:47"
schon recht brauchbare Infos mit getline, readline, ...

Gruß
Dino
 
Hi Leute,
sorry erstmal für den doppelpost aber ich wollte halte so schnell wie möglich am Projekt weiterarbeiten :) .
Jedenfalls danke für die Hilfe ich bin mit den Tipps schon etwas weiter gekommen.
Grüße,
Tabax
 
Hi
Na dann will ich auch mal meinen Senf dazugeben. Im Prinzip ist ja schon eine Menge gesagt, aber da ich annehme, das du schon auf eine "Hochschule" gehst, stört mich ein wenig die Rechtschreibung. Ok, war nicht hilfreich, trotzdem solltest du da schon ein wenig dran arbeiten.
Und was ich auch nicht sonderlich mag:

Und zwar sollen wir in der Schule ein Projekt machen, welches am ende des Semester als Klausur zählt.

Mein Projekt soll dazu da sein......
und dazu passend
Also hatt vielleicht jemand ein Muster oder idee für sowas??
Da du ja schon im Mikrocontroller.Net unterwegs bist, solltest du schon mal ein wenig die Suchfunktionen benutzen können und auch ein Blick in die Tutorials schaden keineswegs.
Nun zum hilfreichen Teil:
Ich schreibe zwar in Assembler, aber der Ansatz von Dino03 ist in allen Programmiersprachen gleich. Aufgaben in Teilaufgaben zerlegen und jede für sich lösen und testen. Erst danach die erforderlichen Querverbindungen schaffen und das Programm komplettieren.
Im Prinzip sieht das bei mir so aus:
Deklarationsteil
Initialisierungen
Programmschleife

...
Programmschleife
Lese Eingänge
Ereignisbildung Eingänge (kein Interrupt)
Lese Uart (Empfang Interrupt, Ablage in Ringpuffer)
Ereignisbildung aus empfangenen Daten
Bearbeite Ereignisse Eingänge
Bearbeite Ereignisse Empfang
Setze Ausgänge
Versende Daten
Schleifen Ende

Nun kannst du für jeden Schritt Schnittstellen definieren und an andere Schritte übergeben. Was nicht gebraucht wird, läßt du weg, was nicht vollständig ist, erweiterst du. So einfach ist das. Für jeden Schritt gibt es eine Funktionskontrolle und anschließend den Haken: "getestet und erledigt".
So hast du deine Softwareentwicklung gut im Griff.
Gruß oldmax
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)