Hallo! Ich wollte fragen was an meinem Code flash ist... digitalRead soll den Pin auslesen und dann in das LCD schreiben...
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
und:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
was ist da falsch?
|
Anzeige
|
AVR-C Pin lesen und in LCD schreibenHallo! Ich wollte fragen was an meinem Code flash ist... digitalRead soll den Pin auslesen und dann in das LCD schreiben...
und:
was ist da falsch?
Gast
#3425862
Das hier: Martin Fischer schrieb: > if(pin == (PIN0 | PIN1 | PIN2 | PIN3)) PIN0 | PIN1 | PIN2 | PIN3 ist eine bitweise Verknüpfung von den vier Konstanten. Das ist ziemlich sicher nicht das, was du willst. Aber da ich nicht genau weiß, was du mit dieser Zeile erreichen willst, bin ich da auch nicht 100% sicher... Das hier: Martin Fischer schrieb: > data = reg & (1 << pin); Martin Fischer schrieb: > if(data == 1) ...passt auch nicht zusammen. reg & (1 << pin) kann nur 0 oder (1 << pin) sein. Das ist nur genau dann 1, wenn pin = 1 ist. Ich glaube, du solltest dir den Unterschied zwischen logischen Operatoren und bitweisen Operatoren noch einmal genau anschauen. Und in dem Zusammenhang einmal nachlesen, wie logische Datentypen in C verwendet werden. MfG, Arno
Gast
#3425863
> was ist da falsch? Kommt drauf an. Welches Verhalten erwartest Du? Welches Verhalten beobachtest Du stattdessen? Wie kann mans reproduzieren? Dasda.. > lcd_string(digitalRead(PIN2)); ^^^^ [..] > char digitalRead(uint8_t pin) { [..] > if(pin == (PIN0 | PIN1 | PIN2 | PIN3)){ ^^ ^ ^ ^^^^ ^ ..ist jedenfalls schon mal höchstwahrschinlich nicht das was Du eigentlich haben wolltest. HTH
Gast
#3425865
Arno schrieb: > Das ist nur genau dann 1, wenn pin = 1 ist. Ingrid meint: ...wenn pin = 0 ist. Eine 1 um 0 stellen verschoben bleibt eine 1. MfG, Arno
Gast
#3425867
Martin Fischer schrieb: > was ist da falsch? Vermutlich hast du im Charaktergenerator vom LCD-Controller die Zeichen 0 und 1 nicht definiert.
Gast
#3425869
Lieber Martin Fischer, so langsam wirst Du aber penetrant. Wir haben Dir doch gestern schon empfohlen Beitrag "uC C-Programmierung Port setzen", das Tutorial und ein C-Buch zu lesen. Streng Dich gefälligst selbst mal an.
Gast
#3425895
Martin Fischer schrieb: > was ist da falsch? Verrate wenigstens, welche LCD Bibliothek du benutzt und mach dir Gedanken über den Typ des Arguments für lcd_string(). Martin Fischer schrieb: > lcd_string(digitalRead(PIN2)); lcd_string erwartet als Argument einen String. Das sind ein oder mehr druckbare Zeichen, die mit einer 0x00 beendet werden. digitalRead liefert einen char. Das ist etwas anderes. Und nur der Name "char" bedeutet nicht, dass es auch druckbar ist. Ich werde nicht penetrant! Das steht so nicht in dem Tutorial! Meine lcd-lib funktioniert... PIN0 ist PB0 zugewiesen und so weiter... Ich möchte dass bei PB2 gelesen wird ob ein Taster gedrückt wird und der Status (gedrückt/nicht gedrückt) soll im LCD angezeigt werden... Das LCD bleibt leer..nur am Anfang erscheint "Loading..." wie es auch programmiert ist...
Gast
#3425915
>Ich werde nicht penetrant! Das ist das Gegenteil von dem was ich behaupte. Meinst Du ich lüge, in dem ich etwas behaupte was ich nicht so empfinde? Also. DU WIRST PENETRANT! >Das steht so nicht in dem Tutorial! Jedenfalls steht alles im C-Buch. Lies das endlich. Das ist Urschleim. Ich verstehe aber alles noch nicht so genau, ich probiere ja es zu verstehen... Jetzt mal Schritt für Schritt...:
Fragt das ab ob pin gleich PIN0 ODER PIN1 ODER... ist oder muss ich dafür so ausführlich :
?
Gast
#3425921
Martin Fischer schrieb: > Ich werde nicht penetrant! > Das steht so nicht in dem Tutorial! Du merkst es nicht einmal... Nocheinmal du sollst dir endlich ein verdammtes C-Buch besorgen und durcharbeiten. Warum schreibst du nicht eine Liste, was du für Wünsche hast und ersparst uns Zeit und Erklärungsversuche? Ganz ehrlich du willst doch gar nicht lernen, du willst einfach NUR dieses Projekt durchkriegen ohne den kleinen Finger zu rühren. Das hat nichts mit dem JuFo Projekt zutun, das ist nur Nebensache! Ich möchte einfach nur lernen, und mein Buch ist noch nicht da! Also wer nicht Helfen mag kann seine Fre*se halten und muss hier auch nicht so einen Müll schreiben! Ein Forum ist dafür da um Hilfe von anderen zu bekommen! Ich habe schon selbst etwas erarbeitet, es funktioniert blos teilweise nicht richtig!
Gast
#3425942
Martin Fischer schrieb: > Also wer nicht Helfen mag kann seine Fre*se halten und muss hier auch > nicht so einen Müll schreiben! > Ein Forum ist dafür da um Hilfe von anderen zu bekommen! Der Einzige der hier Müll schreibt bist du. Das mit dem Forum und Hilfe mag ja zwar stimmen, allerdings wird dann vom Hilfesuchenden auch verlangt seine Hausaufgaben zu machen und etwas Selbstständigkeit zu zeigen. Du kriegst es ja oft nicht mal hin zu googeln oder einen verlinkten Artikel zu lesen. Aber hier noch ein konstruktiver Rat: wenn du dir bei C nicht sicher bist, teste es einfach auf dem PC. Martin Fischer schrieb: > Jetzt mal Schritt für Schritt...: > if(pin == (PIN0 || PIN1 || PIN2 || PIN3)){ Hallo Martin, das steht in jedem Buch über C und C++: "if" fragt ab ob der darauf in Klammern folgende Ausdruck ungleich 0 ist. "x == y" liefert 1 wenn x gleich y, und 0 wenn x nicht gleich y ist. "a || b" liefert 1 wenn a ungleich 0 ist oder wenn b ungleich 0 ist, und 0 wenn a und b gleich 0 sind. Die Reihenfolge der Auswertung folgt der Grammatik (siehe http://en.cppreference.com/w/cpp/language/operator_precedence). Daraus solltest du die Antwort auf deine Frage leicht herleiten können. LG, Sebastian Ja Sebastian. Kann man aber auch so die "kurze" Variante nehmen? Hast Du Dein Buch schon gelesen? http://de.wikibooks.org/wiki/C-Programmierung:_Grundlagen Martin Fischer schrieb: > if(pin == (PIN0 || PIN1 || PIN2 || PIN3)){ Bitte informiere dich über den Unterschied zwischen | und || Die Verdopplung bedeutet nicht "ich will es aber!" Ich wieder hole meine Aussage von gestern, dir fehlen Grundlagen. Ist dir der Unterschied zwischen char und string mittlerweile klar geworden? Ja! Geht es nun so: (PIN || PIN || PIN) oder so: pin == PIN || pin == PIN
Gast
#3425999
Teste es auf dem PC. Programmieren lernt man am besten, wenn man experimentiert. Ja ok, aber wieso wird auf dem LCD nicht das richtige Angezeigt? Die Antwort hast du schon zweimal in diesem Thread bekommen. Lerne lesen! Martin Fischer schrieb: > Geht es nun so: (PIN || PIN || PIN) oder so: pin == PIN || pin == PIN Hallo Martin, die Frage ist doch eher: Was passiert genau wenn du pin == (PIN || PIN || PIN) schreibst? Also: Du vergleichst pin mit dem Ausdruck (PIN || PIN || PIN) auf Gleichheit. Also: Was ist denn der Wert von PIN || PIN || PIN? Und: Möchtest du pin gegen diesen Wert auf Gleichheit testen? LG, Sebastian Den Fehler habe ich schon behoben: if(pin == PIN0 || pin == PIN1 || pin == PIN2 || pin == PIN3) Ich benutze übrigens diese LCD Bibliothek: http://me-and-my-mc.blogspot.de/2012/11/lcd-display-mit-atmega16.html Martin Fischer schrieb: > Ich benutze übrigens diese LCD Bibliothek: da steht drin: // Ausgabe eines Strings an der aktuellen Cursorposition void lcd_string( const char *data ); Und was übergibst du als Parameter im zweiten Aufruf?
Gast
#3426091
zum Lernen hilft auch das mikrocontroller.net Tutorial. http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial Und dann einfach auf einem Steckbrett mit LED, Taster testen und Erfahrungen sammeln. Hilft mehr als Querbeet fragen zu stellen. Ich Wette du hast das morgen alles wieder vergessen was du hier fragst.
Gast
#3426126
@ Martin Fischer Digitalzwerg hat aber Recht. Fang bei den Grundkenntnissen an. lesen, lesen, lesen, lesen. Und wie geschrieben, einfach anfangen, mit Steckbrett und einfachen Ein- und Ausgaben. Ok, habe ich auch:
Klappt echt super! Und nun zu meinem Problem...wie kann ich das jetzt mithilfe der LCD-lib im LCD Anzeigen?
Gast
#3426139
Genau so wie es auf der Seite beschrieben ist. C und H Datei in deinem Projekt einbinden, die Ports richtig beschalten und vorallem die Ports in der H Datei anpassen. Dann vielleicht erstmal mit dem Beispiel üben. Meine Fragen haben schon ihr Ziel! Und wenn man mir nicht helfen mag dann kann man es auch lassen, sorry, aber ich finde das nur unfair! Klappt alles Steffen! Ein String wird ausgegeben...wie aber der Wert des Pins?
Gast
#3426151
>Meine Fragen haben schon ihr Ziel! Und wenn man mir nicht helfen mag
dann kann man es auch lassen, sorry, aber ich finde das nur unfair!
Unfair? Es ist unfair von DIR, uns hier mit Deiner Faulheit zu
konfrontieren und von uns Antworten auf Fragen zu verlangen, die Du Dir
bei entsprechendem eigenen Bemühen schon längst hättest selbst
beantworten können.
Komme mir also nicht mit unfair. Du belästigst uns hier mit Deiner
Unfähigkeit aus eigenem Antrieb zu lernen. Das ist nicht nur unfair, das
ist Schmarotzertum!
Gast
#3426171
Martin Fischer schrieb: > Klappt alles Steffen! > Ein String wird ausgegeben...wie aber der Wert des Pins? Georg G. hat das zwar schon mal angesprochen, aber is ja klar das du denn Unterschied zwischen einem String und einem Integer nicht kennst bzw. das System was dahinter steckt noch nicht verstanden hast. Klare Empfehlung: Sich ein C Buch besorgen und die Grundlagen lernen und zwar auf einem PC! Ein bisschen üben um die Grundlagen auch zu verinnerlichen. C ist nun mal eine technische Programmiersprache, die einem viel Kontrolle gibt, allerdings auch ihre Tücken hat und vom Anwender verlangt, dass er weiß was er da tut! Dann kannst du auf einem µC anfangen und zwar zuerst mit einer LED. Dann mal mit einem Timer der die LED zum blinken bringt. Also (fast) die ganze Peripheriekette abarbeiten und verstehen. Ein LCD Display ist da eher unten auf der Liste!
Gast
#3426178
Martin Fischer schrieb: > Klappt alles Steffen! > Ein String wird ausgegeben...wie aber der Wert des Pins? Klar das es klappt. Ist ja tausendfach benutzt... na dann geht es weiter, LESEN:
und BEACHTEN Georg G. schrieb: > lcd_string erwartet als Argument einen String. Das sind ein oder mehr > druckbare Zeichen, die mit einer 0x00 beendet werden. > > digitalRead liefert einen char. Das ist etwas anderes. Und nur der Name > "char" bedeutet nicht, dass es auch druckbar ist. und LESEN TriHexagon schrieb: > Klare Empfehlung: > Sich ein C Buch besorgen und die Grundlagen lernen und zwar auf einem > PC! Ein bisschen üben um die Grundlagen auch zu verinnerlichen. C ist > nun mal eine technische Programmiersprache, die einem viel Kontrolle > gibt, allerdings auch ihre Tücken hat und vom Anwender verlangt, dass er > weiß was er da tut! > > Dann kannst du auf einem µC anfangen und zwar zuerst mit einer LED. Dann > mal mit einem Timer der die LED zum blinken bringt. Also (fast) die > ganze Peripheriekette abarbeiten und verstehen. Ein LCD Display ist da > eher unten auf der Liste!
Gast
#3426185
Martin Fischer schrieb: > Ein String wird ausgegeben...wie aber der Wert des Pins? Indem du, gesteuert durch den Wert des Pins, einen String erzeugst, den du auf dem LCD ausgeben kannst. Dafür musst du erstmal wissen, was ein String in C überhaupt ist und was ASCII-Zeichen sind. Guck dir mal den Inhalt von deinem Character Generator des LCD Controllers an. Ja ok! Und ich weiß, was der unterschied zwischen einem Integer und einem Char ist! Ein Integer ist eine Ganzzahl von -xxxx bis xxxxx und ein Char ist ein einzelnes Zeichen! Aber wenn ich den int in einen char umwandle, dann kommt gar nichts mehr auf dem Display...soweit ich weiß wandelt man mit: (char)data den int (data) in einen char um, oder?
Gast
#3426188
Martin Fischer schrieb: > Ein Integer ist eine Ganzzahl von -xxxx bis xxxxx und ein Char ist ein > einzelnes Zeichen! Nö, ein Int und ein Char sind das gleiche. Was? Das ist mir neu, echt... Obwohl ich das schon in vielen Sprachen nutzte... Aber wie kann ich den jetzt Ausgeben..ich verstehe das noch nicht ganz!
Gast
#3426192
isölwa schrieb im Beitrag #3426181: > Seid doch net so hantig zum Martin! .... > Bemerkungen und den den ständigen Hinweisen auf die für Anfänger sehr > schwer verständlichen Datenblätter zu reagieren. Wenn es schwere Datenblätter wären, ich sag nur RFM von HopeRF ;-) hier geht es aber um Grundlagen die man sich sehr leicht erarbeiten kann. Von daher sind die Kommentare verständlich. Ja ok Steffen...das Problem ist, das Bitmanipulation sehr komplex ist..Ich freue mich schon riesig darüber dass ich verstanden habe was |=, &, ~ und << für Funktionen hat... Aber ich komme jetzt nicht weiter, kann mir endlich jemand helfen???
Gast
#3426197
Martin Fischer schrieb: > Aber ich komme jetzt nicht weiter, kann mir endlich jemand helfen??? jo ich würd sagen, nächsten Mittwoch? Oder was meint ihr?
Gast
#3426201
@ isölwa Tut mir leid isölwa, aber Dein Einwurf geht aus meiner Sicht am Kern dieer Angelegenheit vorbei. Es ehrt Dich aber, dass Du Dich für andere einsetzt. Davor habe ich Achtung. Meine Worte hier sind sehr hart, weil der Martin mehrfach auf den Hinweis nicht reagiert hat, sich ersteinmal Kenntnisse anzueignen, bevor er hier fragt. Er hat bisher in einer ganzen Reihe von Threads immer wieder Fragen gestellt, die klar zeigen, dass er nicht etwa, einen Mangel an Talent hat oder das ihm die Datenblätter "nicht in die Wiege gelegt worden sind". Es geht hier auch garnicht um Datenblätter sondern um ein Buch über C. Die Programmiersprache in der er arbeitet. Mit dem Programmieren ist es so, dass man sich erstmal ein gewisses Grundverständnis der Ausdrucksmittel verschaffen muss, der Dinge die eine Programmiersprache beschreibt und der Vorgänge. Tut man das nicht, steht man vergleichsweise da, wie ein Deutscher in Tokio. Man kann nicht mal "Guten Tag" sagen. Um im Vergleich zu bleiben, so mangelt es dem Martin hier nicht an der Aussprache oder daran, das er einige Worte nicht kennt. Sondern das er überhaupt keine Ahnung hat, was er eigentlich tut. Du wirst, wenn Du diesen und andere Threads von ihm liest, nie eine Stelle finden, an der er eigenen Schlussfolgerungen zieht. Nicht mal lediglich im Ergebnis. Er fragt immer solange, bis die Antworter auch den letzten Syntaxfehler beseitigt haben. Er lässt dann auch nie erkennen, dass er wenigstens aus der vorgegebenen Lösung einen Schluss gezogen hat. Etwa, dass ein Problem dadurch bestanden hat, das er den Unterschied zwischen einem logischen und einem Bitweisen oder nicht gekannt hat. Oder das ihm nicht bewusst, war das es Datentypen gibt und er diesen mit den Parameterlisten von Funktionen vergleichen kann bzw. muss. Nein. Er fragt immer weiter. Das ist meiner Meinung nach, kein Fragen um Verständnis zu erwerben. Er mag denken, dass es so ist. Das er verstanden hat, wenn da was angezeigt wird, was er sich vorstellt. Aber das ist nicht so. Deswegen meine, immer härter werdenden Antworten.
Gast
#3426204
Martin Fischer schrieb: > Was? Das ist mir neu, echt... > Obwohl ich das schon in vielen Sprachen nutzte... > Aber wie kann ich den jetzt Ausgeben..ich verstehe das noch nicht ganz! Ja genau da ist das Problem (allerdings nicht nur deins), manche wollen einfach nicht verstehen das C "anders" funktioniert. Bei C gibt es technische Details die man kennen und verstehen muss. Vorallem wenn das Programm auf einem Low-Level µC laufen soll. Da gibts sogar viele fortgeschrittene Programmierer die dann auf die Schauze fallen und sich wundern warum das Programm die ganze Zeit abstürzt. Dass sind dann die, die die Sprache als Dreck bezeichnen. Was denkt ihr wie doof ich bin! Das meiste was ihr sagt kenne ich schon! Ich programmiere schon seit 3 Jahren und bin kein absoluter Neuling! Bisher hatte ich nunmal nicht so viel mit Bit-Operationen zutun... Und daher frage ich nur, wie man auf dem LCD einen Integer ausgibt weil ich z.B. auch den lcd_string-Command nicht 100%ig verstehe... Ich suche mir bald ein anderes Forum, wobei dieses hier immernoch das beste ist...es ist aber nicht für Anfänger geeignet
Gast
#3426214
> Obwohl ich das schon in vielen Sprachen nutzte...
Ganz offen gesagt, halte ich das für unglaubwürdig.
Du hast "viele" Sprachen benutzt in denen es keinen Unterschied zwischen
logischem und Bitweisen Operatoren gab? Keine Datentypen? Keine
Parametertypen?
Was waren das denn für Sprachen?
Bitoperatoren habe ich zuvor NIE genutzt... Datentypen kenne ich, hatte halt immer blos was falsches von char gedacht...wurde mir halt auch nicht anders beigebracht, mir wurde nur gesagt es sei ein Zeichen!
Gast
#3426232
Digitalzwerg schrieb: > > Was waren das denn für Sprachen? Backrezepte Ne, Python, Visual Basic, PHP und C++
Gast
#3426240
Genau zu diesem Zweck gibts doch Bücher. C wirst du dir wohl kaum anders beibringen können. Bitte kapier das endlich. Tut mir leid aber Bitoperationen sind ziemlich trivial, aber ohne Zeit zu investieren und ein bisschen zu rechnen wird das natürlich auch nix.
Gast
#3426241
> ... es ist aber nicht für Anfänger geeignet Ich hasse das, dass Du immer versuchst uns resp. mich hier als die Bösen hinzustellen die auf den Anfängern herumhacken. Du wirst hier eine Reihe von Threads sehen, in denen Anfängern mitunter sogar völlig abseitige Fragestellungen beantwortet werden. Wenn Du das bestätigst, dann ist Deine Aussage schlicht falsch. Im Unterschied aber zu jenen Anfängern, stellst Du einfach einen Codeschnipsel in den Raum und sagst er geht nicht. Du schreibst nicht mal den Ansatz einer Analyse. Ja nicht mal eine Vermutung und sei sie noch so absurd begründet. Dann, nachdem man Dir in mehreren Beiträgen erklärt hat was mit der Bitmanipulation falsch läuft, Dir zur Lösung hinführende Fragen gestellt hat, die Du dann nicht beantwortest, schreibst Du auf einmal das es geht, präsentierst einen Codeschnipsel der Dir eigentlich schon 1 zu 1 vorgegeben wurde und läßt nicht erkennen, dass Du verstanden hast wodurch das Problem überhaupt entstanden ist. Du schreibst: >Bisher hatte ich nunmal nicht so viel mit Bit-Operationen zutun... Ja gut. Aber das hättest Du zumindest in den Grundzügen schon längst erfasst haben müssen. Klar gibt es Feinheiten, aber wenn man das im Grunde verstanden hat, dann lautet eine Frage etwa so: Ich mache dies und jenes und dabei kommt folgendes heraus. Das aber erwarte ich nicht, sondern das und zwar weil diese und jene Syntax, diese und jene Verknüpfung nach meinem Verständnis von (Buchseite oder Forumsantwort) eigentlich folgendes ergeben müsste. Aber nein. Das kommt nicht. Deine ganzen Fragen sind immer nur: Es läuft nicht. Was mache ich falsch. Das ist der Punkt. Hier ist ein Forum mit Hilfe zur Selbsthilfe. Kein Selbstbedienungsladen für Lösungen. Würde ich genau wissen warum das nicht läuft dann könnte ich es auch beheben!
Gast
#3426248
... >> Obwohl ich das schon in vielen Sprachen nutzte... > > Ganz offen gesagt, halte ich das für unglaubwürdig. @Digitalzwerg recht haste :-) und das wegen: Martin Fischer schrieb: > Ne, Python, Visual Basic, PHP und C++ täusch ich mich oder ist C++ aus C hervorgegangen ;-) Ja, aber es geht hier ja auch nicht um irgendwelche Basics!
Gast
#3426251
Martin Fischer schrieb: > Ja, aber es geht hier ja auch nicht um irgendwelche Basics! Doch.
Gast
#3426254
Digitalzwerg schrieb: ... > Kein Selbstbedienungsladen > für Lösungen. http://www.chefkoch.de/groups/2,3756/Kekse-Ich-will-Kekse.html
Gast
#3426256
>Ja, aber es geht hier ja auch nicht um irgendwelche Basics!
EBEND DOCH! Das ist es ja was wir die ganze Zeit schreiben. Das ist
alles Urschleim! Absolute Grundlage.
In meinem im 1. Post gezeigtem Code soll der Status des an PIN2 (PB2) angeschlossenem tasters mit der bereits erwähnten LCD-lib auf dem LCD geschrieben werden. Bei meinem Code wird jedoch mein Ziel verfehlt...es kommen nur Hyroglyphen oder gar nichts auf dem LCD. Ich denke das irgendetwas mit dem schreiben auf das lcd nicht stimmt. Könntet ihr mir mehr Infos geben.. Zufrieden?
Gast
#3426263
>... mir wurde nur gesagt es sei ein Zeichen!
Ist das vielleicht symptomatisch für Deine Problematik? Das Du Dir immer
nur was sagen läßt? Aber nicht selbst nachvollziehst?
Es ist wichtig, das Du ein eigenes Verständnis der Vorgänge und
Strukturen hast. Dann und nur dann kannst Du die Dinge auch selbst
anwenden.
Ich sehe in Deinem Eröffnungsthread einen cast auf char. Das ist super.
Problem mit den Datentypen erkannt. Aber nicht zuende gedacht. Sind die
übergebenen Daten auf dem LCD überhaupt darstellbar? Wenn ja, was wird
konkret dargestellt? Wenn nicht, was möchte ich dargestellt haben und
wie kann ich das erreichen? Solche Fragen musst Du Dir selbst stellen.
Und wenn das nicht so klappt wie gewünscht, erklären was Du versucht
hast und was passiert ist.
Aber nicht uns hier einfach was hinknallen und "nun macht mal und seht
zu wie ihr mir helft". So nicht!
Gast
#3426267
Wolfgang schrieb: > Indem du, gesteuert durch den Wert des Pins, einen String erzeugst, den > du auf dem LCD ausgeben kannst. Dafür musst du erstmal wissen, was ein > String in C überhaupt ist und was ASCII-Zeichen sind. Guck dir mal den > Inhalt von deinem Character Generator des LCD Controllers an. Wert in ASCII umwandeln, dann an das LCD schicken. Welcher Buchstabe welchen Wert hat steht in der ASCII Tabelle. Und noch mal: LESEN
Gast
#3426270
>Zufrieden?
Nein. Das ist auch schon fast wieder eine Frechheit.
Ich hab's Dir geschrieben wie das geht. Darüber und über Deine Attitüde
denkst Du erstmal nach und meldest Dich so in zwei Wochen wieder; ist
zumindest meine Meinung.
Wir machen das hier freiwillig und kostenlos. Aber nicht wenn man uns
verarscht.
Gast
#3426275
>Könntet ihr mir mehr Infos geben..
DU suchst Dir die Basisinfos. Wir helfen bei Problem sie zu verstehen
und sie anzuwenden. Aber dabei muss DEINE EIGENLEISTUNG erkennbar sein.
Gast
#3426290
@ isölwa >Es geht ja z.B. darum, den Binärcode so lesen zu können wie die Uhr. Nein. Darum geht es sicher nicht. Bei den Bitweisen Verknüpfungen muss man nicht einmal den Code als Ganzes lesen sondern betrachtet jedes Bit, jede 0 und 1 für sich. >Ebenso klar sind: Logische Verknüpfungen und der BCD-Code. Um BCD-Code ging es hier überhaupt nicht. >Mit diesen Voraussetzungen geht aber fast niemand an die Materie ran. Ergo hat dieser Satz keinerlei Relevanz. >Gehässige Antworten haben noch nie etwas gebracht! Es tut mir leid. Aber Du hast meiner Ansicht nach den Kern der Sache noch nicht erfasst. Wenn Du den Thread genau liest, wirst Du sehen, das die harten Anworten ("gehässig" möchte ich nicht schreiben) nicht einem Selbstzweck dienen. Nicht der Erniedrigung weil ich Lust daran habe. Nicht meiner Unterhaltung oder der Anderer. Sie dienen dazu die Aufmerksamkeit auf das Problem zu lenken, weil er nämlich auf mehrfache freundliche und höfliche Hinweise in diesem und in anderen Thread einfach nicht reagiert hat. In diesem Sinne ist diese Vorgehensweise auf ihn und seine technischen Probleme bezogen in dem es seine Art damit umzugehen, zu lernen und Fragen zu stellen thematisiert und ist damit viel mehr und viel wertvoller als einfaches ignorieren. Es dient dazu ihn zu befähigen, ihn weiterzubringen. Im übrigen möchte ich dazu ein kleinen Zitat anbringen, dass meine Gesinnung widerspiegeln soll. "Wahre Worte sind nicht gefällig. Gefällige Worte sind nicht wahr". (Lao Tse: Tao Te King). Also: Guten Abend noch. Ok. Danke erstmal Digitalzwerg für diese Zuneigung! Du hast in vielen Punkten recht, wobei ich mich für mein VErhalten entschuldigen mag! Jedoch eine Bitte! Helf mir noch kurz in diesem Fall, dann verstehe ich bisschen mehr und werde erstmal nochmehr lesen und probieren zu verstehen, bitte! Martin Fischer schrieb: > Und daher frage ich nur, wie man auf dem LCD einen Integer ausgibt weil > ich z.B. auch den lcd_string-Command nicht 100%ig verstehe... Hallo Martin, auf dem LCD kannst du in dem Sinne gar keinen Integer ausgeben. Das LCD kann nur pro Position ein Zeichen aus seiner Zeichentabelle anzeigen. In der Zeichentabelle hat jedes darstellbare Zeichen eine Eintragsnummer, also einen Index. Zum Beispiel hat das Zeichen "A" den Index 65, das Zeichen "a" hat den Index 97, und das Zeichen "3" hat den Index 33. Die "normalen" Zeichen sind alle an standardisierten Positionen, dem ASCII-Code. Wenn du also den Integer 125 ausgeben willst, musst du also nacheinander einzeln die Zeichen "1", "2" und "5" ausgeben. LG, Sebastian Ok, das verstehe ich. Aber die Eingabe soll doch nur 1 oder 0 sein, die sind doch einzeln, oder?
Gast
#3426305
>Helf mir noch kurz in diesem Fall, dann verstehe ich bisschen mehr und >werde erstmal nochmehr lesen und probieren zu verstehen, bitte! Ja ja. Ich höre auch immer ganz bestimmt morgen mit dem Rauchen auf. Für diesen Fall gibt es auch einen netten Spruch: "Morgen, morgen, nur nicht heute, sagen alle faulen Leute". In diesem Sinne: Heute, jetzt, hier! Ich wüsste ja wie ich es machen kann: if(input){lcd_string("1");}
aber ich wollte dass es gleich so Ausgegeben wird...
Gast
#3426312
wobei man es auch damit Vergleichen kann: Im alten Testament steht " Sie trugen seltsame Gewänder und irrten planlos umher " Martin Fischer schrieb: > aber ich wollte dass es gleich so Ausgegeben wird... Ok. Wenn der Wert 1 ist, dann willst du das Zeichen '1' ausgeben. Wenn der Wert 0 ist, dann willst du das Zeichen '0' ausgeben. Wo stehen die in der Zeichentabelle? Hintereinander! Alle Ziffern von 0 bis 9 stehen direkt hintereinander! Das kannst du ausnutzen! LG, Sebastian Ok. Ich esse kurz, danach mache ich einen Lösungsvorschlag!
Gast
#3426321
Du musst dich unbedingt mit den Datentypen beschäftigen, insbesondere wie ein char und ein String dargestellt wird. Kleiner Tipp: es hat etwas mit ASCII zutun.
Gast
#3426326
hier erneut ein WICHTIGER Hinweis: TriHexagon schrieb: > Du musst dich unbedingt mit den Datentypen beschäftigen, insbesondere > wie ein char und ein String dargestellt wird. Kleiner Tipp: es hat etwas > mit ASCII zutun. Ich hätte noch was zum LESEN: http://www.mikrocontroller.net/articles/FAQ Ich hoffe das bringt das gewünschten Ergebnis.
Gast
#3426329
Lach. Ein Zufallstreffer bei Metager "Wer nichts als die Chemie versteht, versteht auch die nicht recht." Georg Christoph Lichtenberg
Gast
#3426334
>wobei man es auch damit Vergleichen kann: >Im alten Testament steht " Sie trugen seltsame Gewänder und irrten >planlos umher " Sorry. Aber ich kenne keine solche Stelle. Wo steht das in der Bibel?
Gast
#3426338
Digitalzwerg schrieb: > Sondern das er überhaupt keine Ahnung hat, was er eigentlich tut. Da ist Martin aber einer anderen Meinung, wenn ich ihn dazu mal zitieren darf: Martin Fischer schrieb: Beitrag "Re: Arduino-AVR programmieren" > programmieren kann ich doch schon nahezu perfekt!!!
Gast
#3426339
Digitalzwerg schrieb: > Sorry. Aber ich kenne keine solche Stelle. Wo steht das in der Bibel? ist glaub ich n Zitat aus der Liedpassage aus dem alten Testament. Wo genau kann ich auch nicht sagen, haben wir hier bei uns im Büro hängen ;-) Ok, Sebastian, meintest du jetzt:
???
Gast
#3426396
naja da schreibt er irgendwo 1 oder 0 hin. Vielleicht vorher noch die Position festlegen. hab ich, die steht dadrüber, aber ansonsten so lösbar? -> ja Danke erstmal, darauf wäre ich zwar auch selber gekommen-> da sind wir bei dem Punkt, dass ich nicht richtig nachgedacht habe....Eure Beleidugungen gegenmich sind also dazu da um mir klar zu machen wie man richtig arbeitet... Martin Fischer schrieb: > Ok, Sebastian, meintest du jetzt: >
> ???
Das ist eine Möglichkeit.
Es gibt aber auch noch eine zweite.
Von der Funktion kriegst du die beideb Werte 0 und 1 zurück. Die kannst
du aber so nicht einfach ans LCD geben, denn das LCD erwartet von dir
die ASCII Codes der Zeichen die es anzeigen soll (also einfach nur eine
Zahl, wobei jede Zahl laut ASCII Tabelle ein bestimmtes Zeichen angibt).
Es gibt aber kein Standard-Zeichen welches den Code 0 oder 1 hätte.
Darum gehts aber auch gar nicht, denn du willst ja nicht irgendwelche
Zeichen anzeigen, sondern die Zeichen '0' bzw. '1'. Das ist schön, nur
sind deren ASCII Codes nicht 0 bzw. 1 sondern andere. Welche steht in
jeder ASCII-Tabelle.
Glücklicherweise braucht man in manchen Fällen die ASCII Tabelle gar
nicht, auch wenn es nicht schlecht ist, wenn man sie mal ein wenig
studiert. Dann man kann das ja auch so schreiben
Hier sucht jetzt der Compiler die entsprechenden ASCII Codes für '1' bzw. '0' heraus. Man hätte das auch so schreiben können
und die ASCII Codes selber hinschreiben. Aber du siehst schon warum diese Version nicht so toll ist. Warum sollst du selbst dir die ASCII Codes raussuchen, wenn der Compiler das genausogut kann. Aber etwas anderes ist interessant. Der ASCII Code für '0' ist 48 und der für '1' ist 49. Die beiden Zeichen stehen direkt hintereinander in der ASCII Tabelle, wenn du dir ebdlich mal so eine verschissene Tabelle angesehen hättest. D.h. man kann in deinem Fall den Code auch berechnen. Ist das Ergebnis der Funktion die Zahl 0, dann soll ein Code von 48 raus kommen, ist es 1, dann soll ein Code von 49 rauskommen. Das ist aber nicht schwer zu erreichen. Einfach zum Ergebnis der Funktion noch 48 addieren und es kommt in beiden Fällen die verflucht noch mal richtige Codezahl raus.
die 48 kann man wieder durch '0' ersetzen, denn dann sucht der Compiler den richtigen Code raus. Also
> Eure Beleidugungen gegenmich sind also dazu da um mir klar zu machen wie man
richtig arbeitet...
Die 'Beleidigungen' sollen ein Tritt in den Arsch sein, damit du dich
auf deinen Hintern setzt und auch selbst mal etwas tust.
Und ja, es ist am Anfang nicht ungewöhnlich, dass man mal stunden oder
tagelang an einem einfachen Problem scheitert. Die Frage ist, was dann
passiert. Ob du in der Lage bist, durch nachdenken, nachlesen,
schlussfolgern aus vorhergehenden Übungen zu einer Lösung zu kommen oder
nicht. Im Moment lautet bei dir die Diagnose 'oder nicht'. Und das ist
schade bei jemanden, der bereits 3 (oder waren es 4) andere
Programmiersprachen spricht. Ein Tip von mir: behaupte das nie wieder,
denn das glaubt dir sowieso keiner.
Gast
#3426420
naja ich hoffe der Abend hat dir was gebracht. Es geht nicht alles auf Anhieb Gut oder Richtig. Wir haben die Links mit Hinweisen geschickt, immer wieder gesagt LESEN und VERSTEHEN, mehr kann man nicht machen. Ich weiß aus Erfahrung - aller Anfang ist schwer - aber da muss man sich auch den einen oder anderen Rat annehmen. Es bringt nix mit LCD anzufangen wenn man nicht mal weiß was macht die Hard und Software. Nicht um sonst gibt es die "Hallo Welt" Beispiele. Erst dann mit schwereren Dingen anfangen. Also: LESEN, LESEN, VERSTEHEN, PROBIEREN, LESEN, LESEN In dem Sinne, guten Abend Danke erstmal an euch alle, und WOW Jetzt stehe ich noch davor, dass meine Funktion garnicht 0 und 1 ausgibt, sondern 0 und 4, aber das PROBIERE ich selber zu lösen! Das liegt daran dass der ja 4-5V im Eingang ließt , oder? Ich habe das jetzt bei return data; mit return data/4 gelöst :D Martin Fischer schrieb: > Das liegt daran dass der ja 4-5V im Eingang ließt , oder? > Ich habe das jetzt bei return data; mit return data/4 gelöst :D Schlechte Lösung. Nimm die /4 nochmal raus und ersetze mal
durch zb
welches Ergebnis kriegst du jetzt, und was viel wichtiger ist: WARUM? Die Sache mit dem 4-5V vergess ich mal wieder. Denn soviele Facepalms gibt es auf der ganzen Welt nicht, wie ich jetzt brauchen würde.
Gast
#3426431
Martin Fischer schrieb: > Das liegt daran dass der ja 4-5V im Eingang ließt , oder? > Ich habe das jetzt bei return data; mit return data/4 gelöst :D Was liegt dann am Eingang an wenn du PIN7 nimmst? 128V?
Gast
#3426432
Karl Heinz schrieb: > Es gibt aber kein Standard-Zeichen welches den Code 0 oder 1 hätte. Standard möchte man vielleicht auch gar nicht. Das Display kann sogar die Zeichen 0 bis 7 als frei definierbare Zeichen, wenn man denn die Bitmuster z.B. bei der Initialisierung ins Ram rüberschiebt. Was da arge Probleme hat, ist die Stringverarbeitung von C, zumindest was das Zeichen 0 betrifft. Da läuft dann die Funktion lcd_data() zu ihrer vollen Größe auf ;-) Sollte durch digitalRead(PIN3) denn agr nicht gehen weil dort nichts anliegt und somit der Wert 0 ist und Division durch 0 nicht lösbar ist? Wolfgang schrieb: > Karl Heinz schrieb: >> Es gibt aber kein Standard-Zeichen welches den Code 0 oder 1 hätte. > > Standard möchte man vielleicht auch gar nicht. Das Display kann sogar > die Zeichen 0 bis 7 als frei definierbare Zeichen, Bitte verkomplizier die Sache jetzt nicht unnötig. Er schwimmt auch so schon genug mit den banalsten Grundlagen.
Gast
#3426441
Martin Fischer schrieb: > Das liegt daran dass der ja 4-5V im Eingang ließt , oder? > Ich habe das jetzt bei return data; mit return data/4 gelöst :D Meinst du, wenn du den Prozessor mit 2.5V betreibst, liefert der entsprechend eine 2?
Gast
#3426443
@ Karl Heinz > Denn soviele Facepalms gibt es auf der ganzen Welt nicht, wie ich > jetzt brauchen würde. Da könnt' ich ein 5V-Digitalbrett empfehlen. Hihi. Danke, übrigens für's löschen. Martin Fischer schrieb: > Sollte durch digitalRead(PIN3) denn agr nicht gehen weil dort nichts > anliegt und somit der Wert 0 ist und Division durch 0 nicht lösbar ist? Wen interessierts? Du hast doch durch 4 dividiert und nicht durch 0. 0 durch 4 ist sauber definiert. Aber das war auch gar nicht die Frage. Die Frage ist warum du als Ergebnis bei PIN2 die Werte 0 oder 4 zurück bekommst, während du bei PIN3 WELCHE Werte zurückbekommst? Falls du es noch nicht bemerkt hast: die Frage ist 2-teilig. Welche Werte kriegst du? Warum kriegst du sie? Sorry wenn ich das falsch verstanden habe, aber liege ich mit meiner Vermutung: Sollte durch digitalRead(PIN3) denn agr nicht gehen weil dort nichts anliegt und somit der Wert 0 ist und Division durch 0 nicht lösbar ist? Richtig? Digitalzwerg schrieb: > @ Karl Heinz >> Denn soviele Facepalms gibt es auf der ganzen Welt nicht, wie ich >> jetzt brauchen würde. > > Da könnt' ich ein 5V-Digitalbrett empfehlen. Hihi. > > > Danke, übrigens für's löschen. ? Welches löschen?
Gast
#3426448
Karl Heinz schrieb: > Bitte verkomplizier die Sache jetzt nicht unnötig. Er schwimmt auch so > schon genug mit den banalsten Grundlagen. Stimmt. Du fragst nicht den Zustand (0/1) ab sondern den Wert des Eingangs. Also: PIN0 = 1 PIN1 = 2 PIN2 = 4 PIN3 = 8 . . . PIN7 = 128 p.s. jetzt bekomm ich noch Wortfindungsstörungen Martin Fischer schrieb: > Sorry wenn ich das falsch verstanden habe, aber liege ich mit meiner > Vermutung: > Sollte durch digitalRead(PIN3) denn agr nicht gehen weil dort nichts > anliegt und somit der Wert 0 ist und Division durch 0 nicht lösbar ist? > Richtig? Nein, falsch. Warum probierst du es nicht einfach aus, wenn ich dir schon die 'Bastelanleitung' dazu liefere. Nimm die Division nochmal raus, und dann probierst du was du von der Funktion an Werten zurück bekommst, je nachdem welchen Pin du angibst. Weil ich das LCD jetzt schon voller wut abgebaut habe weil es mich grade nervt dass ich keinen Plan habe wie so ein LCD funktioniert ... ich glaube ich bau es nochmal ran!
Gast
#3426453
@ Karl Heinz
>Welches löschen?
Ich dachte einer von den folgenden war von mir.
Doch ein wenig heftig, wenn ich mich recht erinnere. Jedenfalls nichts
was man der Nachwelt unbedingt überliefern möchte.
Beitrag #3426108 wurde von einem Moderator gelöscht.
Beitrag #3426114 wurde von einem Moderator gelöscht.
Beitrag #3426136 wurde von einem Moderator gelöscht.
Martin Fischer schrieb: > Weil ich das LCD jetzt schon voller wut abgebaut habe weil es mich grade > nervt dass ich keinen Plan habe wie so ein LCD funktioniert ... Tipp: es liegt nicht am LCD. Genau aus dem Grund lautet hier immer wieder die Empfehlung, die ersten Schritte auf dem PC zu machen. Denn die Text-Ausgabegeräte funktionieren in dieser Hinsicht alle gleich. Ob da jetzt ein LCD irgendwelche Buchstaben hinmalt oder ob auf dem PC die Zeichen in einem Konsolen-Fenster landen ist Jacke wie Hose. Vom Prinzip her besteht kein Unterschied. Auf beiden werden 'Zeichen' ausgegeben, indem man dem Ausgabegerät die ASCII Codes der auszugebenden Zeichen übergibt. Und wenn ich das hinzufügen darf: das ist Grundlagenwissen aus den ersten 40 Seiten eines 250 Seiten starken C-Buchs.
Gast
#3426457
>ich glaube ich bau es nochmal ran!
Recht so. Immer dranbleiben.
Digitalzwerg schrieb: > @ Karl Heinz > >>Welches löschen? > > Ich dachte einer von den folgenden war von mir. > Doch ein wenig heftig, wenn ich mich recht erinnere. Jedenfalls nichts > was man der Nachwelt unbedingt überliefern möchte. > Beitrag #3426108 wurde von einem Moderator gelöscht. > Beitrag #3426114 wurde von einem Moderator gelöscht. > Beitrag #3426136 wurde von einem Moderator gelöscht. Ah, habs gesehen. Da war wohl ein andere Mod noch im Thread. Und ja, von der Sache her waren sie korrekt, aber die Wortwahl war wirklich ein wenig heftig.
Gast
#3426459
Martin Fischer schrieb: > Weil ich das LCD jetzt schon voller wut abgebaut habe weil es mich grade > nervt dass ich keinen Plan habe wie so ein LCD funktioniert ... > ich glaube ich bau es nochmal ran! öhm wie jetzt... hört sich ja an als ob der Thread auch von dir ist: Beitrag "LCD-Display funktioniert nicht" Hallo Martin, nimms mit Humor. Zum Beispiel so: Kennst du schon den C/C++-Operator !! ? Nicht !, sondern !! ? Liefert für jeden Wert ungleich Null 1 zurück, und nur bei Null 0. LG, Sebastian Das es nicht am LCD liegt weiß ich, ich brauche es nur um den Wert zu lesen! Ich habe es jetzt aber durch das Lesen eures großartigen Tutorials geschafft! data = *reg & (1 << pin); statt data = reg & (1 << pin); Jetzt funktioniert es jedenfalls. Dieses Sternchen war doch das Zeichen für einen Pointer? Dann gucke ich jetzt erstmal nochmal nach was genau ein Pointer ist ... Martin Fischer schrieb: > Das es nicht am LCD liegt weiß ich, ich brauche es nur um den Wert zu > lesen! > Ich habe es jetzt aber durch das Lesen eures großartigen Tutorials > geschafft! > data = *reg & (1 << pin); statt data = reg & (1 << pin); Schmeiss das tutorial auf den Müll und fang endlich an ein ordentliches C-Buch zu lesen. Das hat doch keinen Sinn wenn du mit Zehntelwissen an Dinge rangehst, die du nicht verstehst. Und nein, die Lösung ist falsch. In ca. einem halben Jahr könntest du sogar verstehen warum. Bitte bleibe freundlicher.... Hier aus dem Tutorial:
Und es funktioniert auch!
Gast
#3426466
Neeeeeiiiiin! Das hat nichts mit Pointern zu tun. P.S. Ich muss gerade an Monty Python denken.
Gast
#3426469
Stöhn. Ich guck jetzt Luther und bastle mit meinem neuen Robo TX. Mal gucken ob man die Firmware irgendwie neu flashen kann. Man sry dass ich mich nicht wirklich Auskenne und grade auch Teilweise keinen Schimmer habe! Ich mag es aber wirklich verstehen und lernen, ihr helft mir super, und sobald mein C-Buch da ist werde ich auch das durcharbeiten! Ihr helft mir teilweise so doll, und dann beleidigt ihr mich wieder, das macht mich echt traurig... Martin Fischer schrieb: > Bitte bleibe freundlicher.... Was soll ich freundlicher sein. Ich geb dir Übungen von denen ich mir erhoffe, dass sie dir vielleicht ein wenig Einsicht geben könnten, was da eigentlich wirklich vor sich geht. Und du ignorierst das einfach. Du willst doch in Wirklichkeit gar nicht lernen. Du willst schnelle Ergebnisse. Such dir ein anderes Hobby. Zum Programmieren bist du nicht geeignet. ICh will lernen! Du hast mir doch jetzt nichts anderes gegeben außer dass ich die PIN-Werte auslese und nicht die den Status!
Gast
#3426476
Digitalzwerg schrieb: > P.S. Ich muss gerade an Monty Python denken. Die machen wieder Live Vorstellungen, also genau 4 ;-) Karten sollte es noch geben :-D
Gast
#3426477
>ICh will lernen! >Du hast mir doch jetzt nichts anderes gegeben außer dass ich die >PIN-Werte auslese und nicht die den Status! Meine Güte. Das hat aber einen bestimmten Sinn, dass Du das machen sollst. Der Karl Heinz ist hier so ziemlich der Prototyp der Geduld. Ganz anders als ich. Mach genau das was er schreibt. Nicht anderes. Um Gottes Willen Mann, wenn Du ein Aha-Erlebnis haben willst tu das. Scheisse. Wo hab ich den Schnaps hingestellt.
Gast
#3426482
Martin Fischer schrieb: > Man sry dass ich mich nicht wirklich Auskenne und grade auch Teilweise > keinen Schimmer habe! > Ich mag es aber wirklich verstehen und lernen .... Ich dachte wir wären schon über den Punkt hinaus. Na vielleicht noch mal, LESEN, LESEN, VERSTEHEN, VERSUCHEN, LESEN, LESEN und vorallem ganz am Anfang anfangen. Wenn dein "Buch" (noch)nicht da ist, dann warte ab, schlaf eine Nacht über das was du heute gelernt hast und mach morgen einen Tag frei, vielleicht n schönen 1. Advent. Dann hast du bissel Abwechslung und bekommst den Kopf frei für neues.
Gast
#3426487
Digitalzwerg schrieb: > Scheisse. Wo hab ich den Schnaps hingestellt. ich nehm auch einen, ups geht nicht bin noch im Büro und muss schuften, da roll ich mal schnell zum Wasserspenden ;-9 Martin Fischer schrieb: > ICh will lernen! > Du hast mir doch jetzt nichts anderes gegeben außer dass ich die > PIN-Werte auslese und nicht die den Status! Welchen Teil von ... Ersetze in
(mit deiner digitalRead Funktion ohne die Division durch 4), mal das PIN2 durch PIN3 (oder PIN1, oder PIN0) und sieh mal nach, welche Werte du im Fall von einer 0 bzw. 1 am jeweiligen Pin du kriegst. ... verstehst du nicht? Ich hab mir das nicht ohne Grund ausgedacht. Aus den Werten könnte man mit ein wenig nachdenken und schlussfolgern drauf kommen, was da eigentlich abgeht und warum genau die Werte aufscheinen, die aufscheinen.
Gast
#3426493
>Die machen wieder Live Vorstellungen, also genau 4 ;-) Karten sollte es >noch geben :-D Ich find's nicht. Ich find's nicht. PANIK. Wo steht das? So gut wie Du würde ich es auch gerne haben. Geld am Wochenende verdienen. He he. Karl Heinz schrieb: > Ich hab mir das nicht ohne Grund ausgedacht. Aus den Werten könnte man > mit ein wenig nachdenken und schlussfolgern drauf kommen, was da > eigentlich abgeht und warum genau die Werte aufscheinen, die > aufscheinen. Hat man das WARUM verstanden, dann kann man sich drann machen über das 'Wie korrigier ich das' nachzudenken. Aber der erste Schritt ist immer das Verständnis darüber WARUM die Dinge so sind wie sie sind. Aber dazu muss man erst mal wissen, was eigentlich rauskommt. Wenn du nicht stutzig wirst, dass dir die Funktion 0 oder 4 liefert, dann muss ich dich eben mit der Nase drauf stossen. Und was machst du? Du schreibst etwas aus einem Tutorial ab, das für einen ganz anderen Zweck gedacht ist und nichts, aber auch gar nichts, mit deiner Aufgabenstellung zu tun hat. Und noch dazu in deiner Aufgabenstellung ein schwerer Fehler wäre.
Gast
#3426502
Digitalzwerg schrieb: >>Die machen wieder Live Vorstellungen, also genau 4 ;-) Karten sollte es >>noch geben :-D > > Ich find's nicht. Ich find's nicht. PANIK. Wo steht das? > http://www.viagogo.de/Kunst-und-Theater-Tickets/Comedy/Monty-Python-Karten > > So gut wie Du würde ich es auch gerne haben. Geld am Wochenende > verdienen. He he. hihi naja CallCenter ;-) Elektronik/Programmierung hab ich nur seit paar Jahren (30) als Hobby
Gast
#3426508
@ Steffen Merci. Ich vergass. Das wollte ich noch nachfragen, bzw. klar stellen Bezog sich das > Bitte bleibe freundlicher.... auf das hier > In ca. einem halben Jahr könntest du sogar verstehen warum. Dann möchte ich das klar stellen. Das war mein Ernst! Das war weder Verarsche noch Beleidigung. Das ist mein voller Ernst. Programmieren dauert seine Zeit. Ich würde sagen, nach ca. einem Jahr ist ein Anfänger in den Status eines Fortgeschrittenen aufgestiegen. Natürlich nur, wenn er fleissig übt. Und da scheint mit auch das Problem zu liegen. Wenn du in 3 Jahren dich mit 4 Sprachen beschäftigt hast, dann hast du von keiner Sprache auch nur annähernd Ahnung. 3 Jahre sind schon eher knapp, wenn man EINE Sprache gut bis exzellent beherrschen will.
Gast
#3426513
Digitalzwerg schrieb: > @ Steffen > > Merci. kein Ding, is schon Lustig hier ;-) Ok sry dass ich da was verwechselt habe, ich geh jetzt ins Bett, bis morgen, schöne Nacht noch, danke für das heute
Gast
#3426516
Ts ts ts, Karl Heinz. Jetzt hast Du ihn müde gemacht. Ich drück' Dich mal. keine Sorge, ich komme morgen früh wieder, nacht
Gast
#3426520
oh jeh,ich denk n Tag Pause tut dir gut. Mal gucken, jetzt bin ich wirklich weg, guten Nacht allerseits Digitalzwerg schrieb: > Ts ts ts, Karl Heinz. Jetzt hast Du ihn müde gemacht. Kann ich verstehen, das einem da schon mal der Kopf brummt. Aber so ist das nun mal, wenn man sich in Trigonometrie versucht und Schwierigkeiten bei den Grundrechnungsarten hat. Die Programmiersprache "Do what I mean" ist nun mal noch nicht erfunden. Wie findet ihr das Buch: http://www.amazon.de/C-Programmieren-Anfang-Helmut-Erlenkötter/dp/3499600749/ref=sr_1_1?ie=UTF8&qid=1385878890&sr=8-1&keywords=c+buch
Gast
#3426676
Karl Heinz schrieb: > ... und sieh mal nach, welche Werte du im Fall von einer 0 bzw. 1 > am jeweiligen Pin du kriegst. Nach Beschreibung soll digitalread() entweder LOW oder HIGH zurückliefern, was doch wohl als boolscher Wert, also '== 0' und '!= 0' zu lesen ist. Daran wird man sich bei der Auswertung des Rückgabewertes halten müssen, egal ob im Fall von '!= 0' in der aktuellen Version vom Arduino 1,2,4,... zurückgegeben wird. Ich würde als soetwas wie
in die morgendliche Rund werfen, wobei das '=HIGH' redundant ist.
Gast
#3426801
Martin Fischer schrieb: > Wie findet ihr das Buch: > http://www.amazon.de/C-Programmieren-Anfang-Helmut... Mhm, was soll man sagen, es hat so seine Tücken. Das Buch ist alt und gespickt mit Fehlern, es hält nicht einmal die Standards ein und verwirrt den Leser durch Dinge wie "printf kann rechnen". Für mich wars nicht so schlimm, zu dem Zeitpunkt kannte ich C# schon seit ein paar Jahren und solche Sätze wie "printf kann rechnen" konnten mich nicht verwirren. Ging eigentlich recht gut, allerdings auch nur weil ich beim ausprobieren mir IMMER alle Warnungen angesehen habe und im Internet nachgelesen habe. So entlarvte ich all diese schrecklichen Fehler im Buch und habe wirklich C gelernt. Von daher glaube ich nicht dass das Buch etwas für dich ist. Kenne allerdings auch keins das ich empfehlen kann.
Gast
#3426845
@ Martin Ich kenne zwei, die ich aber nicht mit dem von Dir genannten Buch vergleichen kann, weil ich es nicht kenne. 1. Kernighan & Ritchie "Programmieren in C", 2. Auflage ANSI C 2. Jürgen Wolf "C von A bis Z" (ist Online bei http://openbook.galileocomputing.de/c_von_a_bis_z/) Das erste solltest Du auf jeden Fall besitzen und benutzen. Jedoch ist es vermutlich zum Lernen nicht so gut. Es ist wohl eher geeignet, damut Du, was Du in einem eigentlichen Lehrbuch gelernt hast zu vertiefen. Das zweite habe ich erst kennengelernt als ich schon jahrelang C konnte. Ich benutze es fallweise, um mal kurz was nachzuschlagen, falls das erste nicht verfügbar ist (weil ich nicht zuhause bin). Es scheint mir nicht schlecht zu sein, hat aber auch sein Mängel. Die beste Empfehlung ist wahrscheinlich in der Stadtbibliothek nachzuschauen, was es so gibt, sich die Bücher auszuleihen und mal die ersten zwei oder drei Kapitel durchzuarbeiten. Wenn Du das mit den verfügbaren Büchern gemacht hast, hast Du auch einen Eindruck welcher Autor das Thema für Dich am besten verständlich geschildert hat. Das Buch kannst Du dann auch kaufen. Was eigentlich auch recht nützlich ist, um mal schnell was nachzuschlagen und vor allem schnell zwischen verschiedenen Sprachen zu vergleichen, ist: 3. Henning Vogelsang "Handbuch Programmiersprachen" Nützlich für das "Kopfkissen" ist auch eine der zahlreichen online "Referenzen". Meist ein bis vier Seiten mit den wesentlichsten Konstrukten. Vor allem am Anfang gut, wenn man ein Konstrukt eigentlich schon kennt, aber dann doch gerade nicht weiss, wo das Semikolon hingehört :-) Das ist z.B. http://www.digilife.be/quickreferences/QRC/C%20Reference%20Card%20(ANSI)%202.2.pdf Mein Tipp zum Lernen: Ein uraltes Turbo-C aus dem Borland Museum
besorgen. Dann dem Compiler sagen, dass er extrem pingelig sein soll,
also wirklich alle Warnungen aktivieren. Das Programm so schreiben, dass
er zufrieden ist. Dem C-Puristen sträuben sich zwar alle Nackenhaare,
wenn er den Code sieht ("das geht doch viel einfacher ohne die ganzen
Deklarationen und Klammern"), aber man lernt enorm dabei. Ein weiterer
Pluspunkt ist der integrierte Debugger, mit dem man jedes Statement,
jede Variable beäugen kann.
Ansonsten kann ich noch den Obfuscated C Coding Contest
http://www.ioccc.org/
empfehlen. Da sieht man, was in C so alles möglich ist.
Gast
#3426869
> ... Obfuscated C Coding Contest ...
Naja. Das ist für einen Anfänger ungefähr so nützlich wie ein Schlag auf
den Kopf oder für einen Fahranfänger eine Einführung in die Grenzphysik
der Formel 1.
Kann man mal angucken, wenn man den Inhalt von K&R beherrscht, aber
nicht vorher.
ok! Mit meiner Funktion lese ich ja nur den Wert des Pins aus (4) Wie lese ich aber jetzt wirklich nur 0 und 1 richtig aus? Das muss doch auch gehen ohne zu rechnen, oder?
Gast
#3426892
Fangen wir den ganzen Sermon von gestern nicht schon wieder von vorne an. Mach das was Dir Karl Heinz gestern empfohlen hat, um das Problem und die Zusammenhänge selbst zu erforschen und zu lernen.
Gast
#3426893
Tut mir leid aber wenn du keine Bitoperationen lernen willst, kannst du es gleich vergessen. Das sind so ziemlich die Grundrechenarten im Low-Level Sektor. Martin Fischer schrieb: > Wie lese ich aber jetzt wirklich nur 0 und 1 richtig aus? Das muss doch > auch gehen ohne zu rechnen, oder? Eine Möglichkeit steht schon hier im Thread: Beitrag "Re: AVR-C Pin lesen und in LCD schreiben"
Gast
#3426900
Ist das zu glauben? Sowas von Hartleibigkeit! Ich möchte den Mods vorschlagen diesen Thread zu schliessen. Digitalzwerg schrieb: > Das ist für einen Anfänger ungefähr so nützlich wie ein Schlag auf > den Kopf Sorry, hatte die Ironie Tags vergessen :-(
Gast
#3426941
Digitalzwerg schrieb: > Fangen wir den ganzen Sermon von gestern nicht schon wieder von vorne > an. > > Mach das was Dir Karl Heinz gestern empfohlen hat, um das Problem und > die Zusammenhänge selbst zu erforschen und zu lernen. moin moin :-D also ich hab heute wieder Spätschicht bis Mitternacht, da könenen wir schon noch einige Dinge erörtern :-D app... hast noch Schnaps da? :-D
Gast
#3426949
> hast noch Schnaps da? :-D
Nö.Ich habe dann die Parfümvorräte geplündert.
Im Moment sind die Klebstofftuben dran. :-)
Ich habe dann noch bis so drei Uhr an 'nem Controller hier rumgespielt.
Heute morgen dann um 7 aufgestanden, sonst verschiebt sich meine
Schlafphase so blöd und ich brauche 'ne Woche ehe es wieder passt. Ich
werde also heute abend nicht besonders alt.
Ich habe mich mit Bit-Operatoren beschäftigt, ich verstehe sie jetzt!
Gast
#3427211
Martin Fischer schrieb: > Ich habe mich mit Bit-Operatoren beschäftigt, ich verstehe sie jetzt! schön, na dann gib sie mal mit deinen Worten wieder. Bin gespannt :-)
Gast
#3427215
>schön, na dann gib sie mal mit deinen Worten wieder. Bin gespannt :-)
Gute Idee!
Also: | -> or, ich merke mir das mit es addiert die sozusagen ~ -> wandelt alle 1 in 0 und andersrum um... & -> Subrahiert sozusagen alle 1 raus
Gast
#3427293
>Also: > | -> or, ich merke mir das mit es addiert die sozusagen > ~ -> wandelt alle 1 in 0 und andersrum um... > & -> Subrahiert sozusagen alle 1 raus OK. Ersatzweise reicht auch ein Heißwasser-Ordal. :-) Das einzig Rechte war der Text über '~'. OK. Wie nennt man das in einem Wort? Für '|' und '&' stelle bitte mal eine Wertetabelle auf. Das mit dem "Addieren" und "Subtrahieren" ist eher ... ähem ... nicht ganz richtig. |: 11010011 | 00111011 = 11111011 &: 11011101 & 10010001 = 01001100 oder?
Gast
#3427307
Fangen wir mal mit einzelnen Bits an; was übrigens zu der Frage führt, ob Di klar ist was "bitweise" heisst. Ich bin zu faul das mit der Maus mitzuzählen a b | a und b ----+-------- 0 0 | 0 1 | 1 0 | 1 1 | a b | a oder b ----+-------- 0 0 | 0 1 | 1 0 | 1 1 |
Gast
#3427313
Aber wenn es denn sein muss:
So geht es übersichtlicher
|: 11010011
00111011
-------------
11111011
rrrrrrrr (r = richtig)
&: 11011101
10010001
--------------
01001100
ffrfffrf (f = falsch)
a b | a und b ----+-------- 0 0 | 1 0 1 | 0 1 0 | 0 1 1 | 1 a b | a oder b ----+-------- 0 0 | 0 0 1 | 1 1 0 | 1 1 1 | 1 ich hoffe das ich das jetzt richtig gemacht habe...
Gast
#3427318
Oh. Mist. Sorry. Da war einer mehr richtig.
&: 11011101
10010001
--------------
01001100
frrfffrf (f = falsch)
| -> habe ich verstanden.. kannst du & nochmal erklären?
Gast
#3427322
Martin Fischer schrieb: > &: 11011101 & 10010001 = 01001100 Das ist falsch. Denk doch mal nach, warum heißt dieser Operator wohl AND/UND. Das ODER ist aber schon mal richtig.
Gast
#3427324
a b | a und b ----+-------- 0 0 | 1 Falsch 0 1 | 0 Richtig 1 0 | 0 Richtig 1 1 | 1 Richtig a b | a oder b ----+-------- 0 0 | 0 Richtig 0 1 | 1 Richtig 1 0 | 1 Richtig 1 1 | 1 Richtig
Gast
#3427325
>Das ODER ist aber schon mal richtig.
Leider nur nicht durchgehend. Mal macht er es richtig. Mal falsch.
Gast
#3427327
>Leider nur nicht durchgehend. Mal macht er es richtig. Mal falsch.
Sh... Bin schon selbst ganz konfus. Nein. Das Oder war korrekt.
Nene, das war nur pfusch, ich habe es verstanden..and zählt beide zusammen, oder? bei 0 & 0 dann 0 und bei dem anderen 1
Gast
#3427333
>and zählt beide zusammen, oder? bei 0 & 0 dann 0 und bei dem anderen 1
Nein. Das habe ich Dir oben schon erzählt. Mit einer Addition (bzw. dem
Zusammenzählen) hat das, was Dich betrifft im Moment nur am Rande oder
noch besser Zufällig zu tun.
Ich weiss, es ist verführerisch, die 0 und 1 als Zahlen zu betrachten.
Aber das sind sie nicht. Es sind "Wahrheitswerte". Wahr oder Falsch.
Nichts anderes. Das musst Du verstehen.
Gast
#3427337
> ... und bei dem anderen 1
Bei dem anderen was? Bitte drücke Dich hier sehr deutlich und detailiert
aus. Sonst kommt es immer wieder zu Mißverständnissen.
Ok, ist klar, wahr und falsch... und was genau ist jetzt die Addition?
Gast
#3427342
>was genau ist jetzt die Addition?
Worauf bezieht sich die Frage?
Die "Addition" ist eine Operation auf natürliche, reelle, komplexe
Zahlen sowie auf einige weitere Objekte.
Gast
#3427344
Digitalzwerg schrieb: >>and zählt beide zusammen, oder? bei 0 & 0 dann 0 und bei dem anderen 1 > > Nein. Das habe ich Dir oben schon erzählt. Mit einer Addition (bzw. dem > Zusammenzählen) hat das, was Dich betrifft im Moment nur am Rande oder > noch besser Zufällig zu tun. > > Ich weiss, es ist verführerisch, die 0 und 1 als Zahlen zu betrachten. > Aber das sind sie nicht. Es sind "Wahrheitswerte". Wahr oder Falsch. > Nichts anderes. Das musst Du verstehen. Genau das ist es. Es sind Zustände. 0 ein, 1 aus. Und bei den Operatoren & UND also das eine UND das andere. Wenn beide Eingänge den Zustand 1 haben wird der Ausgang auch 1. Anders beim | ODER der eine ODER der andere Eingang machen den Ausgang 1.
Gast
#3427347
Welche Addition denn? Das ist logische Mathematik, da gibts keine Addition/Subtraktion... Wenn dich die Zahlen verwirren, schreib erstmal: True & false = ?
Gast
#3427352
@ Martin Der Schritt den Du da machen willst, hat mindestens noch drei andere Verständnisschritte zur Voraussetzung. Also hübsch langsam. Das hier ist ungefähr Dein Programm: http://www.elektronik-kompendium.de/sites/dig/index.htm#1 Hm, ja, aber was ist true & false? true oder false? :D
Gast
#3427358
Das liest Du erstmal in Ruhe durch und verdaust es. Eine Frage in Bezug auf diese Themen muss wie aus der Pistole geschossen kommen. Sagen wie von einer Zwille. Aber das wenigstens. So. Und nun gehst Du das an. Ich habe keine Lust Dir die Grundlagen der Digitaltechnik hier Schritt für Schritt vorzukauen. Was anderes ist, wenn Du konkrete Fragen dazu hast. Aber dann halte Dich an das was ich gestern schon geschrieben habe. Es muss erkennbar sein, das Du was gearbeitet hast. Ok, danke erstmal...
Gast
#3427364
>Hm, ja, aber was ist true & false? true oder false? :D
Darüber denkst Du jetzt mal ein paar Tage nach. Du kommst schon darauf.
Und lies in dem Link, den ich Dir eben gegeben habe.
Gast
#3427367
Noch ein kleiner Scherz als Anregung: "Willst Du Tee oder Kaffee?" "Ja." Martin Fischer schrieb: > Hm, ja, aber was ist true & false? true oder false? :D http://de.wikipedia.org/wiki/Aussagenlogik#Und-verkn.C3.BCpfte_Aussagen_.E2.80.93_Konjunktion Martin Fischer schrieb: > Hm, ja, aber was ist true & false? true oder false? :D Wenn du kein Geld hast (false) und dein Portemonnaie ist weg (false) kannst du kein Geld ausgeben (false). Wenn du Geld hast (true) und dein Portemonnaie ist weg (false) kannst du kein Geld ausgeben (false). Wenn du kein Geld hast (false) und dein Portemonnaie ist da (true) kannst du kein Geld ausgeben (false). Wenn du Geld hast (true) und dein Portemonnaie ist da (true) kannst du Geld ausgeben (true). Also: Eine UND Verknüpfung ist nur dann wahr, wenn alle Bestandteile wahr sind. Wenn du nicht besoffen bist (false) oder nicht gekifft hast (false) ist die Polizeikontrolle harmlos (false). Wenn du besoffen bist (true) oder nicht gekifft hast (false) ist die Polizeikontrolle schlimm (true). Wenn du nicht besoffen bist (false) oder gekifft hast (true) ist die Polizeikontrolle schlimm (true). Wenn du besoffen bist (true) oder gekifft hast (true) ist die Polizeikontrolle schlimm (true). Also: Bei einer ODER Verknüpfung ist das Ergebnis wahr, wenn mindestens einer der Bestandteile wahr ist. DAnke, echt super erklärt Danke Danke DAnke! Ich habe es geschafft dass er eine 1 oder 0 ausgibt, mit:
seht ihr, ich leerne dazu, ich habe bei return das >>pin nicht gehabt! LERNE ICH DAZU? Martin Fischer schrieb: > LERNE ICH DAZU? offensichtlich nicht Was? Wieso? So ist es jetzt richtig! Es wird erst die 1 um pin stellen verschoben, und jetzt wieder zurück zur 1..? Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|