Forum: Mikrocontroller und Digitale Elektronik Arduino LCD Befehle


von Jens J. (trial)


Lesenswert?

In den Unterlagen und Links die wir im Unterricht bekommen haben heißt 
es das man das Display mit LCD_CONFIG(1,1,1); so konfiguriert das es an 
ist, der Cursor an ist und er blinkt.

Was mir in den zur Verfügung gestellten Unterlagen fehlt ist eine 
Erklärung warum das so ist. In einer Frage wird nämlich gefragt was man 
tun muss um den Cursor nicht blinken zu lassen und ihn als Unterstrich 
darzustellen. Ich vermute zwar das man die letzte 1 durch eine Null 
ersetzen muss doch ob und wie man seine Form verändert....?!

Laut http://sprut.de/electronic/lcd/index.htm#befehle braucht es einiges 
mehr um das Display zu steuern.

Ist der Arduino nun so stark beschnitten das er nur Display an/aus Und 
Cursor an/aus und blinken kann? Oder ist es grade sein Vorteil das man 
an anderen Einstellungen nichts drehen kann?

Wenn ich mir jetzt einen Arduino kaufe und ein Display dazu.
Wo finde ich dann die Befehle die der Arduino versteht und entsprechend 
dessen umwandelt was das Display versteht?

Die Befehlslisten die ich im netz finde sind frei von LCD Befehlen.
Und woher weiß ich was ich alles oben als #DEFINE scheiben muss?

: Bearbeitet durch User
von Karl M. (Gast)


Lesenswert?

Hallo Jens N.,

was nun dein spezielles LCD kann, hängt genau von diesem ab und ist in 
seinem Datenblatt beschrieben.

Der Arduino ist kein etwas, sondern nur eine IDE.

Programmieren muss man schon selbst, und das anhand der vorliegenden 
Datenblätter.

Wenn Du die Seite http://sprut.de/electronic/lcd/index.htm#controller 
schon kennst, dann schau mal beim Urvater der Controllerchip HD44780.

Dieser ist meistens die Grundlage Neuentwicklungen, muss aber nicht!

Mehr Infos zu den Grundlagen?

https://www.sparkfun.com/datasheets/LCD/HD44780.pdf
https://en.wikipedia.org/wiki/Hitachi_HD44780_LCD_controller

von Karl M. (Gast)


Lesenswert?

Nachtrag,

da gibt es so eine "komische" Webseite

https://www.arduino.cc/en/Tutorial/LiquidCrystalDisplay

die beschreibt das zugrunde liegende Framework.

Wenn man dies verwenden will, und nicht einfach den avr-gcc mit der libc 
2.0 nutzt, dann muss man halt alles dort lesen und verstehen.

von Wolfgang (Gast)


Lesenswert?

Jens N. schrieb:
> In den Unterlagen und Links die wir im Unterricht bekommen haben heißt
> es das man das Display mit LCD_CONFIG(1,1,1); so konfiguriert das es an
> ist, der Cursor an ist und er blinkt.
>
> Was mir in den zur Verfügung gestellten Unterlagen fehlt ist eine
> Erklärung warum das so ist.

Das einfachste wird sein, wenn du dir den Quellcode dazu ansiehst und 
das Datenblatt com LCD-Controller dazu nimmst.

von Jens J. (trial)


Lesenswert?

Karl M. schrieb:

> Programmieren muss man schon selbst, und das anhand der vorliegenden
> Datenblätter.
>

Arduino hat doch seine eigenen Befehle die das Handling mit ihm als 
Mikrocontroller erleichtern. Und darum geht es mir ja.
Anstatt das ich nun jedesmal einen Befehl schicken muss der dem Display 
sagt das jetzt geschrieben wird, das jetzt daten kommen und die Daten an 
sich, geht das bei Arduino ja sehr viel einfacher.

Und eben diese speziellen Arduino Befehle müssen doch irgendwo stehen, 
außer in Tutorials von Leuten die sie schon gefunden haben.

von Jens J. (trial)


Lesenswert?

Wolfgang schrieb:

>
> Das einfachste wird sein, wenn du dir den Quellcode dazu ansiehst und
> das Datenblatt com LCD-Controller dazu nimmst.

Wo finde ich diesen Quellcode? Also ich kann mir denken was du meinst. 
Das wo steht was rausgeht wenn man z.b. LCD_CONFIG(1,1,1); als Befehl 
abschickt.

von Wolfgang (Gast)


Lesenswert?

Jens N. schrieb:
> Arduino hat doch seine eigenen Befehle die das Handling mit ihm als
> Mikrocontroller erleichtern.

Du siehst, so viel einfacher wird es nicht.

Bei Arduino hast du schon geguckt?
https://www.arduino.cc/en/Reference/LiquidCrystal

von Jens J. (trial)


Lesenswert?

Karl M. schrieb:

>
> Wenn man dies verwenden will, und nicht einfach den avr-gcc mit der libc
> 2.0 nutzt, dann muss man halt alles dort lesen und verstehen.

libc 2.0 ?

von Karl M. (Gast)


Lesenswert?

Jens N. schrieb:
> Karl M. schrieb:
>
>>
>> Wenn man dies verwenden will, und nicht einfach den avr-gcc mit der libc
>> 2.0 nutzt, dann muss man halt alles dort lesen und verstehen.
>
> libc 2.0 ?

