Hallo ich würde mich als fortgeschrittenen Einsteiger in der µC Programmierung bezeichnen und habe schon einige Grundkenntnisse in C und Anwendung bei den 8 Bit AVR (ATtiny, ATMega). Trotzdem bin ich letztendlich den Arduino Weg gegangen (was ja eine Mischung zwischen C und C++ ist) und habe mich in der auch dort möglichen Hardwarenahmen Programmierung eingearbeitet. Das ist dank vieler guter Tutorials und auch guter Bücher und teilweiser Zuhilfenahme anderer Quellen die sich nicht direkt auf µC oder Arduino beziehen sehr gut möglich. Ein wichtiger Punkt ist aber das diese Tutorials und Bücher in deutscher Sprache sind. Nun bin ich bei den LCD Displays (mit HD44780 Controller) angelangt. Deren Nutzung mit fertigen Librarys ist sehr Komfortabel und Einfach möglich. Aber ich möchte mehr, ich möchte verstehen wie eine entsprechende Library von Grund auf entwickelt wird. Leider ist es so das die Beispiele die zu Librays finden sind (Arduino, aber nicht nur da) immer anhand relativ einfacher Probleme gegeben werden (Blinkschaltungen, elektronische Würfel usw.) Ich suche also ein, vorzugsweise deutschsprachiges, Tutorial bei den von Grund auf gezeigt wird wie eine LCD Library(HD44780 Controller) im Arduinosystem (C++) entwickelt wird. Unwichtig (im Sinne muss erklärt werden) ist aber wie eine Library generell aufgebaut ist, was diese ist und anderer absolutes Grundlagenwissen zu Sprache C und C++. Und nein - die schon bestehende Library selbständig zu analysieren ist kein Tutorial - Ein Tutorial soll in verständlichen und noch wichtiger tief gehenden Erklärungen, einen bei der Hand nehmen und zeigen wie und warum es so gemacht wird (werden kann) und was für eventuell "Seltsame und ungewöhnliche, so nie erlernte" Fomulierungen in fertigen Librays verwende werden. Es geht mit letztendlich darum, später einmal selbst Librarys für andere LCD Controller oder auch irgendwelche Bus Systeme (i2C-Bus) und auchganz andere herausfordernde Sachen nur mithilfe von Datenblättern und Application Notes zu entwickeln oder wenigstens schon fertige Librarys 100% zu verstehen. Falls wichtig: Die Hardware ist kein (selten ein) Problem für mich, ich kenne mich mit Analogtechnik recht gut aus, sogar gut wenn man bei Amateur Ansprüchen bleib ;-), auch Digitaltechnik ist mir selbst auf Logicgatterebene bekannt. Wahrscheinlich könnte ich mit sehr viel Aufwand und umfangreichen Suchen es auch selbst schaffen eine bestehende LCD Library zu verstehen. Aber ein gutes und fertiges Tutorial von jemanden von einen "Profi" der 100% weis was und dementsprechend schon viel vorher erfolgreich entwickelt hat ist natürlich viel besser. Es geht hier das erlernen für den Hobbybereich, nicht(!) für das Berufliche oder Schulische / Universitäre Umfeld. Liquid Crystal
Entwicklung einer LCD Library .Tutorial gesucht schrieb im Beitrag #4919748: > Ich suche also ein, vorzugsweise deutschsprachiges, Tutorial bei den von > Grund auf gezeigt wird wie eine LCD Library(HD44780 Controller) im > Arduinosystem (C++) entwickelt wird. Den ersten Teil deines Wunsches (Ansteuerung eines HD44780) erfüllt das AVR-Tutorial: LCD. Und den zweiten Teil (Programmieren in C) dürftest du selber hinbekommen. Es ist übrigens generell kein schlechter Weg, über das Reverse-Engineering eines bestehenden guten Quellcodes zu lernen. Man lernt dabei die Sprache, die man verwenden will durchaus besser kennen. Indbesondere, weil man sieht, wie ein Anderer sie "spricht". Da fällt einem so mancher eigener "Sprachfehler" auf... BTW: "LCD Display" ist doppelt gemoppelt, denn das D im LCD kommt von "Display"...
Lothar M. schrieb: > Es ist übrigens generell kein schlechter Weg, über das > Reverse-Engineering eines bestehenden guten Quellcodes zu lernen. ...und wo findet man "guten Quellcode"? :-)
Entwicklung einer LCD Library .Tutorial gesucht schrieb im Beitrag #4919748: > rotzdem bin ich letztendlich den Arduino Weg gegangen (was ja eine > Mischung zwischen C und C++ ist) ... es ist C++ !!! Nur weil C++ Syntaxelemente als Untermenge verwendet ist es dennoch C++ und KEIN C . Entwicklung einer LCD Library .Tutorial gesucht schrieb im Beitrag #4919748: > Unwichtig (im Sinne muss erklärt werden) ist aber wie eine Library > generell aufgebaut ist, was diese ist und anderer absolutes > Grundlagenwissen zu Sprache C und C++. Genau DAS ist eben NICHT unwichtig, denn wer das kann, kann auch aus Datenblättern heraus eine Bibliothek entwickeln. Im Falle von Arduino muß man hier fast nur Wissen, dass es eine Klasse im Stile von: SOFTI2C::SOFTI2C(uint8_t sda, uint8_t scl) gibt und jede weitere Bibliotheksfunktion ein Member von SOFTI2C ist. Bsp::
1 | // in der Bibliothek, bspw. softi2c.cpp |
2 | |
3 | SOFTI2C::SOFTI2C(uint8_t sda, uint8_t scl) |
4 | { |
5 | // fuer jedes Mitglied von SOFTI2C ist my_sda und my_scl verfuegbar |
6 | |
7 | my_sda = sda; |
8 | my_scl = scl; |
9 | |
10 | // hier folgt Initialisierungscode... |
11 | // Anschluesse VORERST als Eingang setzen |
12 | |
13 | pinMode(m_scl, INPUT); |
14 | pinMode(m_sda,INPUT); |
15 | digitalWrite(m_scl, LOW); |
16 | digitalWrite(m_sda, LOW); |
17 | |
18 | } |
19 | |
20 | SOFTI2C::start(void) |
21 | { |
22 | // bla bla |
23 | } |
24 | |
25 | // im Hauptprogramm, hier wäre es dann mysofti2c.ino |
26 | |
27 | |
28 | // Digitalpin 2 und 3 werden zur Kommunikation verwendet |
29 | |
30 | SOFTI2C my_baustein(2, 3); |
In C (und somit dann für NICHT-Arduino siehts dann etwas anderst aus, weil es dort eben keine Klassen gibt). Prinzipiell solltest du dich wirklich damit auseinandersetzen, was Bibliotheken (oder wie ich es lieber formuliere: "Softwaremodule") sind und wie sie aufgebaut sind. Schreibe also erst einmal ein Softwaremodul für Arduino, das ganz absichtlich KEINE Hardware anspricht (schön mit Klasse und Methode). Wenn du das kannst, beschäftige dich mit Hardware (und dann nur mit Hardware, ohne Bibliothek).... und wenn du beides kannst verheirate dein Wissen zu einem Softwaremodul (von mir aus kann das auch Bibliothek genannt sein).
Hallo, "Wahrscheinlich könnte ich mit sehr viel Aufwand und umfangreichen Suchen es auch selbst schaffen eine bestehende LCD Library zu verstehen." Genau! Du könntest einen vorgegeben funktionierenden Code Zeile für Zeile untersuchen, um heraus zu finden, was mit den Bits und Bytes gemacht wird, bis sie zum LCD gelangen. Ebenso bietet sich die Möglichkeit an, in einem Debugger schrittweise die Befehle abzuarbeiten und dabei zu schauen, was in den Registern passiert. Mit freundlichem Gruß
Harald W. schrieb: > ...und wo findet man "guten Quellcode"? :-) Man muss viel davon ansehen. Und irgendwann hat man "ein Auge" dafür... Ralph S. schrieb: > ... es ist C++ !!! Es ist sicher kein C++, sondern es verwendet ein überschaubares Subset der simpelsten C++ Komponenten. Und bei Wikipedia wird als Sprache deshalb auch C genannt: https://de.wikipedia.org/wiki/Arduino_(Plattform)
Eine "gute" Library unterscheidet sich von einem "guten" Programm nur dadurch, dass sie keinen "Einsprungpunkt" hat; ich meine keine main-Funktion hat. Du kannst also Dein Problem sinngemäss insofern vereinfachen, dass Du nach Tutorials über Programmstruktur, Programmier-Paradigmen und Verwendung und Entwurf von Datentypen suchst. In der Regel fängt man so an, dass man sich einmal die Texte über grundlegende Algorithmen anschaut. Das Buch "Algorithmen in C" ist da ein guter Einstieg (und sogar auf Deutsch erhältlich). Ein wesentlicher Faktor ist allerdings, dass Du die Themen auch konkret in kleine Programme umsetzt. Soweit möglich in Abwandlungen für eigene kleine Projekte auf dem PC. Erst so bekommst Du ein "Gefühl" (ja, das ist in der Informatik genauso hilfreich wie beim Tischlern) für die Sache und das Thema insgesamt. Ein echtes Problem ist, auf lange Sicht, der Wunsch nach solchen Tutorials in deutscher Sprache. Die "Lingua franka" (die allen gemeinsame Sprache) der Informatik ist nun einmal Englisch (und wird vermutlich irgendwann Chinesisch). Ich kann Dir aber dazu sagen, dass ich bei meinen stundenlangen Aufenthalten bei einem Elektronik-Händler mit umfangreichem Buchangebot (den gibt es nicht mehr; war am Nollendorfplatz) mehr Englisch gelernt habe, als in meinen bis dahin rund 4 Jahren Englisch-Unterricht (wenn ich auch zugeben muss, dass der Unterricht geholfen hat :-) ). Das ist also, für einen fähigen Kopf, kein grundsätzliches Hindernis; nur ein zeitliches. Viel Erfolg.
Lothar M. schrieb: > Es ist sicher kein C++, sondern es verwendet ein überschaubares > Subset der simpelsten C++ Komponenten. Smile, ich mag mich darüber ganz sicher NICHT streiten, da ich selbst keine Arduino Software verwende. Aber ist es nicht so, dass ich selbst für den simpelsten Subset von C++ eben doch einen C++ Compiler benötige (und es eben deshalb doch C++ ist)? Wie dem auch sei: Man sollte schon wissen wie eine Bibliothek aufgebaut ist (und im Falle von Arduino ist das wirklich sehr sehr "übersichtlich"). Der Threadersteller sollte sich zuvorderst Gedanken darüber machen, was Register sind (ich meine hiermit nicht die Prozessorregister). Jede Hardware (egal ob intern oder extern) verwendet zur Steuerung und zum Funktionieren Register (das war bspw. schon bei einem uralten 82C55 I/O Baustein so). Ein Register bestimmt, wie ein Baustein betrieben werden soll, das Hardwareinterface bestimmt, wie ich Zugriff auf Register bekomme. Sei es per UART, SPI, I2C, CAN oder eben auch parallel. Wenn ich also begriffen habe, wie ich ein bestimmtes Register einer bestimmten Funktionseinheit beschreiben kann und ich dann auch noch weiß was dieses Register bestimmt... ist es ein kleiner Schritt zu einer Bibliothek. Egal ob das jetzt C oder C++ (oder welche Sprache auch immer) ist
Mit nur Deutsch bist du bei dieser Technologie ganz falsch. Bei einer konsequenten Weigerung sich in das Englische einzuarbeiten sehe ich keinen laengeren Weg mehr. Es mag Berufe geben, wo man ohne Englisch durchkommt. zB Foerster, Metzger, Zuhaelter, usw. Aber eher keine mit moderner Elektronik Technologie. Auf der anderen Seite, sei froh ist diese Technologie in Englisch. In nicht allzu ferner Zeit koennten neue Technologien in chinesisch sein.
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.