Hallo Zusammen, kann mir einer bei dieser Aufgabe weiterhelfen. Sollte in C gelöst werden. Das Ergebnis einer Berechnung soll auf acht, an PORTD angeschlossenen LEDs angezeigt werden. Der hier darzustellende Wert liegt im Bereich zwischen 0 und 1023 und ist somit nicht direkt auf die Ausgabestruktur abbildbar. Daher gilt es, folgende Lösung zu implementieren: Zahlenbereich: 0 …127 LED 0 Zahlenbereich 128 … 255 LED 1 Zahlenbereich 256 … 383 LED 2 Zahlenbereich 384 … 511 LED 3 Zahlenbereich 512 … 639 LED 4 Zahlenbereich 640 … 767 LED 5 Zahlenbereich 768 … 895 LED 6 Zahlenbereich 896 … 1023 LED 7 Liegt der Wert zwischen 0 und 127, so wird LED 0 angesteuert usw. Schreiben Sie eine C-Funktion, die diese Zuordnung realisiert. Der Übergabeparameter ist der berechnete Wert zwischen 0 und 1023, der Rückgabeparameter ist die Nummer der anzusteuernden LED. Die Berechnung der anzusteuernden LED soll mit einem Algorithmus und nicht mit einer switch- oder geschachtelten if-Anweisung erfolgen! Vielen Dank.
Wo steht denn da in der Aufgabe: "Suche Dir im Internet einen Blöden, der für die die Aufgabe löst"? Ich kann ja verstehen, das man sich Hilfe holt wenn man seine Aufgabe mehr oder weniger gelöst hat und irgendwo an einem Detail festhängt. Aber so was ist Betrug und Pfusch und ein Armutszeugnis.
:
Bearbeitet durch User
Micha schrieb: > Schreiben Sie eine C-Funktion, ... Was meinst du, wer mit "Sie" angesprochen werden soll?
Kleine Hilfe: Du kannst etwas (recht einfaches) mit 128 machen.
Thomas H. schrieb: > Wo steht denn da in der Aufgabe: "Suche Dir im Internet einen > Blöden, > der für die die Aufgabe löst"? > > Ich kann ja verstehen, das man sich Hilfe holt wenn man seine Aufgabe > mehr oder weniger gelöst hat und irgendwo an einem Detail festhängt. > Aber so was ist Betrug und Pfusch und ein Armutszeugnis. Wollklaus schrieb: > Kleine Hilfe: Du kannst etwas (recht einfaches) mit 128 machen. Hallo Wollklaus, ja da hast du recht ;-) Danke für die Hilfe!
Wahrscheinlich hat da der Prof in der verpassten Stunde seinen Lieblingsalgorithmus ausgebreitet, will nun genau diese Lösung sehen. Mit unseren Lösungsvorschlägen hast du in der Schule bis in alle Ewigkeiten verschissen.
danke user darauf bin ich jetzt auch gekommen ;-) manchmal denk ich zu kompliziert ;-) aber danke für eure hilfe. @Thomas, Wolfgang, Noch einer... ohne Worte zum GLÜCK gib es auch normale Menschen hier!
Micha schrieb: > danke user darauf bin ich jetzt auch gekommen ;-) Und wenn du dem Mikrocontroller die Arbeit leicht machen willst, i.e. eine effiziente Lösung suchst und ohne aufwändige Rechenoperationen auskommen möchtest, vergiss das mit der Division durch 128 gleich wieder. Einem Mikrocontroller fällt es erheblich leichter, eine Zahl 7 mal zu schieben, auch wenn die wahren Verfechter von C jetzt natürlich argumentieren werden, dass es die Aufgabe des Compilers ist, diese effiziente Möglichkeit selber zu erkennen und im Binärcode zu realisieren.
user schrieb: > zahl / 128 = Nummer der Led p.s. Was nützt die Nummer der LED, wenn man Pins auf einem Port ansteuern möchte. Da fängt man dann wieder an, eine 1 spazieren zu schieben. Einfacher wäre es wohl in einer Schleife parallel eine 1 zu Schieben und von der Ausgangszahl 128 zu subtrahieren.
Micha schrieb: > manchmal denk ich zu > kompliziert Deshalb solche Zahlenreihen immer zuerst aufzeichnen. Geometrisch sieht man den Zusammenhang sofort.
Wolfgang schrieb: > Micha schrieb: >> danke user darauf bin ich jetzt auch gekommen ;-) > > Und wenn du dem Mikrocontroller die Arbeit leicht machen willst, i.e. > eine effiziente Lösung suchst und ohne aufwändige Rechenoperationen > auskommen möchtest, vergiss das mit der Division durch 128 gleich > wieder. Einem Mikrocontroller fällt es erheblich leichter, eine Zahl 7 > mal zu schieben, auch wenn die wahren Verfechter von C jetzt natürlich > argumentieren werden, dass es die Aufgabe des Compilers ist, diese > effiziente Möglichkeit selber zu erkennen und im Binärcode zu > realisieren. bla bla bla, du weißt schon, dass der Compiler einen shift draus machen wird?
Wolfgang schrieb: > user schrieb: >> zahl / 128 = Nummer der Led > > p.s. Was nützt die Nummer der LED, wenn man Pins auf einem Port > ansteuern möchte. Da fängt man dann wieder an, eine 1 spazieren zu > schieben. Einfacher wäre es wohl in einer Schleife parallel eine 1 zu > Schieben und von der Ausgangszahl 128 zu subtrahieren. Zeige doch einmal wie einfach das ist.
Clarion schrieb: > Zeige doch einmal wie einfach das ist. Schleifenkonstrukte mit bedingter Ausführung kennst du? Dann könnte das wohl sinngemäß so aussehen: Pattern = 0x01 while (Wert>127) Pattern = shift (Pattern, 1) Wert = Wert - 128 PORTD = Pattern
Wolfgang schrieb: > Clarion schrieb: >> Zeige doch einmal wie einfach das ist. > > Schleifenkonstrukte mit bedingter Ausführung kennst du? > Dann könnte das wohl sinngemäß so aussehen: > > Pattern = 0x01 > > while (Wert>127) > Pattern = shift (Pattern, 1) > Wert = Wert - 128 > > PORTD = Pattern Das nennst du einfach? ROFL Das ist einfach: PORTD = 1 << (Wert >> 7); 5 Dollarfrage @ all: Wie geht es noch einfacher?
Clarion schrieb: > Das ist einfach: PORTD = 1 << (Wert >> 7); Ich fürchte das übersteigt die Kenntnisse vom TO, wenn er mit der Grundaufgabe schon so viel Probleme hat, dass er sie hier ohne jeglichen Lösungsansatz postet.
Wolfgang schrieb: > Clarion schrieb: >> Das ist einfach: PORTD = 1 << (Wert >> 7); > > Ich fürchte das übersteigt die Kenntnisse vom TO, wenn er mit der > Grundaufgabe schon so viel Probleme hat, dass er sie hier ohne jeglichen > Lösungsansatz postet. Er kann sich beide Lösungen anschauen und in den verschiedenen Anleitungen (eigene Skipte, etc.) zu C versuchen diese zu verstehen. Gegebenenfalls einfach hier auf dem µCNet nachfragen :)
Wolfgang schrieb: > Clarion schrieb: >> Das ist einfach: PORTD = 1 << (Wert >> 7); Für nicht"Gast" könnte man das im Vertrauen auf den Compiler und damit selbiger auch zeigen kann, dass er das drauf hat, natürlich wieder als
1 | PORTD = 1 << (Wert / 128); |
formulieren, womit wir dann beim ursprünglichen Vorschlag wären ;-)
Thomas H. schrieb: > Wo steht denn da in der Aufgabe: "Suche Dir im Internet einen Blöden, > der für die die Aufgabe löst"? Da der Lehrer hier sicher mitliest, weiß er natürlich daß Micha keinen Dunst hat, selbst wenn er diesmal eine richtige Lösung liefert. Bei einer der nächsten Aufgaben wird er ihn schon kalt erwischen. MfG Klaus
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.