Ja der erste Hit bei Google - die Welt ist doch so einfach:

http://nongnu.org/avr-libc/user-manual/

von Jens J. (trial)


Lesenswert?

Karl M. schrieb:
> Jens N. schrieb:
>> Karl M. schrieb:
>>
>>>
>>> Wenn man dies verwenden will, und nicht einfach den avr-gcc mit der libc
>>> 2.0 nutzt, dann muss man halt alles dort lesen und verstehen.
>>
>> libc 2.0 ?
>
> Ja der erste Hit bei Google - die Welt ist doch so einfach:
>
> http://nongnu.org/avr-libc/user-manual/


Ich verstehe gar nicht was du mir damit sagen willst. Die Seite ist 
scheinbar eine Hilfeseite für AVR Mikrocontroller. Lesen und verstehen 
muss ich doch da auch.

von Jens J. (trial)


Lesenswert?

Wolfgang schrieb:
> Jens N. schrieb:
>> Arduino hat doch seine eigenen Befehle die das Handling mit ihm als
>> Mikrocontroller erleichtern.
>
> Du siehst, so viel einfacher wird es nicht.
>
> Bei Arduino hast du schon geguckt?
> https://www.arduino.cc/en/Reference/LiquidCrystal

danke, wird mir für die Zukunft sicher nützlich ein. Gibt dort 
tatsächlich allerhand Befehle für das LCD. Nur finde ich keinen der 
Cursor und Display vereint. wo also kommt dieses LCD_CONFIG her?

von Einer K. (Gast)


Lesenswert?

Jens N. schrieb:
> wo also kommt dieses LCD_CONFIG her?

Ich bin in Sachen Arduino sowas wie eine eingewiesene Person mit 
fundiertem Halbwissen.
Aber das Ding habe ich noch nie gesehen.

Du hast es angeschleppt...
Wirst dann ja wohl wissen, wo es her kommt....


Nach Arduino LCD Gedöns, sieht es auf jeden Fall erstmal nicht aus.
Irgendeine Eigenkreation?

von void (Gast)


Lesenswert?

Um das lesen und verstehen wirst du in keinem Fall herumkommen.

Die Frage ist jedoch was du lesen und verstehen musst. Und da wurde 
dir bisher nicht so richtig bei geholfen das herauszufinden.


> http://nongnu.org/avr-libc/user-manual/

Das ist die Implementierung der C Lib der gcc Kompiler-Variante für AVR 
µC. Das hat garnichts mit Displays und damit auch nicht mit deiner Frage 
zu tun.


> https://www.arduino.cc/en/Tutorial/LiquidCrystalDisplay

Das ist die LiquidCrystal Lib zur Verwendung mit Arduino um bestimmte 
Displays (HD44780 kompatible) anzusteuern. Schon nicht schlecht.
Kurz mal reingelesen und einen Click weiter schon weisst du, wie das 
Blinken der Cursors ein/ausgeschaltet wird.

https://www.arduino.cc/en/Tutorial/LiquidCrystalBlink
1
  // Turn off the blinking cursor:
2
  lcd.noBlink();
3
  delay(3000);
4
  // Turn on the blinking cursor:
5
  lcd.blink();

Leider passt das garnicht zu dem was du schriebst:
>(...)das man das Display mit LCD_CONFIG(1,1,1); so konfiguriert

Und das liegt wohl einfach daran, dass du garnicht die Arduino 
LiquidCrystal lib benutzt, sondern eine anderen Treiber für das Display.
Welcher Treiber für das dir vorliegende LCD verwendet wird findest du 
also am besten mal in deinen Schul-Unterlagen heraus!

