Programmiersprachen wie Java, C, PHP oder Python sind heutzutage nicht mehr wegzudenken. Was all diese Sprachen gemein haben und wie sie schließlich funktionieren, zeige ich dir im Video. Viel Spaß!
Danke an 'epidemicsound.com' für die tolle Musik! 🎶
Java, Python, C oder PHP. Das sind weder Inselgruppen, Schlangenarten oder einfach
zufällige Buchstabenkombinationen, sondern aktuell gängige Programmiersprachen. Was
diese allesamt gemein haben und wie sie schließlich funktionieren, zeige ich euch
heute in Zusammenarbeit mit Codino und der Programmierung eines Arduino Microcontrollers.
Viel Spaß! Im Gegensatz zu natürlichen Sprachen wie Deutsch, Englisch oder Chinesisch steht bei
den formalen Programmiersprachen nicht die Kommunikation im Vordergrund, sondern die
mathematische Beschreibung von Datenstrukturen und Algorithmen. Einfach gesagt Rechenvorschriften,
die der Computer ausführen soll. Wie bei den natürlichen Sprachen gibt es dabei einen
Zeichenvorrat, bekannt als das Alphabet, der zu Zeichenketten, also Worte, gemäß einer
bestimmten Syntax der Grammatik zusammengesetzt wird. Je nach Bedeutung der Zeichen als Semantik
bekannt, ergibt sich so ein gewisser Informationsgehalt der jeweiligen Sprache.
Während die Programmiersprachen sich vor allem in ihrer Syntax unterscheiden,
ist das Endergebnis oft dasselbe. So auch bei der Textausgabe Hallo Welt,
welche gerne als das grundlegende Programm beim Erlernen einer Programmiersprache genutzt wird.
Die Umsetzung sieht dabei in Java folgendermaßen aus, im CSO, im PHP sowie in Python.
Oder in Brainfuck. Kein Spaß, es gibt eine Programmiersprache namens Brainfuck,
die als sogenannte esoterische Programmiersprache mit nur 8 Zeichen
auskommt und ihrem Namen alle Ehre macht. Ungeachtet der enormen Vielfalt der
Programmiersprachen ist der grundlegende Aufbau aber doch sehr ähnlich. So enthalten
fast alle Programmiersprachen Ein- und Ausgabebefehle, die den Datenimport und
Export ermöglichen. Zudem ist meist die Deklaration von Variablen und Konstanten
möglich, um den Code übersichtlicher und leichter anpassbar zu machen.
Dabei ist auch die Angabe eines Datentyps notwendig. Integer steht zum Beispiel für
Ganzzahlen, Float für Gleitkommazahlen, also sowohl positive wie negative Zahlen
samt Nachkommastellen und String für Zeichenketten. Außerdem sind mathematische
Grundfunktionen sowie Funktionen, um die besagten Zeichenketten zu verarbeiten,
immer mit an Bord. Und auch die typischen Programmierstrukturen wie Schleifen,
mit denen man Codeabschnitte mehrmals durchlaufen kann, bedingte Anweisungen,
die Codeabschnitte nur unter bestimmten Voraussetzungen ablaufen lassen und Funktionen,
um Codeabschnitte wiederverwendbar zu machen, sind nicht wegzudenken. Möchte man die
Wiederverwendbarkeit der besagten Funktionen nochmals steigern, können diese zuletzt als
Bibliothek verpackt und anschließend bei anderen Projekten eingebunden werden.
Ist der Code einmal geschrieben, weiß der Computer zunächst nicht, was er damit anfangen soll. Je
abstrakter die Programmiersprache und damit verständlicher für den Menschen,
desto weiter entfernt ist sie damit auch von den Einsen und Nullen, die der Prozessor eines
Computers versteht. Aus diesem Grund muss der Quellcode in den sogenannten Maschinencode
übersetzt werden. Das passiert entweder mit einem Compiler, der den Quellcode als Ganzes übersetzt
und die neue Datei ausführt, oder mit einem Interpreter, der zur Laufzeit des Programms
den Quellcode nach und nach einliest, übersetzt und direkt ausführt.
Jetzt wisst ihr schon mal theoretisch, wie eine Programmiersprache funktioniert.
Wie das Ganze praktisch ausschaut, möchte ich euch jetzt anhand eines Arduino-Mikrocontrollers
zeigen, mit dessen Programmierung man die Grundzüge von C bzw. C++, einer der bedeutendsten
Programmiersprachen aktuell, kennenlernt. Codino hat mir dazu freundlicherweise ihr
Starter-Kit zugeschickt, das alles enthält, was wir dazu benötigen. Schauen wir doch einfach mal
rein. Neben einer netten Nachricht stoßen wir als erstes auf ein USB-Kabel, das wir zur
Stromversorgung und Datenübertragung des Mikrocontrollers benötigen, den wir hier
auch schon haben. Im Speziellen handelt es sich dabei um einen Arduino Uno Mikrocontroller,
der aus einem kleinen Prozessor besteht und zur leichteren Verwendung auf eine Leiterplatte mit
zahlreichen Anschlussmöglichkeiten platziert wurde. Hier eine Menge verschiedenfarbiger LEDs
und ein Steckbrett oder auch Breadboard genannt, auf dem wir alle Bauteile beliebig
miteinander verknüpfen können, ohne einen Lötkolben zu benötigen. Dann hier ein Bewegungsmelder,
Piezo-Lautsprecher, Potentiometer, also ein variabler Widerstand, sowie ein Temperatursensor.
Einige Kabel in verschiedenen Farben und Längen und noch einige Taster, also kleine Schalter,
die bei Knopfdruck Schaltkreise schließen. Zum Schluss ein Display sowie eine große
Variation an elektrischen Widerständen. Im beiliegenden Handbuch finden wir nun
zahlreiche Erläuterungen, vor allem aber Anleitungen zu 10 aufeinander aufbauenden
Projekten, wobei wir uns jetzt mit der Umsetzung einer LED-Ampelschaltung beschäftigen werden,
die ausführlich mit dem Aufbau der Schaltung, dem Coding sowie möglichen Erweiterungen beschrieben
ist. Beginnen wir beim Aufbau der Schaltung, wofür wir grundlegend den Mikrocontroller und
das Steckbrett benötigen. Die eigentliche Ampel stellen wir durch 3 LEDs dar, Grün,
Gelb und Rot. Dazu ein Taster, der signalisieren soll, dass ein Auto an der Ampel steht.
Nun verbinden wir zunächst die Plusleitung des Boards mit dem 5V-Powerpin des Mikrocontrollers
sowie die Minusleitung mit dem GND-Pin, der für Ground steht und den Stromkreis erdet.
Da jeweils die gesamte Plus- und Minusspalte des Boards verbunden ist, können wir uns von
nun an an beliebiger Spaltenposition an 5V oder GND bedienen. Als nächstes verbinden wir die
Pluspole der LEDs, die am längeren Draht erkennbar sind, jeweils mit einem beliebigen digitalen Pin
am Arduino, um sie später ansprechen zu können. Der Taster wird hingegen mit 5V verbunden. Wie
ihr seht, nutzen wir hierbei wiederum die Verbindung innerhalb einer Zeile des Steckbretts. Das,
was reingeht, muss wieder rausgehen, deshalb erden wir den Minuspole der LEDs jeweils mit
einem 220 Ohm Widerstand und verbinden den Ausgang des Tasters mit einem digitalen Pin,
um Schaltvorgänge erkennen zu können. Zusätzlich findet ein sogenannter Pull-Down-Widerstand mit
10.000 Ohm seinen Einsatz. Er dient dazu, dass je nach Schalterposition entweder definierte 5V
oder 0V am digitalen Pin vorzufinden sind. Und das war es dann auch schon mit dem Aufbau der
Schaltung. Kommen wir zur Programmierung des Mikrocontrollers. Nachdem wir die
Arduino-Entwicklungsumgebung heruntergeladen und installiert haben, kann es auch schon losgehen.
Zunächst definieren wir für jede verwendete LED eine Variable, die die Pinnummer enthält und
deshalb der Datentyp Integer ausreicht. Statt der leicht zu verwechselnden Pinnummer können wir von
nun an eine freibestimmbare Bezeichnung im Code verwenden. Genau so machen wir es auch für den
Taster sowie seinen momentanen Zustand. Warum, seht ihr gleich. Nach der Definition der Variablen
folgt die Funktion Void Setup. Void zeigt dabei an, dass die Funktion keine Daten zurückgibt
und Setup ist einfach nur der Funktionsname. Innerhalb dieser Standardfunktion teilt man dem
Mikrocontroller schließlich mit, welche Pins wie verwendet werden sollen. Mithilfe der Funktion
PinMode definiert man dann, ob ein Pin entweder einen Ausgang oder einen Eingang darstellt. In
unserem Fall sind die LEDs allesamt Ausgänge und der Taster ein Eingang. In der nachfolgenden
Funktion namens Loop platziert man den eigentlichen Programmcode, der in dieser Schleife kontinuierlich
ausgeführt wird. Zunächst schalten wir die rote LED mit der Schreibfunktion DigitalWrite an,
indem wir den Spannungswert auf High setzen. Mit der Lesefunktion DigitalRead hingegen lesen wir
den Zustand des Tasters aus und weisen ihn der zuvor definierten Variable Status Taster zu.
Innerhalb der folgenden If-Bedingung können wir nun definieren, was passieren soll,
der Taster gedrückt wird, wenn die Variable Status Taster also den Spannungswert High
einnimmt. Zunächst soll 2000 Millisekunden gewartet werden, dann soll zu der noch
brennenden roten LED die gelbe LED zugeschaltet werden. Nach einer weiteren einsekündigen
Verzögerung soll die rote und gelbe LED mittels des Spannungszustandes Low ausgeschaltet werden
und dafür die grüne LED aufleuchten. Drei Sekunden danach geht sie wieder aus und die
gelbe LED an. Nach einer Sekunde geht auch die gelbe LED wieder aus und der ursprüngliche Zustand
mit der roten LED wird wieder eingenommen. Und das war's auch schon. Mit dem Häkchen
können wir den Code auf Fehler kontrollieren und anschließend auf den Arduino übertragen.
Dazu schließen wir ihn mit dem USB-Kabel an, drücken auf den Hochladen-Button,
der das Programm schließlich kompiliert und überträgt. Kurz darauf leuchtet auch
schon die rote LED auf. Drücken wir nun auf den Taster und schauen, was passiert.
Wunderbar, funktioniert genau so, wie wir es uns vorgestellt haben. So einfach kann
Programmieren sein. Auch wenn das ein verhältnismäßig einfaches Projekt war,
kann man sich sicherlich vorstellen, was mit einem Bewegungsmelder, Display,
Piezolautsprecher oder Temperatursensor alles möglich ist. Vom Lügendetektor über eine
Alarmanlage bis hin zu einer Art magischer Miesmuschel ist damit alles zu verwirklichen.
Solltest du jetzt selbst Lust aufs Programmieren mit so einem Mikrocontroller bekommen haben,
dann schau gerne mal in die Infobox oder klicke auf die eingeblendete Infocard,
um zum Shop von Codino zu gelangen. Mit dem Code BRAINFUCK kannst du dir jetzt sogar 10€ sparen
und unterstützt den Kanal sogleich mit einer kleinen Provision. Also nichts wie los und
viel Spaß beim Basteln und Coden. Danke euch fürs Anschauen und danke an
Codino für die nette Zusammenarbeit bei diesem Videothema. Schreibt mir gerne mal in die Kommentare,
wie euch dieser kleine Programmierexkurs gefallen hat und welche Programmiersprachen ihr so beherrscht.
Wir hören uns im nächsten Video.