{"id":3883,"date":"2012-08-13T20:37:06","date_gmt":"2012-08-13T18:37:06","guid":{"rendered":"https:\/\/www.herr-rau.de\/wordpress\/?p=3883"},"modified":"2023-05-31T22:00:41","modified_gmt":"2023-05-31T20:00:41","slug":"der-arduino-mein-neuer-computer","status":"publish","type":"post","link":"https:\/\/www.herr-rau.de\/wordpress\/2012\/08\/der-arduino-mein-neuer-computer.htm","title":{"rendered":"Der Arduino: Mein neuer Computer"},"content":{"rendered":"<div style='text-align:right;'><small>(<a href='https:\/\/www.herr-rau.de\/wordpress\/2012\/08\/der-arduino-mein-neuer-computer.htm#comments'>8 Kommentare.<\/a>)<\/small> <\/div>\n<p>Sommerzeit ist Hardwarezeit, Teil 2: Ich bin alles andere als ein Elektrolurch. (<span style=\"text-decoration: line-through;\">Fachausdruck von Frau Rau.<\/span> Fachausdruck vermittelt durch Frau Rau.) Gebt mir die theoretische Informatik, gebt mir Datenstrukturen, gebt mir Informatik und Gesellschaft &#8211; technische Informatik war dagegen nie das meine, ich komme entschieden nicht aus der Physik, so wie andere Informatiklehrer, und hatte auch nie das Bed\u00fcrfnis, mir einen Rechner selber zusammenzuschrauben. Also, nur ein bisschen.<\/p>\n\n\n\n<p>Schon in der Schule war mir das mit der St\u00e4rke und der Spannung nie so ganz klar, sehr zum Leidwesen meines technisch versierten Vaters. Dabei hatte ich einen Elektronik-Baukasten, wohl Anfang der 1980er Jahre, mit Alarmanlage und Hupe und Morsetaste und Potentiometer. (Leider kein Bild gefunden, schade. Es war kein Kosmos-Set, soviel wei\u00df ich noch.)<\/p>\n\n\n\n<p>Als mir aber angeboten wurde, dieses Buch zu rezensieren:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"200\" height=\"289\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/arduino_schmidt.jpg\" alt=\"\" class=\"wp-image-3887\" title=\"arduino_schmidt\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/arduino_schmidt.jpg 200w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/arduino_schmidt-103x150.jpg 103w\" sizes=\"auto, (max-width: 200px) 100vw, 200px\" \/><\/figure>\n\n\n\n<p>Maik Schmidt, <em>Arduino. Ein schneller Einstieg in die Microcontroller-Entwicklung<\/em> (<a href=\"http:\/\/www.amazon.de\/Arduino-Ein-schneller-Einstieg-Microcontroller-Entwicklung\/dp\/3898647641\/ref=sr_1_fkmr0_1?ie=UTF8&amp;qid=1344770098&amp;sr=8-1-fkmr0\">Amazon<\/a>) &#8211; weiter unten mehr dazu<\/p>\n\n\n\n<p>&#8211; da nahm ich das zum Anlass, doch mal etwas elektronischer zu werden. Und jetzt habe ich einen ganzen neuen Computer im Haus, einen Arduino Uno:<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3888\" title=\"arduino\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/arduino.gif\" alt=\"\" width=\"550\" height=\"488\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/arduino.gif 550w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/arduino-150x133.gif 150w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><br><small>(Nachtrag, wegegen besorgter Hinweise: Das Bild des Schl\u00fcssels habe ich vorher nat\u00fcrlich manipuliert.)<\/small><\/p>\n\n\n\n<p>Wie man hoffentlich sieht, ist dieser Computer recht klein, aber trotzdem ein mehr oder weniger vollst\u00e4ndiges Ger\u00e4t. Kostet auch nur um die 25 Euro. Die verschiedenen Rechner der <a href=\"http:\/\/de.wikipedia.org\/wiki\/Arduino-Plattform\">Arduino-Serie<\/a> sind speziell f\u00fcr Nichttechniker gedacht, etwa f\u00fcr K\u00fcnstler, die computergesteuerte bewegliche Plastiken schaffen wollen und dazu einen Minicomputer brauchen, den sie in die Plastik einbauen. Die Hardware und Software dazu sind open source.<\/p>\n\n\n\n<p>Der Mikrocontroller ist dabei das Teil am Ger\u00e4t, das die Arbeit macht: Er enth\u00e4lt nicht nur den Prozessor (der rechnet, Daten hin- und herschiebt und Programmcode ausf\u00fchrt), sondern auch weitere Steuerungselemente und Arbeitsspeicher, die im heimischen PC auf separate Bauteile aufgeteilt sind. Ein Computer im Kleinen.<\/p>\n\n\n\n<p>Au\u00dferdem braucht auch ein kleiner Computer Strom. Der kommt \u00fcber den Stromanschluss oder \u00fcber das USB-Kabel, das dazu an einem Rechner oder einem Steckdosenadapter steckt und den Rechner mit den n\u00f6tigen 5 V Spannung versorgt (und einem halben Ampere St\u00e4rke).<\/p>\n\n\n\n<p>Und dann gibt es noch die Ein- und Ausgabepins oben. Das sind sozusagen Augen, Ohren, Mund und H\u00e4nde des Rechners. Ohne die w\u00fcrden wir nichts davon mitkriegen, wenn der Rechner rechnet.<br>Man kann jeden Pin als Ausgabe deklarieren, dann kann das Programm an diesen Pin 5 V schicken (einschalten) oder 0 V (ausschalten). Und an diesem Pin kann zum Beispiel eine Leuchtdiode stecken, die dann angeht oder ausgeht.<br>Oder man deklariert einen Pin als Eingang, dann kann das Programm an diesem Programm \u00fcberpr\u00fcfen, ob Spannung anliegt. Und an diesem Pin kann zum Beispiel ein Schalter stecken. Dann schreibt man ein Programm, das immer wieder den Eingangspin auf Spannung \u00fcberpr\u00fcft, und wenn dort welche liegt (also der Schalter gedr\u00fcckt ist), sendet das Programm wiederum Spannung an den Ausgabepin, so dass dort die Diode leuchtet. Schon hat man ein kleines Maschinchen &#8211; zugegeben ein so einfaches, dass man daf\u00fcr keinen Rechner br\u00e4uchte.<\/p>\n\n\n\n<p>An diese und die analogen Pins kann man Servomotoren h\u00e4ngen, Leuchtdioden, Summer, Temperaturf\u00fchler und Beschleunigungsmesser und alles m\u00f6gliche sonst. Wie Captain Hook, wenn der statt seiner Hakenhand alle m\u00f6glichen K\u00fcchenutensilien anstecken k\u00f6nnte.<\/p>\n\n\n\n<p>Das Zeug muss man nat\u00fcrlich erst haben. Ich bin dem Rat des Buches gefolgt und habe f\u00fcr unter 70 Euro eine Einsteigerbox gekauft &#8211; mit dem Arduino Uno als Rechner und einem Haufen von K\u00e4belchen, Widerst\u00e4nden, Relais, Transistor, Summer, Servomotor, Druckkn\u00f6pfen, Potentiometer, Temperatur-, Licht- und Neigungssensor. Ich komme mir schon extrem technisch vor. Das letzte Mal Widerst\u00e4nde gel\u00f6tet habe ich vor f\u00fcnfundzwanzig Jahren (ein selbstgebasteltes Mikrophon f\u00fcr die Mundharmonika, lange Geschichte); gl\u00fccklicherweise muss man zumindest f\u00fcr die Einsteigerspielereien mit dem Arduino nichts l\u00f6ten, sondern kann alle Teile bequem einstecken.<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3890\" title=\"arduino\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/arduino.jpg\" alt=\"\" width=\"382\" height=\"549\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/arduino.jpg 382w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/arduino-104x150.jpg 104w\" sizes=\"auto, (max-width: 382px) 100vw, 382px\" \/><br><small>das Fritzing Starter Kit<\/small><\/p>\n\n\n\n<p>Das Buch von Maik Schmidt enth\u00e4lt als Projekte unter anderem: Einen Zufallsw\u00fcrfel; das \u00dcbersetzen von vom PC gesendeten Text in Morsesignale; Entfernungsmessung mit Ultraschallsensor; das Anschlie\u00dfen eines Wii-Nunchucks; eine Universalfernbedienung. F\u00fcr mich als Einsteiger eine Nummer zu gro\u00df, aber die einfachen Projekte kann ich. Als N\u00e4chstes m\u00f6chte ich alleine etwas ganz Simples ausprobieren: eine Ampel, die man per Knopfdruck weiterschaltet. Dazu muss ich nur eine rote, gr\u00fcne und gelbe Diode (durch Widerst\u00e4nde gesch\u00fctzt) und einen Schalter an beliebige Pins stecken. Und das mit der Masse, das muss ich noch kapieren, Das Programm, das die Ein- und Ausgabepins dann ampelm\u00e4\u00dfig steuert, ist dann wieder ganz einfach &#8211; ganz der Zehntklassstoff.<\/p>\n\n\n\n<p>Das Buch erkl\u00e4rt nicht die Programmiersprache C++, man sollte sich also etwas damit auskennen, oder zumindest mit Java, das ist recht \u00e4hnlich. Die Entwicklungsumgebung nimmt einem dabei viel Arbeit ab. \u00dcber die serielle Schnittstelle kann der PC mit anderen Sprachen (Java, JavaScript, Processing, Python) mit dem Arduino kommunizieren.<br>Das Buch ist f\u00fcr Einsteiger mit einigem Grundwissen geeignet. Ich wei\u00df nicht, was es sonst an Arduino-B\u00fcchern gibt; viele, nehme ich an, und online gibt es auch jede Menge Anleitungen. Ich werde jedenfalls nach und nach die Modelle im Buch ausprobieren, soweit ich die Bauteile dazu habe.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Anhang 1: Die Programmierung<\/h3>\n\n\n\n<p>Programmiert wird ein Arduino so: Man installiert die Arduino-Entwicklungsumgebung auf dem Rechner. Die ist abgeleitet von und ganz \u00e4hnlich aufgebaut wie Processing (<a href=\"https:\/\/www.herr-rau.de\/wordpress\/2012\/01\/processing.htm\">Blogeintrag<\/a>). Man schreibt in dieser Entwicklungsumgebung ein einfaches Programm in der Sprache C++, zum Beispiel dieses:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int pin = 13;<br><br>void setup() {<br>\u00a0pinMode(pin, OUTPUT);<br>}<br><br>void loop() {<br> \u00a0digitalWrite(pin, HIGH);<br> \u00a0delay(1000);<br> \u00a0digitalWrite(pin, LOW);<br> \u00a0delay(1000);<br> }<br> <\/code><\/pre>\n\n\n\n<p>Beim Aufruf eines Processing- oder Arduino-Progamms wird immer zuerst die setup-Methode einmal ausgef\u00fchrt, in der hier der Pin Nr. 13 auf OUTPUT gesetzt wird. Das hei\u00dft, an diesen Steckplatz sendet das Programm Signale. Dort steckt sp\u00e4ter zum Beispiel eine Diode.<br>Die loop-Methode wird dagegen nicht nur einmal, sondern st\u00e4ndig ausgef\u00fchrt. Zuerst wird an den 13er-Pin ein HIGH-Signal gesendet (5 V), dann eine Sekunde gewartet, dann ein LOW-Signal (0 V), dann wieder eine Sekunde gewartet. Und das immer wieder.<\/p>\n\n\n\n<p>Wenn das Programm geschrieben ist, wird es in den Speicher des Arduino \u00fcbertragen. Dort bleibt es, bis es irgendwann mal durch ein anderes Programm \u00fcberschrieben wird. Sobald der Arduino Strom kriegt, l\u00e4dt ein Bootloader das Programm und startet es &#8211; in unserem Fall wird Pin 13 abwechselnd mit einem HIGH- und einem LOW-Signal versorgt. Wenn an Pin 13 dann auch tats\u00e4chlich zum Beispiel eine Diode h\u00e4ngt, wird sie blinken.<\/p>\n\n\n\n<p>Tats\u00e4chlich versteht unser kleiner Arduino keine so hochentwickelte Sprache wie C++. Die passt da ja gar nicht rein, das wird doch wohl jeder einsehen. Also wird der Progammcode erst einmal \u00fcbersetzt in eine viel einfachere, primitivere Sprache, die der Arduino-Mikrocontroller dann auch wirklich versteht. Das hei\u00dft &#8222;kompilieren&#8220;, und es ist also gar nicht das C++-Programm, das an den Arduino-Prozessor \u00fcbertragen wird, sondern der kompilierte Programmcode. Das hei\u00dft auch Maschinensprache, und wer will, kann die Maschinensprache oder die Vorstufe dazu, Assembler, gleich selber schreiben, ohne \u00fcber C++ gehen zu m\u00fcssen. Dann sieht ein Programm so aus:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>LDI R16,2 ; lade die Zahl 2 in Register Nr. 16\nMOV R1,R16 ; kopiere den Inhalt von Register Nr. 16 nach Nr. 1<\/code><\/pre>\n\n\n\n<p><a href=\"http:\/\/www.avr-asm-tutorial.net\/avr_de\/\">Hier gibt es Tutorien dazu<\/a>, Und das ist dann auch Stoff der 12. Jahrgangsstufe. Denn nicht nur der Arduino-Prozessor versteht kein C++, das gilt genauso &#8211; aber vielleicht weniger nachvollziehbar &#8211; f\u00fcr den Prozessor im PC und jedem anderen Rechner. Die verstehen alle nur ihre eigene Maschinensprache.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Anhang 2: Die Ampel<\/h3>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"550\" height=\"466\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/arduino_ampel.jpg\" alt=\"\" class=\"wp-image-3891\" title=\"arduino_ampel\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/arduino_ampel.jpg 550w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/arduino_ampel-150x127.jpg 150w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/figure>\n\n\n\n<p>Das ist meine Ampelmaschine. Ich habe dazu nur ein Projekt im Buch minimal abgewandelt&#8230; uh, andersfarbige Dioden genommen und einen anderen Schalter eingebaut.<\/p>\n\n\n\n<p>Diese Konstruktion kann Eingaben von au\u00dfen \u00fcber einen Schalter entgegennehmen, und \u00fcber drei Dioden nach au\u00dfen Ausgaben senden. Was sie mit diesen M\u00f6glichkeiten anstellt, liegt am Programm, das Ein- und Ausgabe steuert. Zufallsleuchten, Blinklicht, Ampelschaltung, oder die Berechnung einer komplizierten Formel (gr\u00fcn f\u00fcr ja, rot f\u00fcr nein).<\/p>\n\n\n\n<p>Ist das Informatik? F\u00fcr mich ist es eher, uh, Elektrolurcherei. Schon mal, weil der Druckknopf nicht so idealisiert funktioniert wie in einer Simulation, sondern mechanisch ist und beim Drucken eine Zeitlang nachschwingt, und das Programm sich darauf einstellen muss.<br>Die Elektrolurcherei ist aber auch dringend n\u00f6tig bei mir. Inzwischen wei\u00df ich halbwegs, was Masse ist! Durch das Stecken von Kabeln und das Schreiben von Programmen eigens f\u00fcr die gebastelte Maschine (statt einer Simulation davon auf dem PC) bekommt man vielleicht auch mehr Gesp\u00fcr daf\u00fcr, was ein Computer eigentlich macht. Ich will schauen, ob ich n\u00e4chstes Jahr Gelegenheit finde, das mit Sch\u00fclern auszuprobieren.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>(8 Kommentare.) Sommerzeit ist Hardwarezeit, Teil 2: Ich bin alles andere als ein Elektrolurch. (Fachausdruck von Frau Rau. Fachausdruck vermittelt durch Frau Rau.) Gebt mir die theoretische Informatik, gebt mir Datenstrukturen, gebt mir Informatik und Gesellschaft &#8211; technische Informatik war dagegen nie das meine, ich komme entschieden nicht aus der Physik, so wie andere Informatiklehrer, [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":3887,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[25],"tags":[129,227],"class_list":["post-3883","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-informatik","tag-hardware","tag-informatik"],"jetpack_featured_media_url":"https:\/\/www.herr-rau.de\/wordpress\/archiv\/arduino_schmidt.jpg","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/3883","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/comments?post=3883"}],"version-history":[{"count":2,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/3883\/revisions"}],"predecessor-version":[{"id":58546,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/3883\/revisions\/58546"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/media\/3887"}],"wp:attachment":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/media?parent=3883"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/categories?post=3883"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/tags?post=3883"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}