von void (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Nach Arduino LCD Gedöns, sieht es auf jeden Fall erstmal nicht aus.
> Irgendeine Eigenkreation?

Dem stimme ich zu.

von Wolfgang (Gast)


Lesenswert?

Jens N. schrieb:
> wo also kommt dieses LCD_CONFIG her?

Du solltest doch wissen, was du alles in deinem Programm eingebunden 
hast.

von Manfred (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Ich bin in Sachen Arduino sowas wie eine eingewiesene Person mit
> fundiertem Halbwissen.
> Aber das Ding habe ich noch nie gesehen.

Grins ... ich auch nicht. Von Haus aus kann Arduino gar kein LCD, dazu 
muß eine Library wie LiquidCrystal.h eingebunden werden.

Die zulässigen Aufrufe ergeben sich aus dieser. Ich habe hier die 
Standard-Chinesen 1602 und 2004 im Betrieb, ohne nennenswert drüber 
nachdenken zu müssen. Klar, im Gegensatz zum PC-Monitor muß man Zeile 
und Position selbst verwalten, aber das habe ich nach einer Weile 
Spielerei herausbekommen.

von Jens J. (trial)


Lesenswert?

Arduino Fanboy D. schrieb:
> Jens N. schrieb:
>> wo also kommt dieses LCD_CONFIG her?
>
> Ich bin in Sachen Arduino sowas wie eine eingewiesene Person mit
> fundiertem Halbwissen.
> Aber das Ding habe ich noch nie gesehen.
>
> Du hast es angeschleppt...
> Wirst dann ja wohl wissen, wo es her kommt....
>
>
> Nach Arduino LCD Gedöns, sieht es auf jeden Fall erstmal nicht aus.
> Irgendeine Eigenkreation?

Mir fällt jetzt erst auf das da eine lcd_hd44780.h eingebettet wurde. 
Scheint also tatsächlich nichts mit Arduino zutun zu haben. Was ich 
eigentlich ziemlich frech finde da wir das im Rahmen unserer Arduino 
Anfänge bekommen haben. Scheint als hätte unser Lehrer auch nicht so den 
Plan von dem was er da tut.

von Wolfgang (Gast)


Lesenswert?

Jens N. schrieb:
> Scheint also tatsächlich nichts mit Arduino zutun zu haben. Was ich
> eigentlich ziemlich frech finde da wir das im Rahmen unserer Arduino
> Anfänge bekommen haben.

Es gibt hunderte von Bibliotheken für Arduino. Deine scheint auch eine 
davon zu sein. Was findest du daran genau frech?
Wenn du dort mal rein guckst, entdeckst du vielleicht dein LCD_CONFIG().

von Stefan F. (Gast)


Lesenswert?

Jens N. schrieb:
> Scheint als hätte unser Lehrer auch nicht so den
> Plan von dem was er da tut.

Arduino ist eine Entwicklungumgebung, die auf der Programmiersprache c++ 
aufbaut. Bei C++ ist es durchaus üblich, den Funktionsumfang durch das 
Einbinden von Libraries zu erweitern. Dieses Vorgehensweise wird Dir in 
Zukunft noch bei vielen anderen Programmiersprachen begegnen.

Insofern finde ich die Vorgehensweise Sinnvoll.

von Jens J. (trial)


Lesenswert?

Stefanus F. schrieb:
> Jens N. schrieb:
>> Scheint als hätte unser Lehrer auch nicht so den
>> Plan von dem was er da tut.
>
> Arduino ist eine Entwicklungumgebung, die auf der Programmiersprache c++
> aufbaut. Bei C++ ist es durchaus üblich, den Funktionsumfang durch das
> Einbinden von Libraries zu erweitern. Dieses Vorgehensweise wird Dir in
> Zukunft noch bei vielen anderen Programmiersprachen begegnen.
>
> Insofern finde ich die Vorgehensweise Sinnvoll.


Bisher ging ich davon aus das eine IDE das Programm ist welches das 
programmieren ermöglicht.

Arduino ist für mich eine marke die Mikrocontroller Endverbraucher 
freundlich verbaut und einen C Dialekt entwickelt hat, sodass dem 
Unerfahrenen das programmieren leichter von der Hand geht.

von Kreuzwort Rätsel (Gast)


Lesenswert?

Jens N. schrieb:
> Arduino ist für mich eine marke die Mikrocontroller Endverbraucher
> freundlich verbaut und einen C Dialekt entwickelt hat, sodass dem
> Unerfahrenen das programmieren leichter von der Hand geht.

So so, eine Marke mit einem C Dialekt  ....

Du wirst noch einiges lernen müssen. Aber ich werde es dir nicht
erklären.

von Jens J. (trial)


Lesenswert?

Kreuzwort Rätsel schrieb:
> Jens N. schrieb:
>> Arduino ist für mich eine marke die Mikrocontroller Endverbraucher
>> freundlich verbaut und einen C Dialekt entwickelt hat, sodass dem
>> Unerfahrenen das programmieren leichter von der Hand geht.
>
> So so, eine Marke mit einem C Dialekt  ....
>
> Du wirst noch einiges lernen müssen. Aber ich werde es dir nicht
> erklären.

Welchen Vorteil soll Arduino sonst haben wenn nicht der leichtere 
Zugang?

von Einer K. (Gast)


Lesenswert?

Jens N. schrieb:
> und einen C Dialekt entwickelt hat

Nöö...
Ein paar Komfort Funktionen und Klassen.
In C und C++ geschrieben.
Mit ein klein wenig Assembler garniert.

*.ino Dateien sind immer C++

von Kreuzwort Rätsel (Gast)


Lesenswert?

Jens N. schrieb:
> Welchen Vorteil soll Arduino sonst haben wenn nicht der leichtere
> Zugang?

-- Kopfschüttel --

Kenner auf uC.net wissen wohin sich solch ein Thread entwickelt.

von Jens J. (trial)


Lesenswert?

Wolfgang schrieb:
> Jens N. schrieb:
>> Scheint also tatsächlich nichts mit Arduino zutun zu haben. Was ich
>> eigentlich ziemlich frech finde da wir das im Rahmen unserer Arduino
>> Anfänge bekommen haben.
>
> Es gibt hunderte von Bibliotheken für Arduino. Deine scheint auch eine
> davon zu sein. Was findest du daran genau frech?
> Wenn du dort mal rein guckst, entdeckst du vielleicht dein LCD_CONFIG().

Anscheinend gibt es für die gleiche Sache verschiedene Bibliotheken. Ich 
ging davon aus das man Anfangs dann doch erstmal die nimmt, die direkt 
von Arduino bereit gestellt wurden.

langsam dämmert es mir allerdings das da wohl jeder seinen Teil 
beisteuern kann.

von Jens J. (trial)


Lesenswert?

Kreuzwort Rätsel schrieb:
> Jens N. schrieb:
>> Welchen Vorteil soll Arduino sonst haben wenn nicht der leichtere
>> Zugang?
>
> -- Kopfschüttel --
>
> Kenner auf uC.net wissen wohin sich solch ein Thread entwickelt.

Laut der C´t Make: Arduino Spezial 2/2017 ist der Arduino MIT seiner 
leicht verständlichen Entwicklungsumgebung ursprünglich für IT ferne 
Anwender entwickelt wurden.

von Jens J. (trial)


Lesenswert?

void schrieb:
> Um das lesen und verstehen wirst du in keinem Fall herumkommen.
>
> Die Frage ist jedoch was du lesen und verstehen musst. Und da wurde
> dir bisher nicht so richtig bei geholfen das herauszufinden.
>
>
>> http://nongnu.org/avr-libc/user-manual/
>
> Das ist die Implementierung der C Lib der gcc Kompiler-Variante für AVR
> µC. Das hat garnichts mit Displays und damit auch nicht mit deiner Frage
> zu tun.
>

Kannst du mir das mal bitte so erklären als wenn du es deiner Oma 
erklären würdest? Ich kann da nichtmal eine Frage zu formulieren.

: Bearbeitet durch User
von Kreuzwort Rätsel (Gast)


Lesenswert?

Kreuzwort Rätsel schrieb:
> Kenner auf uC.net wissen wohin sich solch ein Thread entwickelt.

-- Ohne weitere Worte --

von leo (Gast)


Lesenswert?

Jens N. schrieb:
> Anscheinend gibt es für die gleiche Sache verschiedene Bibliotheken.

Für den "Arduino" gibt es nur ein LCD.
s. deine Unterlagen aus dem Jahre 2002.

SCNR,
leo

von Jens J. (trial)


Lesenswert?

Denke das mir dieser Thread hier einiges gebracht hat. Danke dafür.

Zuletzt nur noch eins: Woher bekomme ich die Info was ich alles als 
#define zur Initialisierung schreiben muss. Aus dem Datenblatt 
jedenfalls nicht. Oder ist das garnicht nöt?

von Joachim B. (jar)


Lesenswert?

Jens N. schrieb:
> Kannst du mir das mal bitte so erklären als wenn du es deiner Oma
> erklären würdest? Ich kann da nichtmal eine Frage zu formulieren.

Arduino und IDE ist eine Kuchenform, muss nur noch der Teig rein, den 
machst du aus dem mitgelieferten Rezeptheft.
Dummerweise denken manche andere Rezepte sind besser und wollen einen 
anderen Teig, da funktioniert die Anleitung aus deinem Rezeptheft nicht, 
man muss schon in das andere Rezept schauen.

von void (Gast)


Lesenswert?

Perfekt Joachim B. - Hätte ich meiner Oma nicht schöner sagen können.

von Wolfgang (Gast)


Lesenswert?

leo schrieb:
> Für den "Arduino" gibt es nur ein LCD.
> s. deine Unterlagen aus dem Jahre 2002.

Du meinst vermutlich "von Arduino ..."

von leo (Gast)


Lesenswert?

Wolfgang schrieb:
> leo schrieb:
>> Für den "Arduino" gibt es nur ein LCD.
>> s. deine Unterlagen aus dem Jahre 2002.
>
> Du meinst vermutlich "von Arduino ..."

Nope.
leo

von Jens J. (trial)


Lesenswert?

Joachim B. schrieb:
> Jens N. schrieb:
>> Kannst du mir das mal bitte so erklären als wenn du es deiner Oma
>> erklären würdest? Ich kann da nichtmal eine Frage zu formulieren.
>
> Arduino und IDE ist eine Kuchenform, muss nur noch der Teig rein, den
> machst du aus dem mitgelieferten Rezeptheft.
> Dummerweise denken manche andere Rezepte sind besser und wollen einen
> anderen Teig, da funktioniert die Anleitung aus deinem Rezeptheft nicht,
> man muss schon in das andere Rezept schauen.

Ist die Libary nun das Rezept und der GCC eine andere Kuchenform?

Oder anders: Was bringt mir die Libary und was ist ein GCC Kompiler?

von Karl M. (Gast)


Lesenswert?

Das geht schon in Richtung "Popkorn" und "Beine hochlegen", oder geht 
nur mir das so?

von void (Gast)


Lesenswert?

Jens N. schrieb:
> Zuletzt nur noch eins: Woher bekomme ich die Info was ich alles als
> #define zur Initialisierung schreiben muss.

Lies deine Unterlagen und schau halt einfach mal in die Datei rein was 
da drin steht. Ich wette da gibt es entsprechende Kommentare.
-> lcd_hd44780.h (und vermutlich auch lcd_hd44780.c)


Jens N. schrieb:
>Was bringt mir die Libary

Nichts, denn du verwendest die LiquidCrystal Lib garnicht. Das ist der 
Punkt. Du verwendest etwas anderes. Dann musst du auch die Doku 
(Quelltext/Kommentare) zu dem anderen lesen.


> und was ist ein GCC Kompiler?

Ein Kompiler for C und C++ (unter anderem).
https://de.wikipedia.org/wiki/GNU_Compiler_Collection

von void (Gast)


Lesenswert?

Karl M. schrieb:
> Das geht schon in Richtung "Popkorn"

Ich habe Chips und Cola. Aber ja, in die Richtung geht es. Leider.

von Manfred (Gast)


Lesenswert?

Jens N. schrieb:
> Bisher ging ich davon aus das eine IDE das Programm ist welches das
> programmieren ermöglicht.
>
> Arduino ist für mich eine marke die Mikrocontroller Endverbraucher
> freundlich verbaut und einen C Dialekt entwickelt hat, sodass dem
> Unerfahrenen das programmieren leichter von der Hand geht.

Jens N. schrieb:
> Welchen Vorteil soll Arduino sonst haben wenn nicht der leichtere Zugang?

Bitte lese Deine Texte etwas sorgfältiger, bevor Du diese absendest, 
Dein Deutschlehrer hätte da wohl so einige rote Anmerkungen.

--------

Du vermutest vollkommen richtig: Arduino soll Leuten einen einfachen 
Zugang zu Mikrocontrollern ermöglichen.

Durch den ab Werk installierten Bootloader kann man Programme per USB 
aufspielen, ohne einen speziellen Programmieradapter anschaffen zu 
müssen.

Aber: Unter der Arduino-IDE versteckt sich ein ganz normaler Compiler 
(GCC), wie er auch in komerziellen Umgebungen Verwendung findet. Auch 
hier nimmt Dir Arduino aber Aufwand ab, den Compiler mit Makefiles .. 
erst aufwendig einrichten zu müssen.

Nochmal aber: Arduino nutzt die weit verbreitete Sprache C++, das ist 
keine eigene Marke !

Wer will (und kann), kann mit der Arduino-IDE auch Programme 
compilieren, die in 'klassischem C++' erzeugt wurden.

Ich finde Arduino gut und habe damit schon ernsthafte Geräte zur 
Funktion bekommen. Wie stefanus schrieb, ist das Einbinden von Libraries 
üblich / sinnvoll und damit auch in der Arduino-IDE nicht zu vermeiden.

Schaue es Dir an, evtl. stellst Du den Programmcode (Forumsregeln 
lesen!) hier rein, dann bekommst Hilfe zu Details.

Jens N. schrieb:
> Ist die Libary nun das Rezept und der GCC eine andere Kuchenform?

Oh oh ... das wird jetzt gefährlich.

Karl M. schrieb:
> Das geht schon in Richtung "Popkorn" und "Beine hochlegen", oder geht
> nur mir das so?

Das zeigt einen komplett ahnungsfreien Anfänger, der es ganz sicher 
nicht böse meint. Versuche bitte, Dich zurück zu halten, hier gibt es 
ein paar geduldigere Leute, die positv drauf eingehen.

Hätte es dieses Forum vor 40 Jahren schon gegeben, weiß ich nicht, ob 
ich nicht ähnlich unbeholfene Fragen gestellt hätte.

von Karl M. (Gast)


Lesenswert?

Hallo Manfred,

ich fühle mich durch die doch einfach selbst zu organisierenden 
Antworten, veralbert.

Als ich anfing, musste ich noch z.B. bei Ti in den USA anrufen und mich 
mit einem entwicklungs ING. gut stellen, um dann nach Wochen endlich 
eine 1000 Seite Datenbuch auf 40 Gramm Papier zu gesendet zu bekommen.

Da war noch Zeit, um sich selbst Informationen aus Papier zusammen zu 
tragen.

Es scheint mir so, dass einige selbst mit dem Wissen aus dem Inet nicht 
zurecht kommen.

von Jens J. (trial)


Lesenswert?

Rechtschreibung war schon immer ein Problem. Ich kann noch so lange 
gucken, ich finde viele Fehler nicht. Oder weiß garnicht das es einer 
ist.

Die Libary bei der ich vorhin fragte wozu sie ist, ist diese hier: 
http://nongnu.org/avr-libc/user-manual/

Ich denke mir jetzt aber das diese wohl dafür gedacht ist, AVR 
Mikrocontroller in normalen c/c++ Compilern zu programmieren.

Ich denke das die Kompetenz sich Wissen anzueignen, ohne jemanden zu 
fragen, ohne schöne Schritt für Schritt Erklärung. Eine Fähigkeit ist an 
der ich arbeiten sollte. Das sehe ich ja ein.

Ich weiß nur nicht wie ich das machen soll da mir ja auch die Zeit davon 
rennt.

---

Danke jedenfalls an die geduldigen.

Nachtrag:

Mit Marke meinte ich nicht die Sprache sondern Arduino an sich. Und das 
ich so Sachen schreiben kann wie: "Pinmode()" ist doch aber Arduino 
spezifisch, nicht?

: Bearbeitet durch User
von Manfred (Gast)


Lesenswert?

Karl M. schrieb:
> ich fühle mich durch die doch einfach selbst zu organisierenden
> Antworten, veralbert.

Ich widerspreche Dir nicht, selbstständig arbeiten und Lösungskompetenz 
kommen aus der Mode.

> Als ich anfing, musste ich noch z.B. bei Ti in den USA anrufen

Wem erzählst Du das? Begonnen habe ich mit einem cbm3032 in Basic, dann 
Line-by-Line per Assembler geklempnert. Irgendwann bekam ich einen 
Makroassembler in die Finger, da war ich garnicht mehr zu bremsen.

1987 habe ich eine zweiseitige Europakarte mit 6502 - 6522 - 6232 und 
akkugestütztem RAM mit Brady-Band von Hand geklebt. Für teuer Geld wurde 
ein InCircuitEmulator für den 6502 angeschafft, oh man, wieviele Stunden 
habe ich damit Fehler gejagt :-)

Ein paar Jahre später kam eine etwa Zigarettenschachtelgroße Platine mit 
68HC805 und achtstelligem LED-Textdisplay drauf, mein damaliger Arduino 
für allen möglichen Kleinkram in der Prüftechnik.

In den USA anrufen brauchte ich nicht, Datenbücher in Papierform konnte 
ich vom deutschen Vertreter abbetteln.

Ja, ich habe mich gefreut, nach mehreren Tagen einen Schalter abfragen 
zu können und damit eine LED ein- / ausschalten zu können.

Aber, wenn wir mal ehrlich sind: Was wäre gewesen, wenn wir damals schon 
ein Forum gehabt hätten, wo wir fragen können?

Ich habe viele Jahre nichts mehr gemacht, keinerlei Ahnung von 
Hochsprachen und mir dann 2015 einen China-Uno gekauft. Ich war 
beeindruckt, wie schnell und einfach ich da zu einfachen Grundfunktionen 
gekommen bin. Ich darf aber nicht ignorieren, dass mir da Grundlagen 
eines Prozessors und der umgebenden Schaltungstechnik vertraut waren.

Sei es so, wie geht man mit den Totalanfängern im Forum um?

Erinnere ich mich an Praktikanten und Lehrlinge, die hatte ich 8 Stunden 
pro Tag direkt hinter mir sitzend in der Werkstatt, da konne man im 
direkten Dialog besser drauf eingehen und auch mal schütteln, wenn es zu 
bunt wurde.

von W.A. (Gast)


Lesenswert?

Jens N. schrieb:
> Und das ich so Sachen schreiben kann wie: "Pinmode()" ist doch aber
> Arduino spezifisch, nicht?

Nein, in jeder Programmierumgebung kannst du eine Library verwenden, die 
eine Funktion wie Pinmode() zur Verfügung stellt. Wenn niemand diese 
Library geschrieben hat, musst du es selbst tun. Bei Arduino hat es 
jemand für dich getan.
In der Arduino-IDE bekommst du allerdings dein Hauptprogramm 
normalerweise nie zu sehen, sondern stellst manchmal oft nur die beiden 
Grundfunktionen setup() und loop() zur Verfügung. Der Rest passiert im 
Hintergrund und wird vor dem Nutzer verborgen.

von Markus (Gast)


Lesenswert?

Warum schaut eigentlich keiner in GitHub:
https://github.com/arduino-libraries/LiquidCrystal/tree/master/src

von Einer K. (Gast)


Lesenswert?

Markus schrieb:
> Warum schaut eigentlich keiner in GitHub:
> https://github.com/arduino-libraries/LiquidCrystal/tree/master/src

Oha...
Interessante Anmache!

Da bleibt nur eine Frage offen:
Was hat das mit der Frage zu tun?
Alternativ: Was hilft dem TO das?

von Stefan F. (Gast)


Lesenswert?

Jens N. schrieb:
> Bisher ging ich davon aus das eine IDE das Programm ist welches das
> programmieren ermöglicht.

Zum "ermöglichen" gehört die gesamte Arbeitsumgebung, im Wesentlichen:

- Ein Text-Editor, um den Quelltext zu schreiben
- Ein C++ Compiler, um den Quelltext in Maschinencode zu übersetzen
- Ein Programmieradapter+Software, um den Maschinencode in den 
Mikrocontroller zu übertragen

Als Texteditor kommt im einfachsten Fall Notepad in frage. Wenn du 
willst, aknnst du auch Word benutzen - das ist dem Compiler egal. 
Hauptsache ist, dass du die C++ Dateien im Plain-Text Format speicherst.

Als C++ Compiler kommt in deinem Fall der avr-gcc zum Einsatz, der mit 
einer abgespeckten Variante der Standard-C Library daher kommt. Diese 
Library enthält nützliche Funktionen wie atoi() und sprintf().

Darüber hinaus wird der avr-gcc zusammen mit einigen AVR Spezifischen C 
Libraries geliefert.

Arduino stellt dazu weitere C++ Objekte (z.B. Wire und Serial) bereit 
und definiert eine Hand voll Standard C Funktionen, um einfache Dinge 
unabhängig vom konkreten Mikrocontroller Modell programmieren zu können. 
Zum Beispiel: millis(), pinMode(), digitalWrite(), analogRead()

Um Fehler zu untersuchen kann es sehr hilfreich sein, entweder einen 
Debugger oder ein serielles Terminal Programm mit dem µC zu verbinden. 
Damit kann man den Programmablauf beobachten und den Inhalt von 
Variablen anzeigen. Bei Arduino hat man sich für die billigere Variante 
mit dem seriellen Terminal entschieden. Wohl auch, weil die ersten 
verwendeten AVR Controller gar keine Debugger Schnittstelle hatten.

Um diese zahlreichen Software Komponenten Anfängerfreundlich zu bündeln, 
wurde die Arduino IDE erstellt. Man kann Arduino auch ohne die IDE 
nutzen, dann bewegt man sich im Konsolen-Fenster (Eingabeaufforderung) 
und sieht all die vielen Einzelkomponenten vor sich.

Zusammen mit der IDE haben die Erfinder sich auch einige 
anfängerfreundliche Boards ausgedacht, wo der Mikrocontroller zusammen 
mit einem USB Adapter und einem Spannungsregler zusammen gebracht wird. 
Damit kann man ohne Lötkolben und Elektronik Kenntnisse direkt los 
programmieren.

> Arduino ist für mich eine Marke die Mikrocontroller Endverbraucher
> freundlich verbaut

Ja

> und einen C Dialekt entwickelt hat, sodass dem
> Unerfahrenen das programmieren leichter von der Hand geht.

Nein. Bei Arduino wird ein ganz gewöhnlicher vollwertiger C/C++ Compiler 
verwendet. Es ist der selbe Compiler, der auch im Atmel Studio enthalten 
ist. Er wird auch für die Entwicklung von Linux, ARM basierte 
Mikrocontroller (auch Android) und für einige Windows Programme 
verwendet.

Was sie entwickelt haben, sind eine Hand voll C Funktionen und C++ 
Klassen, welche die Hardware abstrahieren. Sie haben ihre Anleitung auf 
möglichst wenig Text reduziert und viele verzichtbare Spach-Features weg 
gelassen.

Das bringt in der Tat eine erhebliche Erleichterung für Anfänger.

Fortgeschrittene Programmierer ärgern sich allerdings häufig über 
langsame Ausführung und beschränkten Funktionsumfang. Man kann die 
Hardware ohne Nutzung der Arduino Funktionen/Klassen wesentlich besser 
ausnutzen. Ist dann halt auch komplexer.

Das schöne ist: Arduino hindert niemanden daran, fort zu schreiten.

Hier im Forum ärgern sich einige Leute darüber, dass Arduino zu der Idee 
verleitet "Ich stecke mal was zusammen, klicke ein bisschen, und dann 
weiß das Ding schon, was ich ich wollte". Diese Leute reagieren 
teilweise frustriert, wenn sie erfahren, dass man doch lernen muss und 
merken, dass die einfache Arduino Fassade mehr ein Lockmittel war, als 
der Stand der Technik.

Andererseits hat dieses System viele Menschen dazu gebracht, sich mit 
dem Thema überhaupt auseinander zu setzen. Noch nie war der Einstieg in 
die Computertechnik so einfach und billig, wie heute.

von Joachim B. (jar)


Lesenswert?

Jens N. schrieb:
> Ist die Libary nun das Rezept und der GCC eine andere Kuchenform?
>
> Oder anders: Was bringt mir die Libary und was ist ein GCC Kompiler?

die LIB ist das Rezept, die z.B. mit der Kuchenform mitgeliefert wird:
http://www.backformen-onlineshop.de/Backrezepte

Der GCC ist die Kuchenform, die muss natürlich passen, mit einer 
Kastenform ist es schwer runde Tortenböden zu backen auch wenn das 
Rezept passt.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Ich halte den Vergleich mit der Kuchenform für irreführend.

von Markus (Gast)


Lesenswert?

>Markus schrieb:
>> Warum schaut eigentlich keiner in GitHub:
>> https://github.com/arduino-libraries/LiquidCrystal/tree/master/src

>Oha...
>Interessante Anmache!

>Da bleibt nur eine Frage offen:
>Was hat das mit der Frage zu tun?
"Arduino LCD Befehle"?
Sind in der Header-Datei:
https://github.com/arduino-libraries/LiquidCrystal/blob/master/src/LiquidCrystal.h


>Alternativ: Was hilft dem TO das?
Er kann die Beispiele angucken:
https://github.com/arduino-libraries/LiquidCrystal/tree/master/examples
und die Kommentare im Code lesen:
https://github.com/arduino-libraries/LiquidCrystal/blob/master/src/LiquidCrystal.cpp

von Joachim B. (jar)


Lesenswert?

Stefanus F. schrieb:
> Ich halte den Vergleich mit der Kuchenform für irreführend.

das ist mir egal, machs besser oder schweige

von Peter D. (peda)


Lesenswert?

Jens N. schrieb:
> Was mir in den zur Verfügung gestellten Unterlagen fehlt ist eine
> Erklärung warum das so ist.

LCD_CONFIG scheint kein Standard zu sein, Google findet da nichts.
Das muß also ein spezielles Macro nur für Deine Lehrveranstaltungen 
sein, d.h. eine Erklärung sollte in Deinen Begleitunterlagen stehen. Du 
mußt also selber suchen, wo dieses Macro definiert und erläutert ist.

Es ist leider auch denkbar, daß die Unterlagen unvollständig sind und 
der Lehrer es nur mündlich erklärt hat.
Es wird zwar schnell mal was hinprogrammiert aber nur unwillig auch 
dokumentiert.

von leo (Gast)


Lesenswert?

Jens N. schrieb:
> Ich denke das die Kompetenz sich Wissen anzueignen, ohne jemanden zu
> fragen, ohne schöne Schritt für Schritt Erklärung. Eine Fähigkeit ist an
> der ich arbeiten sollte. Das sehe ich ja ein.

Sehr gute Erkenntnis, ja.

> ... Pinmode() ...

Guter Anfang:
1) Groß- u. Kleinschreibung ist (bei C/C++) nicht egal.
2) https://www.google.com/search?q=pinmode
  Erstes Ergebnis:
  pinMode() - Arduino Reference

