{"id":5175,"date":"2023-04-18T13:32:58","date_gmt":"2023-04-18T13:32:58","guid":{"rendered":"https:\/\/sites.hslu.ch\/werkstatt\/?p=5175"},"modified":"2025-03-19T12:29:50","modified_gmt":"2025-03-19T12:29:50","slug":"mikrocontroller","status":"publish","type":"post","link":"https:\/\/sites.hslu.ch\/werkstatt\/mikrocontroller\/","title":{"rendered":"Mikrocontroller"},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><p>[vc_section el_class=&#187;dkw-section-lead&#187;][vc_row][vc_column width=&#187;2\/3&#8243; offset=&#187;vc_col-sm-offset-2&#8243;][vc_column_text]<strong>Sogenannte Mikrocontroller sind simple Computersysteme, die auf einem einzelnen Board Platz finden. Sie werden mit einem einfachen Programm bespielt, welches sie schliesslich im Loop ausf\u00fchren. Damit sind sie eine gute Wahl f\u00fcr Projekte, bei deinen eine spezifische Aufgabe automatisiert werden soll. Da die Boards durch andere elektronische Komponenten erg\u00e4nzt werden k\u00f6nnen, sind dir beim T\u00fcfteln fast keine Grenzen gesetzt: Von einem <a href=\"https:\/\/sites.hslu.ch\/werkstatt\/diy-gps-tracker\/\">GPS-Tracker<\/a> bis hin zu einem <a href=\"https:\/\/sites.hslu.ch\/werkstatt\/diy-keyboard\/\">emulierten Keyboard<\/a> \u2013 all das ist m\u00f6glich mit einem einfachen Mikrocontroller als Basis.<\/strong><\/p>\n<p><strong>Hier findest du eine kurze Einf\u00fchrung in die physischen Grundlagen und die Programmierung g\u00e4ngiger Boards.<\/strong>[\/vc_column_text][\/vc_column][\/vc_row][\/vc_section][vc_section el_class=&#187;dkw-section-content&#187;][vc_row][vc_column width=&#187;1\/3&#8243; el_class=&#187;dkw-col-toc&#187; offset=&#187;vc_col-lg-3&#8243;][vc_column_text]<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/mikrocontroller\/#Boards\" >Boards<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/mikrocontroller\/#Optionen\" >Optionen<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/mikrocontroller\/#Aufbau\" >Aufbau<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/mikrocontroller\/#Erweiternde_Komponenten\" >Erweiternde Komponenten<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/mikrocontroller\/#Inputs\" >Inputs<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/mikrocontroller\/#Outputs\" >Outputs<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/mikrocontroller\/#Programmierung\" >Programmierung<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/mikrocontroller\/#IDEs\" >IDEs<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/mikrocontroller\/#Optionen-2\" >Optionen<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/mikrocontroller\/#Einrichten\" >Einrichten<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/mikrocontroller\/#Wichtige_Funktionen\" >Wichtige Funktionen<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/mikrocontroller\/#Datentypen_und_-strukturen\" >Datentypen und -strukturen<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/mikrocontroller\/#void_setup_void_loop\" >void setup() &amp; void loop()<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/mikrocontroller\/#pinMode\" >pinMode()<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/mikrocontroller\/#xRead_xWrite\" >xRead() &amp; xWrite()<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/mikrocontroller\/#Serialbegin_Serialprintln\" >Serial.begin() &amp; Serial.println()<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/mikrocontroller\/#Upload\" >Upload<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/mikrocontroller\/#Einfache_Projekte\" >Einfache Projekte<\/a><\/li><\/ul><\/nav><\/div>\n[\/vc_column_text][\/vc_column][vc_column width=&#187;2\/3&#8243; el_class=&#187;dkw-col-content&#187; offset=&#187;vc_col-lg-6&#8243;][vc_column_text css=&#187;&#187;]<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Boards\"><\/span>Boards<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"Optionen\"><\/span>Optionen<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Mikrocontroller gibt es in vielen verschiedenen Ausf\u00fchrungen. Die Boards unterscheiden sich dabei in Punkten wie Leistung, Anzahl und Art der Schnittstellen, eingebaute Sensoren und nat\u00fcrlich auch Kosten. Bekannte Produzenten sind zum Beispiel Arduino und Adafruit. Dabei handelt es sich um open-source Hardware-Hersteller, die Boards von guter Qualit\u00e4t zu erschwinglichen Preisen anbieten. Daneben gibt es aber noch sehr viel mehr Auswahlm\u00f6glichkeiten in diesem Bereich.<\/p>\n<p>Welches Board f\u00fcr dein Projekt am besten geeignet ist, muss auf Grund deiner individuellen Bed\u00fcrfnisse abgewogen werden. Einen guten Leitfaden dazu findest du <a href=\"https:\/\/learn.adafruit.com\/how-to-choose-a-microcontroller\/overrview\">hier<\/a>.<\/p>\n<p>Im weiteren Verlauf dieser \u00dcbersicht werden wir den Arduino Uno als spezifisches Beispiel nehmen. Dieser Controller wird auf Grund seiner angenehmen Gr\u00f6sse, guten Grundausstattung sowie dem Preis-Leistungs-Verh\u00e4ltnis oftmals als ideales Anf\u00e4ngermodel angepriesen. Die meisten Angaben lassen sich jedoch in gleicher oder leicht abge\u00e4nderter Form auch auf andere Boards anwenden.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Aufbau\"><\/span>Aufbau<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Hier zeigen wir dir die wichtigsten Komponenten eines Mikrocontrollers:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5286 size-medium\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/arduino_anatomy-1000x759.png\" alt=\"\" width=\"1000\" height=\"759\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/arduino_anatomy-1000x759.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/arduino_anatomy-768x583.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/arduino_anatomy-848x644.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/arduino_anatomy-1140x865.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/arduino_anatomy-1170x888.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/arduino_anatomy-600x455.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/arduino_anatomy.png 1402w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>(1) <strong>USB-Anschluss.<\/strong> Hierdurch wird der Arduino mit einem Computer verbunden, um den entsprechenden Code hochzuladen.<\/p>\n<p>(2) <strong>Netzanschluss.<\/strong> Dar\u00fcber wird das Board mit Strom versorgt, wenn es nicht an einen PC angeschlossen ist.<\/p>\n<p>(3) <strong>Reset-Taste.<\/strong> Damit kann das Board bei St\u00f6rungen manuell zur\u00fcckgesetzt werden.<\/p>\n<p>(4) <strong>Eingebautes LED.<\/strong> Kann durch die ID LED_BUILTIN angesteuert werden.<\/p>\n<p>(5.a) <strong>Digitale In- und Output-Pins.<\/strong> Diese Anschl\u00fcsse k\u00f6nnen digitale Signale sowohl lesen als auch schreiben.<br \/>\n(5.b) <strong>Analoge Output Pins.<\/strong> Zus\u00e4tzlich k\u00f6nnen Pins, die mit einem ~ gekennzeichnet sind, analoge Signale senden. Dies geschieht durch Pulse-width-Modulation (PWM).<\/p>\n<p>(6) <strong>Analoge Input-Pins.<\/strong> Diese Anschl\u00fcsse k\u00f6nnen analoge Signale lesen.<\/p>\n<p>(7) <strong>Spannungs-Pins.<\/strong> Hier k\u00f6nnen Spannungen von 3.3 V oder 5 V abgegriffen werden.<\/p>\n<p>(8) <strong>Grund-Pins.<\/strong> Diese Pins fungieren als Grund, dem Spannungen zugef\u00fchrt werden k\u00f6nnen.<\/p>\n<p>(9) <strong>Mikrokontroller.<\/strong> Der eigentliche Chip, auf dem das Steuerprogramm gespeichert und ausgef\u00fchrt wird.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Erweiternde_Komponenten\"><\/span>Erweiternde Komponenten<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Der Grundlegende Prozess im Physical Computing mit Mikrocontrollern sieht wie folg aus: Es werden Werte abgegriffen (Input), verarbeitet (Computation\/Process) und schliesslich in einer neuen Form herausgespielt (Output).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5289 size-medium\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-17-at-14.01.20-1000x382.png\" alt=\"\" width=\"1000\" height=\"382\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-17-at-14.01.20-1000x382.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-17-at-14.01.20-768x294.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-17-at-14.01.20-1536x588.png 1536w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-17-at-14.01.20-848x324.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-17-at-14.01.20-1140x436.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-17-at-14.01.20-1170x448.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-17-at-14.01.20-600x229.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-17-at-14.01.20.png 1668w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Der Controller selbst kann dabei jedoch nur den mittleren Part \u00fcbernehmen. Aus diesem Grund wird das System durch verschiedene In- und Output-Komponenten erweitert. Diese werden durch ein leitendes Material (meist Jumperwires) \u00fcber die entsprechenden Pins mit dem Board verbunden.<\/p>\n<p>Einige Beispiele f\u00fcr solche Erweiterungen:<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Inputs\"><\/span><strong>Inputs<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h5>\n<ul>\n<li>Sensoren: In dieser Gruppe gibt es unz\u00e4hlige Bauteile, die unterschiedliche Gegebenheiten messen k\u00f6nnen. Von Optischen Komponenten wie Lichtmesser oder Kameras, \u00fcber audiosensitive Teile wie Ultraschallsensoren bis hin zu haptischen Zus\u00e4tzen wie Druck- oder Stretchsensoren \u2013 Und viele mehr!<\/li>\n<li>Digitale Schaltkontakte wie Switches und Kn\u00f6pfe<\/li>\n<li>Analoge, verstellbare Widerst\u00e4nde wie Potentiometer<\/li>\n<li>Datenpakete (\u00fcber Kabel-, WiFi- oder Bluetooth-Schnittstellen)<\/li>\n<\/ul>\n<h5><span class=\"ez-toc-section\" id=\"Outputs\"><\/span><strong>Outputs<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h5>\n<ul>\n<li>Leuchtdioden (LEDs) und Displays<\/li>\n<li>Lautsprecher<\/li>\n<li>Motoren und andere bewegliche Elektroteile<\/li>\n<\/ul>\n<p>Dabei ist es wichtig zu beachten, ob es sich um digitale oder analoge Schnittstellen handelt. Digitale In- und Outputs sind bin\u00e4r. Dazu geh\u00f6rt beispielsweisse der Status eines Knopfes (gedr\u00fcckt\/nicht gedr\u00fcckt) oder der eines LEDs (an\/aus). Bei analogen Bauteilen erhalten oder senden wir ein Wert, der sich auf einem Spektrum befindet. So wird ein Lautst\u00e4rke-Sensor je nach Ger\u00e4uschpegel eine Zahl von 1 bis X senden und ein Motor kann innerhalb der Spanne eines bestimmten Winkels gedreht werden.<\/p>\n<figure id=\"attachment_5314\" aria-describedby=\"caption-attachment-5314\" style=\"width: 1000px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5314 size-medium\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-20-at-16.53.52-1000x698.png\" alt=\"\" width=\"1000\" height=\"698\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-20-at-16.53.52-1000x698.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-20-at-16.53.52-768x536.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-20-at-16.53.52-1536x1072.png 1536w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-20-at-16.53.52-848x592.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-20-at-16.53.52-1140x796.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-20-at-16.53.52-1170x817.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-20-at-16.53.52-600x419.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-20-at-16.53.52.png 1722w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption id=\"caption-attachment-5314\" class=\"wp-caption-text\">Einfacher, Arduino-basierter Schaltkreislauf mit Knopf (digitaler Input) und LED (digitaler Output). Den Code dazu findest du unter <a href=\"https:\/\/www.programmingelectronics.com\/tutorial-17-using-a-button-old-version\/\" rel=\"nofollow\">https:\/\/www.programmingelectronics.com\/tutorial-17-using-a-button-old-version\/<\/a><\/figcaption><\/figure>\n<p>Durch diese Teile wird der Controller schliesslich zu einem Kleinstcomputer, der Daten aufnehmen, verarbeiten und weiterleiten kann. Wie die verschiedenen Komponenten mit dem Board verbunden werden m\u00fcssen und welche Daten sie annehmen oder ausspielen, kann jeweils ihrer Dokumentation entnommen werden.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Programmierung\"><\/span>Programmierung<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"IDEs\"><\/span><strong>IDEs<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<h5><span class=\"ez-toc-section\" id=\"Optionen-2\"><\/span><strong>Optionen<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Um Code f\u00fcr einen Mikrocontroller zu schreiben und ihn anschliessend auf das Board zu laden, gibt es verschiedene M\u00f6glichkeiten. \u00dcber welchen Sprachen ein Controller programmiert werden kann, h\u00e4ngt vom Model ab. <a href=\"https:\/\/www.xplore-dna.net\/mod\/page\/view.php?id=1396\">Hier<\/a> findest du eine \u00dcbersicht \u00fcber der g\u00e4ngigsten optionen. Im kreativen Physical-Computing ist es wohl die \u00fcblichste Variante, ein Board \u00fcber Arduinos Integrated-Development-Environment (IDE) und durch Arduinos eigene Sprache (<em>Sketch<\/em>, C++ basiert) anzusteuern. Dieses System ist benutzerfreundlich und kommt mit dem Vorteil einer grossen, aktiven Community.<\/p>\n<p>Daher werden wir uns im Folgenden auf diese Variante beschr\u00e4nken.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Einrichten\"><\/span><strong>Einrichten<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Als erstes musst du daf\u00fcr die <a href=\"https:\/\/www.arduino.cc\/en\/software\">Arduino IDE<\/a> herunterladen.<\/p>\n<p>Bevor es losgeht, musst du noch zwei Voreinstellungen treffen. Wenn du den Reiter \u00abTools\u00bb anw\u00e4hlst, siehst du eine Auswahl mit dem Namen \u00abBoards\u00bb. Dort musst du den Mikrocontroller, mit dem du arbeiten willst, ausw\u00e4hlen. Falls du dein Board nicht findest, kannst du durch den \u00abBoards Manager\u00bb weitere Optionen herunterladen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5287 size-medium\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.38.01-1000x314.png\" alt=\"\" width=\"1000\" height=\"314\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.38.01-1000x314.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.38.01-768x241.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.38.01-1536x482.png 1536w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.38.01-2048x642.png 2048w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.38.01-848x266.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.38.01-1140x357.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.38.01-1170x367.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.38.01-1920x602.png 1920w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.38.01-600x188.png 600w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Als n\u00e4chstes w\u00e4hlst du den korrekten Port deines Computers aus. Hierf\u00fcr sollte dein Controller bereits \u00fcber ein Kabel mit deiner Maschine verbunden sein. Unter der Einstellung \u00abPort\u00bb solltest du nun sehen, an welchem Anschluss dein Board h\u00e4ngt. W\u00e4hle diesen aus.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5288 size-medium\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.39.32-1000x488.png\" alt=\"\" width=\"1000\" height=\"488\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.39.32-1000x488.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.39.32-768x375.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.39.32-1536x750.png 1536w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.39.32-848x414.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.39.32-1140x557.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.39.32-1170x571.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.39.32-1920x937.png 1920w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.39.32-600x293.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-12-at-15.39.32.png 2003w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Danach bist du bereit, loszulegen.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Wichtige_Funktionen\"><\/span><strong>Wichtige Funktionen<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Eine In-Depth-Einf\u00fchrung in die Arduino-Sprache und DIE findest du <a href=\"https:\/\/docs.arduino.cc\/learn\/starting-guide\/getting-started-arduino\">hier<\/a>.<\/p>\n<p>Im Nachfolgenden werden wir nur die wichtigsten Funktionen, die du zum Programmieren eines Mikrocontrollers ben\u00f6tigst, anschauen.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Datentypen_und_-strukturen\"><\/span><strong>Datentypen und -strukturen<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Anfangs wirst du meist folgende <a href=\"https:\/\/www.javatpoint.com\/arduino-data-types\">Datentypen<\/a> benutzen:<\/p>\n<ul>\n<li>Integer (int): Ganze Zahlen<\/li>\n<li>Floating-Point Number (float): Zahlen mit Bruchteil<\/li>\n<li>Charakter (char): Zeichenwert<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5302 size-full\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-10.59.34-1.png\" alt=\"\" width=\"938\" height=\"336\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-10.59.34-1.png 938w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-10.59.34-1-768x275.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-10.59.34-1-848x304.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-10.59.34-1-600x215.png 600w\" sizes=\"auto, (max-width: 938px) 100vw, 938px\" \/><\/p>\n<p>Bez\u00fcglich Datenstrukturen wird in Arduino oft mit <a href=\"https:\/\/www.javatpoint.com\/arduino-array\">Arrays<\/a> gearbeitet. Diese erlauben es dir, mehrere Elemente desselben Datentyps in einer Liste unterzubringen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5303 size-full\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-10.42.53-1.png\" alt=\"\" width=\"502\" height=\"106\" \/><\/p>\n<p>Diese Variablen sind das erste, das du in deinem Script definierts \u2013 noch vor dem setup().<\/p>\n<h5><span class=\"ez-toc-section\" id=\"void_setup_void_loop\"><\/span><strong>void setup() &amp; void loop()<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Wenn du ein neues Projekt in der Arduino-DIE \u00f6ffnest, wird dein File diese zwei Funktionen bereits enthalten. In ihnen wirst du den Grossteil deines Codes platzieren.<\/p>\n<p>Ins Setup packst du alle Tasks, die nur einmal, am Beginn des Scrips, ausgef\u00fchrt werden sollen. Dazu geh\u00f6ren Dinge wie die Serial-Kommunikation (siehe: Serial.begin() &amp; Serial.print()) aufzusetzen oder deine Pins zu definieren (siehe: pinMode()).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5291 size-full\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-17-at-16.09.18.png\" alt=\"\" width=\"810\" height=\"386\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-17-at-16.09.18.png 810w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-17-at-16.09.18-768x366.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-17-at-16.09.18-600x286.png 600w\" sizes=\"auto, (max-width: 810px) 100vw, 810px\" \/><\/p>\n<p>Die Loop-Funktion hingegen, wird, wie der Name vermuten l\u00e4sst, permanent wiederholt. Hier platzierst du den Teil deines Codes, der perpetuell ausgef\u00fchrt werden soll. Ein Besipiel daf\u00fcr ist das lesen und beschreiben deiner Pins (siehe: xRead() &amp; xWrite()).<\/p>\n<h5><span class=\"ez-toc-section\" id=\"pinMode\"><\/span><strong>pinMode()<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Mit der Funktion pinMode(Pin Nummer, Modus) bestimmst du \u2013 du hast es bereits geahnt \u2013 den Modus eines Pins. Dabei musst du innerhalb der Funktion festlegen, welchen Pin du definieren willst und ob du ihn als INPUT oder OUTPUT aufsetzt.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5304 size-full\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-11.37.02-1.png\" alt=\"\" width=\"628\" height=\"220\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-11.37.02-1.png 628w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-11.37.02-1-600x210.png 600w\" sizes=\"auto, (max-width: 628px) 100vw, 628px\" \/><\/p>\n<h5><span class=\"ez-toc-section\" id=\"xRead_xWrite\"><\/span><strong>xRead() &amp; xWrite()<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Diese Funktionen werden benutzt, um Werte von Pins abzulesen oder sie zu beschreiben.<\/p>\n<ul>\n<li>digitalRead(Pin Nummer) liest den Wert eines digitalen Pins aus.<\/li>\n<li>digitalWrite(Pin Nummer, Wert) schreibt einen HIGH- oder LOW-Wert an einen digitalen Pin.<\/li>\n<li>analogRead(Pin Nummer) schreibt einen Wert zwischen 0 und 1023 an einen analogen Pin.<\/li>\n<li>analogWrite(Pin Nummer, Wert) liest den Wert eines analogen Pins aus.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5293 size-full\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-10.02.44.png\" alt=\"\" width=\"644\" height=\"196\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-10.02.44.png 644w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-10.02.44-600x183.png 600w\" sizes=\"auto, (max-width: 644px) 100vw, 644px\" \/><\/p>\n<h5><span class=\"ez-toc-section\" id=\"Serialbegin_Serialprintln\"><\/span><strong>Serial.begin() &amp; Serial.println()<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Serial-Kommunikation ist dazu da, Werte aus deinem System herauszulesen und bei Gegebenheit weiterzuleiten.<\/p>\n<p>Damit das funktioniert, musst du die Kommunikation zuerst implementieren. Dazu verwendest du in deinem Setup die Funktion Serial.begin(Baudrate). Die Baudrate ist die Schrittgeschwindigkeit in der Nachrichten empfangen werden. Je nachdem mit was f\u00fcr Komponenten du arbeitest, sind verschiedene Raten empfehlenswert oder sogar notwendig. Informationen dazu findest du jeweils in der entsprechenden Dokumentation.<\/p>\n<p>Um die empfangenen Daten nun auszulesen, verwendest du die Funktion Serial.println(Wert). Diese printet den Wert, den du ihr vorgibst in die Arduino-Console \u2013 jeweils auf einer neuen Linie.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Upload\"><\/span><strong>Upload<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Hast du dein Programm geschrieben, kannst du es durch einen Klick auf das Verify-Symbol (1) testen. Erst, wenn du dort keine Fehlermeldung angezeigt bekommst, solltest du den Code auf dein Board laden (2).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5292 size-full\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-17-at-16.40.43.png\" alt=\"\" width=\"992\" height=\"90\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-17-at-16.40.43.png 992w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-17-at-16.40.43-768x70.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-17-at-16.40.43-848x77.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-17-at-16.40.43-600x54.png 600w\" sizes=\"auto, (max-width: 992px) 100vw, 992px\" \/><\/p>\n<p>Um die Funktionalit\u00e4t deines Programmes zu \u00fcberwachen, kannst du nun den Serial-Monitor aufmachen. Daf\u00fcr klickst du das Symbol mit der Lupe (3). Alles, was du mit Serial.println(Wert) herausspielst, wird nun hier erscheinen. Falls du jedoch einen fehlerhaften Output antriffst, stelle sicher, dass die Baudrate des Monitors (4) mit der Rate in deiner Serial.begin(Baudrate)-Funktion \u00fcbereinstimmt.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5297 size-medium\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-13.22.43-1000x339.png\" alt=\"\" width=\"1000\" height=\"339\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-13.22.43-1000x339.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-13.22.43-768x261.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-13.22.43-1536x521.png 1536w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-13.22.43-2048x695.png 2048w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-13.22.43-848x288.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-13.22.43-1140x387.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-13.22.43-1170x397.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-13.22.43-1920x652.png 1920w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/04\/Screenshot-2023-04-18-at-13.22.43-600x204.png 600w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Einfache_Projekte\"><\/span><strong>Einfache Projekte<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Um ein erstes Gef\u00fchl daf\u00fcr zu bekommen, wie all diese Komponenten nun zusammenspielen, empfehlen wir dir, gleich mit einem einfachen Beispiel einzusteigen. Eine gute Auswahl findest du zum Beispiel <a href=\"https:\/\/sites.hslu.ch\/werkstatt\/einstiegsaufgaben-arduino\/\">hier<\/a>. Die Boards sowie die Kleinteile, die du f\u00fcr solche Projekte ben\u00f6tigst, findest du in der <a href=\"https:\/\/ausleihe.hslu.ch\/borrow\/models?_bc%5B%5D=03fa0eb4-6e9e-46b1-a3fb-ec885f7bc8f7&amp;category_id=03fa0eb4-6e9e-46b1-a3fb-ec885f7bc8f7\">MediaDock-Ausleihe<\/a> sowie unserem <a href=\"https:\/\/sites.hslu.ch\/werkstatt\/weve-got-parts-neuer-shop-im-mediadock\/\">Shop<\/a>.[\/vc_column_text][\/vc_column][vc_column width=&#187;1\/3&#8243; el_class=&#187;dkw-col-micro&#187; offset=&#187;vc_col-lg-3&#8243;][\/vc_column][\/vc_row][\/vc_section][vc_section el_class=&#187;dkw-dontprint&#187;][vc_row disable_element=&#187;yes&#187;][vc_column][vc_column_text]<span style=\"color: red\">\u2014 \u2014 \u2014 INFO: In beiden nachfolgenden Post Grids die passenden Recipies und die passenden Talks\u00a0 ausw\u00e4hlen \u2014 \u2014 \u2014<br \/>\n<\/span>[\/vc_column_text][\/vc_column][\/vc_row][vc_row][vc_column][vc_column_text]<\/p>\n<h2>Passende Recipies<\/h2>\n<p>[\/vc_column_text][vc_basic_grid post_type=&#187;ids&#187; element_width=&#187;2&#8243; gap=&#187;10&#8243; item=&#187;517&#8243; css=&#187;&#187; grid_id=&#187;vc_gid:1742387276063-d307308a-76b1-6&#8243; include=&#187;9156, 5014, 4098, 6775&#8243;][\/vc_column][\/vc_row][\/vc_section]<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>[vc_section el_class=&#187;dkw-section-lead&#187;][vc_row][vc_column width=&#187;2\/3&#8243; offset=&#187;vc_col-sm-offset-2&#8243;][vc_column_text]Sogenannte Mikrocontroller sind simple Computersysteme, die auf einem einzelnen Board Platz finden. Sie werden mit einem einfachen Programm bespielt, welches sie [&hellip;]<\/p>\n","protected":false},"author":50,"featured_media":5307,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[15,13],"tags":[],"class_list":["post-5175","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mediadock","category-tools"],"acf":[],"_links":{"self":[{"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/posts\/5175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/users\/50"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/comments?post=5175"}],"version-history":[{"count":24,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/posts\/5175\/revisions"}],"predecessor-version":[{"id":9307,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/posts\/5175\/revisions\/9307"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/media\/5307"}],"wp:attachment":[{"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/media?parent=5175"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/categories?post=5175"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/tags?post=5175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}