Damit kannst du auch schon deine Frage beantworten.

leo

von Stefan F. (Gast)


Lesenswert?

Stefanus F. schrieb:
> Ich halte den Vergleich mit der Kuchenform für irreführend.

Joachim B. schrieb:
> das ist mir egal, machs besser oder schweige

Habe ich doch, lies meine Erklärung direkt darüber!

von Wolfgang (Gast)


Lesenswert?

Markus schrieb:
>>Da bleibt nur eine Frage offen:
>>Was hat das mit der Frage zu tun?
> "Arduino LCD Befehle"?
> Sind in der Header-Datei:
> 
https://github.com/arduino-libraries/LiquidCrystal/blob/master/src/LiquidCrystal.h

Dumm nur, dass das vom TO verwendete LCD_CONFIG() nichts mit der von dir 
verlinkten LCD-Bibliothek zu tun hat.

von Joachim B. (jar)


Lesenswert?

Stefanus F. schrieb:
> Habe ich doch, lies meine Erklärung direkt darüber!

verdammt viel Text, da geben schon viele vorher auf, erst Recht 
Anfänger, sonst OK.

Zur Erklärung für Oma finde ich deinen Text unpassend und meinen 
leichter, wenngleich ich einräume es nur rudimentär erklärt zu haben.

Wie du sicher weisst nicht alles was hinkt ist ein Vergleich und nicht 
alles ist leicht erklärbar, ich habe es wenigstens für Oma versucht, ich 
denke mit deiner eventuell besseren Erklärung würdest du bei Oma 
scheitern.

von Stefan F. (Gast)


Lesenswert?

Joachim B. schrieb:
> ich denke mit deiner eventuell besseren Erklärung
> würdest du bei Oma scheitern.

Meiner Oma würde ich sagen: Das verstehst du nicht.

Meinem Opa habe ich mal Erklärt was Programmieren ist. Der hat das auch 
verstanden, weil er früher mechanische Webstühle eingestellt hat. "Die 
Vorschrift eingeben" nannte er den Vorgang, den wir heute Programmieren 
nennen. Was bei uns heute Flash Speicher sind, war bei ihm ein großen 
Brett mit hunderten kleinen Hebeln.

von Markus (Gast)


Lesenswert?

>Meinem Opa habe ich mal Erklärt was Programmieren ist. Der hat das auch
>verstanden, weil er früher mechanische Webstühle eingestellt hat.

Haha, das passt. Im Buch von Eschbach
https://www.amazon.de/NSA-Nationales-Sicherheits-Amt-Andreas-Eschbach-ebook/dp/B07D18P88V
gibt's nur Frauen, die programmieren. Sie nennen sich dort 
"Programmstrickerinen".

von Volker S. (vloki)


Lesenswert?

Wolfgang schrieb:
> Dumm nur, dass das vom TO verwendete LCD_CONFIG() nichts mit der von dir
> verlinkten LCD-Bibliothek zu tun hat.

In einer normalen IDE würde man einfach die Steuerungstaste (oder so) 
drücken, auf LCD_CONFIG() klicken und schwups wäre man da.

Bei der Ardunio IDE bleibt evtl. nur die Suche nach dem Text 
"LCD_CONFIG()" in den Dateien auf dem Rechner. Also Suche mit 
Betriebssystem Mitteln, Dateimanage etc. (kenne mich mit Arduino aber 
nicht wirklich aus)

Da braucht man eigentlich kein Internet. Irgendwo auf dem Rechner muss 
es ja sein, sonst wüsste der Compiler auch nichts damit anzufangen und 
würde meckern.

Wenn man so oft genug gesucht hat, werden möglicherweise auch die 
Zusammenhänge klarer.

von Einer K. (Gast)


Lesenswert?

Volker S. schrieb:
> In einer normalen IDE würde man einfach die Steuerungstaste (oder so)
> drücken, auf LCD_CONFIG() klicken und schwups wäre man da.
>
> Bei der Ardunio IDE bleibt evtl. nur die Suche nach dem Text
> "LCD_CONFIG()" in den Dateien auf dem Rechner. Also Suche mit
> Betriebssystem Mitteln, Dateimanage etc. (kenne mich mit Arduino aber
> nicht wirklich aus)
>
> Da braucht man eigentlich kein Internet. Irgendwo auf dem Rechner muss
> es ja sein, sonst wüsste der Compiler auch nichts damit anzufangen und
> würde meckern.
>
> Wenn man so oft genug gesucht hat, werden möglicherweise auch die
> Zusammenhänge klarer.

Das haben wir alles schon geklärt...
(teilweise, auch mehrfach)

Das Kommando, oder was auch immer das sein soll, gibt es in der üblichen 
Arduino Welt nicht.
Darum kann ihm auch keiner direkt helfen.
Und er selber hat schon gefunden, in welcher Datei es steckt.
Es fehlen nur massiv Grundlagen, um das Gedöns zu verstehen.
Da ist jetzt Eigeninitiative angesagt... aber dafür fehlt dann wohl die 
Zeit.

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
Noch kein Account? Hier anmelden.