Faszinierende Elektronik-Projekte mit Scratch, Arduino und Raspberry Pi

Erik Bartmann

Einleitung

Wie uns der Titel dieses Buches verrät, geht es um Scratch in Verbindung mit Elektronik. Huhh, Elektronik. Dieses Thema ist für viele ein Buch mit sieben Siegeln und wird anscheinend nur von sehr wenigen Spezialisten verstanden, geschweige denn beherrscht. Die Elektronik, die z.B. in unseren mobilen Geräten wie Smartphones oder MP3-Playern verbaut ist, wird immer kleiner und ist in der Regel nicht so rich-tig greifbar. Es gibt zwar Entwicklungsumgebungen, die das Programmieren von Apps, wie die Programme für diese kleinen Geräte genannt werden, ermöglichen und dem Entwickler alles an die Hand geben, was er für professionelles Arbeiten benötigt. Das Ganze hat jedoch für einen Einsteiger einen entscheidenden Nachteil. Die sogenannte Lernkurve ist bei derartigen Entwicklungsumgebungen in der Regel sehr steil. Deshalb muss man enorm viel Zeit in grundlegende Dinge investieren, was wiederum den Frustfaktor in die Höhe schnellen lässt und mit an Sicherheit grenzender Wahrscheinlichkeit zur Demotivation beiträgt. Um sich also als Neuling mit Elektronik zu befassen, ist das nicht unbedingt der richtige Weg.

Verdeutlichen wir uns doch einmal, was wir unter Elektronik verstehen bzw. was unser Ziel ist. Ein Prozessor in einem Smartphone stellt geballte Rechen-Power auf kleinstem Raum zur Verfügung. Für einen Bastler und Frickler, der sich mit elektronischen Schaltungen befassen möchte, um darüber die grundlegenden Erfahrungen mit diversen Bauteilen wie z.B. Widerständen, Leuchtdioden, Transistoren oder Schaltern zu sammeln, ist eine derart hoch integrierte Elektronik eher hinderlich. Was also tun? Um es Bastlern dennoch zu ermöglichen, einen geeigneten Einstieg in die Programmierung in Verbindung mit Elektronik zu finden, ist eine Plattform entwickelt worden, die alles bietet, um sichere Schritte in Richtung Physical Computing zu unternehmen.

Whow, was für ein Wort: Physical Computing. Was, um Himmels willen, ist das? Es beschreibt die bzw. steht für die Beziehung zwischen Mensch und Computer und die Interaktion zwischen beiden Welten. Unsere Welt ist als analoges System zu verstehen, wo alle Prozesse bzw. Geschehnisse stufenlose Übergänge haben. Computer »sehen« das etwas anders. Sie arbeiten nach dem Motto: Ganz oder gar nicht. Ich will damit sagen, dass Computersysteme intern mit logischen Zuständen wie 1 oder 0 arbeiten. Es bedeutet im übertragenen Sinne, dass durch einen Draht entweder ein Strom fließt oder eben nicht. Physical Computing kann als Schnittstelle zwischen beiden Welten, also der Menschenwelt und der Computerwelt, angesehen werden. Nun komme ich endlich auf die erwähnte Plattform zu sprechen, die uns die Möglichkeit bietet, mit der Welt des Gegensätzlichen, in der es nur 1 oder 0 gibt, zu interagieren. Der Name dieser Plattform lautet Arduino und sie fällt in die Kategorie Open Source.

Schon wieder so ein merkwürdiger Name: Open Source. Was bedeutet das nun wieder? Diese Bezeichnung steht für ein offenes System, bei dem alle Details, z.B. über Konstruktion, Hardware und Software, frei verfügbar sind, so dass sich jeder uneingeschränkt damit befassen kann. Das legt den Grundstein für ein kreatives Zusammenspiel unzähliger Menschen, die mit ihren Projekten und Ideen einen Beitrag zur grenzenlosen Weiterentwicklung in Richtung Physical Computing leisten. Das Potenzial, das sich dahinter verbirgt, fördert Ergebnisse zutage, die sich vor kommerziellen Projekten nicht zu verstecken brauchen. Was du mit dem Arduino alles anstellen kannst und wie diese Plattform aufgebaut ist, wirst du in den folgenden Kapiteln erfahren.

Es muss nicht unbedingt Code sein

Als ich vor vielen Jahren mit der Programmierung meines ersten Computers die ersten Erfahrungen auf diesem Gebiet sammelte, verwendete man noch die meiste Zeit damit, den Programmcode in den Computer einzugeben. In den 1980er Jahren waren Rechner wie z.B. der Apple II sehr beliebt. Die meisten Computerfreaks, die sich heutzutage mit Informationstechnologie befassen, kennen diesen Computer vielleicht nicht oder allenfalls aus Retro-Zeitschriften oder von einschlägigen Inter-netseiten. Alle diese frühen Computer hatten eines gemeinsam: Die Kommunikation bzw. Programmierung erfolgte textbasierend, was bedeutet, dass alle Befehle Zeichen für Zeichen eingetippt werden mussten. Eine ziemlich aufwendige Angelegenheit – und je nach körperlicher oder geistiger Verfassung des Programmierers mit einer recht hohen Fehlerquote behaftet. Die damals sehr beliebte Programmiersprache Basic, die übrigens auch heute noch sehr verbreitet ist und längst nicht mehr zu den Spielsprachen zählt, brachte vielen Interessierten den Umgang mit Computern näher, und es bereitete sehr viel Spaß, die Maschine genau das tun zu lassen, was man sich ausgedacht hatte.

Die damaligen Betriebssysteme waren aus heutiger Sicht recht einfach gehalten. Wenn es z.B. darum ging, Programmcode oder Dateien auf externe Speichermedien wie Kassette oder Floppy zu speichern, mussten manchmal sehr kryptisch anmutende Zeichenfolgen eingetippt werden, was mühsam und fehleranfällig war. Findige Programmierer machten sich deshalb Gedanken, wie man die Eingaben vereinfachen könnte. Der entscheidende Durchbruch kam mit der Erfindung der Maus als Eingabegerät, die in Verbindung mit einer grafischen Oberfläche – auch GUI (Graphical-User-Interface) genannt – die Bewegungen der Hand auf einem Monitor nachzeichnet. Das Konzept der GUIs stammt aus den 1970er Jahren, als an einem Forschungszentrum in Kalifornien, am Xerox PARC (Palo Alto Research Center), das Zusammenspiel von Maus und grafischer Benutzeroberfläche entwickelt wurde. Nach einem Besuch dieser Firma und von dieser Technologie inspiriert, hatte Steve Jobs, der damalige Firmenchef von Apple, eine Vision für seinen eigenen Computer. Er ließ ein grafisches Betriebssystem auf Grundlage dessen entwickeln, was er bei Xerox PARC gesehen hatte. Der ehemalige Chef von Microsoft, Bill Gates, hatte ebenfalls Wind von dieser bahnbrechenden Entwicklung bekommen und tat das Seine, um das heute vorherrschende Betriebssystem Windows aus der Taufe zu heben.

Warum erzähle ich dir das Ganze in einem Buch, in dem es eigentlich um eine alternative Programmiermöglichkeit geht, die anstelle von Quellcode über unzählige Zeilen eine grafische Komponente ins Spiel bringt? Nun, es gibt eine gewisse Parallele zu den damaligen Bestrebungen, die textbasierten Eingaben zur Verwaltung des Computers radikal zu revolutionieren und über eine grafische Oberfläche zu steuern. Wie lautete noch die Befehlssequenz zum Anlegen eines Ordners im Dateisystem? Hmm ... vergessen! Über ein grafisch orientiertes Betriebssystem ist das viel einfacher, denn die eigentlichen Befehle zum Anlegen des besagten Ordners z.B. auf dem Desktop verbergen sich hinter Piktogrammen, also kleinen Bildchen, bzw. Menüpunkten, die mit der Maus als Zeigeinstrument einfach ausgewählt werden. Für das Schreiben eines Programms ist das ähnlich gelagert. Fast jede Programmiersprache bietet für Einsteiger das allseits bekannte Hello World an. Es handelt sich dabei um ein komplett lauffähiges Minimal-Programm, das eine Nachricht in einem Konsolenfenster ausgibt und damit dem Entwickler signalisiert, dass er erfolgreich die ersten Schritte auf bisher unerforschtem Terrain beschritten hat. Da die meisten Sprachen ausschließlich textbasierte Befehlsfolgen in englischer Sprache akzeptieren, ist das für einen Einsteiger nicht immer ganz einfach, und die Berührungsängste sind hier und da sicherlich vorhanden. Was mag einem Noch-Nicht-Programmierer durch den Kopf gehen, der gewisse Bedenken verspürt:

Das ist meine erste Begegnung mit einer Programmiersprache. Was mag dabei wohl alles schiefgehen können?

Muss ich es mir antun, so viele Befehle zu lernen?

Ich habe Angst, dass ich scheitere und die Lust verliere.

Gibt es keinen einfacheren Weg, einen geeigneten Einstieg zu finden?

Ist der harte Weg immer der bessere?

Bin ich der Einzige, der solche Probleme hat, oder geht es anderen auch so?

Das mag sich auf den ersten Blick vielleicht etwas übertrieben anhören, doch ich habe zu Beginn meiner Leidenschaft für die Computer ähnliche Befürchtungen gehabt. Das bedeutet nicht zwangsläufig, dass jeder Einsteiger sich mit diesen Themen konfrontiert sieht. Sehen wir uns ein paar Hello-World-Beispiele in verschiedenen Programmiersprachen an, die für einen absoluten Neuling möglicherweise kryptisch anmutende Züge aufweisen:

Das Hello-World-Programm in der Programmiersprache C++

Abbildung 1 Das Hello-World-Programm in C++

Das Hello-World Programm in der Programmiersprache Java

Abbildung 2 Das Hello-World-Programm in Java

Das Hello-World Programm in Python

Abbildung 3 Das Hello-World-Programm in Python

Wenn du dir diese Vielfalt an Möglichkeiten anschaust, einen einfachen Text wie Hello World! auszugeben – und wir haben es hier lediglich mit 3 Varianten zu tun –, kann das schon recht verwirrend sein. Wie du siehst, besteht ein Programm aus einer Abfolge von Befehlen, die dem Computer sagen, was er tun soll. Jeder einzelne dieser Befehle muss sehr genau und akribisch formuliert bzw. eingegeben werden. Selbst die trivialsten Fehler in der Schreibweise werden nicht verziehen und gnadenlos mit Programmabbruch bzw. entsprechenden Kommentaren quittiert. Viele Programmiersprachen unterscheiden zusätzlich noch zwischen Klein- oder Großschreibung, was uns zeigt, dass auch hier sehr präzise gearbeitet werden muss. Lass dich dadurch jedoch nicht verunsichern, denn aller Anfang muss nicht unbedingt schwer sein. Wenn es darum geht, dir Grundkenntnisse der Informationsverarbeitung bzw. der Programmierung anzueignen, ist die visuell orientierte Programmiersprache Scratch genau richtig für dich. Nun ist es also heraus. Falls du den Titel dieses Buches aus irgendeinem Grund vergessen haben solltest, dann bist du jetzt wieder auf Kurs und weißt, worum es hier geht.

Im Verlauf des Buches wirst du einigen Grafiken bzw. Schriftzügen begegnen, die dir signalisieren sollen, was das Thema der folgenden Zeilen ist oder worauf du besonders achten solltest.

Info!

In den folgenden Zeilen findest du hilfreiche Zusatzinformationen, die zum Verständnis von Scratch beitragen sollen. Es können auch themenübergreifende Informationen vorkommen.

Wichtig

Ist eine Textpassage als Wichtig gekennzeichnet, solltest du diese Hinweise beherzigen.

Skript

Die folgenden Zeilen bzw. Grafiken beziehen sich auf die Skript-Programmierung.

Jetzt Du!

An dieser Stelle solltest du das gerade Gelernte anhand einer kleinen Übung praktisch nachvollziehen, damit du beurteilen kannst, ob du es verstanden hast.

Wenn du bei den Projekt-Kapiteln angelangt bist, findest du direkt unter dem Projektnamen verschiedene Grafiken, die dir zeigen mit welcher der verschiedenen Entwicklungsumgebung im jeweiligen Kapitel gearbeitet wird.

Scratch for Arduino (S4A) – http://s4a.cat/

MBlock von der Firma Makeblock – http://www.makeblock.cc/

Standard-Scratch-Logo. Auf dem Raspberry Pi mit dem Betriebssystem Debian Wheezy ist Scratch 1.4 vorinstalliert. Wir werden eine Erweiterung installieren, um elektronische Experimente durchführen zu können.

Was macht die Faszination von Scratch aus?

Was macht diese Sprache so interessant und attraktiv? Ich denke, dass jeder für sich einige Merkmale findet, warum es so faszinierend ist, mit Scratch die Zeit zu verbringen. Ich möchte die folgenden Aspekte der Programmiersprache hervorheben, die meiner Meinung nach gerade für Einsteiger einen entscheidenden Vorteil gegenüber herkömmlichen Sprachen bietet:

Scratch ist recht schnell zu erlernen und intuitiv zu bedienen

Scratch ist motivationssteigernd

Scratch ist kreativitätsfördernd

Scratch liefert in kurzer Zeit fantastische Resultate

Scratch fördert das selbstständige Arbeiten

Scratch wird dir sicherlich Spaß bereiten und etwas in dir wecken, von dem du vielleicht noch nicht weißt, dass es in dir steckt. Und dabei ist Scratch nicht nur etwas für Einsteiger und diejenigen, die das erste Mal mit Programmierung in Berührung kommen. Auch Erwachsene haben ihre Freude daran, und vielleicht gibt es den einen oder anderen Vater, der seinem Sohn oder seiner Tochter mithilfe von Scratch zeigen möchte, dass beim Programmieren der Faktor Spaß nicht zu kurz kommt.

Es geht nicht darum, eine vorgegebene Checkliste abzuarbeiten, nach der du beurteilt wirst. Wenn du zu den Beispielen hier im Buch eigene Ideen hast, ändere alles nach deinen Wünschen ab und gib deiner Kreativität Raum. Es gibt eigentlich nichts Schlimmeres, als wenn du streng nach Vorschrift alles hier Gezeigte abarbei-test und genau das tust, was ich vorgebe. Nimm die im Buch gezeigten Grundlagen, Techniken und Beispiele als Ausgangsbasis für weitere persönliche Forschungen und Experimente, dann wirst du sehr schnell erkennen, dass deine eigene Intuition dich dort hinführt, woran andere noch nicht einmal gedacht haben. Lass dich also überraschen.

Interessante Links zu Projekten

Um dich mit einigen interessanten Zusatzinformationen zu versorgen, die aus Platzgründen nicht mehr ins Buch passten, habe ich den Projekt-Kapiteln Links beige-fügt, die auf meine Internetseite verweisen. Hier und da sind auch einige Videos zu den Projekt-Kapiteln zu finden, die hoffentlich zum Verständnis beitragen. Es lohnt sich also, dort einmal reinzuschauen. Du findest am Ende der Projekte einen sogenannten QR-Code und noch einmal die ausgeschriebene URL. Eine Auflistung alles Links ist unter:

http://www.erik-bartmann.de/71-scratch-projekt-kapitel-uebersicht.html

zu finden.

Was nicht fehlen darf

Ich möchte mich sehr herzlich bei vielen Menschen bedanken, ohne die das vorliegende Buch sicherlich nicht oder nicht in dieser Form entstanden wäre. Zu Beginn möchte ich meinem Lektor Volker Bombien danken, der unermüdlich den Markt bzw. das Internet nach interessanten Neuerungen durchforscht, um mich mehr auf dem Laufenden zu halten. Auf diese Weise hat er maßgeblich zur Qualität des Buches beigetragen. Des Weiteren hat mich meine Familie regelmäßig sowohl mit flüssiger als auch fester Nahrung versorgt, so dass ich nicht Gefahr laufen konnte, irgendwann einmal leblos neben meinem Rechner bzw. unter einem Berg von Bauteilen zu liegen.

Schließlich einen großen Dank in Richtung des Fachgutachters Markus Ulsaß, der dem Buchprojekt mit Rat und Tat zur Seite stand. Wenn ich im Schreibfieber bin und mein Augenmerk lediglich auf der technischen Ebene liegt, kann es hier und da zu Textpassagen kommen, die ich im Nachhinein selbst nicht mehr verstehe. Wie sollte da erst ein Leser den Durchblick wahren? Gut, dass ich auf die Erfahrung einer versierten Korrektorin zugreifen konnte. Frau Dr. Dorothée Leidig hat mein Manuskript in die Mangel genommen, so dass daraus ein lesbares Buch entstanden ist.

Vielen Dank für die Hilfe! Es sind also viele Personen im Hintergrund tätig, ähnlich wie die Souffleusen in einer Theateraufführung. Man bekommt sie nie zu Gesicht, doch ihr Wirken macht sich an der Qualität des Stückes bemerkbar. Man kann und will nicht auf sie verzichten!

Vielen Dank für die großzügige Unterstützung

Ein Projekt wie das Schreiben eines Buches ist ohne eine entsprechende Unterstützung von außen in vielfacher Hinsicht kaum zu realisieren. In meiner Einleitung habe ich bereits die Menschen erwähnt, die mich kontinuierlich in meinem Schaffensprozess begleitet haben und noch begleiten. Daneben bin ich folgenden Personen bzw. Firmen zu Dank verpflichtet:

EXP-Tech

Vielen Dank an Herrn Yuan Wang von EXP-Tech, der mich sowohl mit seinem Fachwissen als auch mit diverser Hardware versorgt hat. Seine Internetseite ist unter www.exp-tech.de/ zu finden.

Makeblock

Ein herzliches Dankeschön an Christina Zhang und Alice Zhang von Makeblock, die mir beide ihre ungeteilte Aufmerksamkeit bei Fragen und Problemen geschenkt haben. Ohne ihr Fachwissen und das mir entgegengebrachte Engagement wäre ich nicht in der Lage gewesen, meine Projekte in dieser Form umzusetzen.

Abacom

Auf der Suche nach einer Software zur Erstellung der im Buch verwendeten Schaltpläne bin ich auf die Firma Abacom gestoßen. Auf Nachfrage hat man mir den Schaltplan-Designer sPlan 7.0 zur Verfügung gestellt. Ich habe noch keinen Designer dieser Art kennengelernt, mit dem ich schneller und einfacher meine Schaltpläne erstellt hätte. Die Bedienung ist derart einfach und intuitiv, dass es mir sehr viel Spaß bereitet hat, damit zu arbeiten. Einen herzlichen Dank dafür. Nähere Informationen findest du unter der Internetadresse http://www.abacom-online.de/

National Instruments

Vielen Dank an Frau Eva Heigl von der Firma National Instruments, die mir erlaubt hat, das Programm NI Multisim in der Version 10 zu verwenden. Mit dieser Hilfe war es mir möglich, von einigen Schaltungssimulationen Screenshots zu erstellen und im Buch zu verwenden. Die URL für

Ich wünsche dir nun viel Spaß und Erfolg beim Physical Computing mit Arduino, Raspberry Pi und Co. mit Scratch.

Kapitel 1. Was ist Scratch?

Wir starten schon in diesem Kapitel mit kleinen interessanten Projekten, die sich sowohl mit der Programmierung als auch mit der Elektronik befassen. Auf diese Weise durchbreche ich die übliche Vorgehensweise, die zuerst vollständig die Grundlagen vermittelt, um dann darauf aufbauend einige Beispiele zu liefern. Es ist in meinen Augen viel interessanter, wenn man direkt mit etwas Greifbarem konfrontiert wird, das einem das gute Gefühl verleiht, sofort in die Thematik eingestiegen zu sein. Dabei kommt es keinesfalls zu gravierenden Wissenslücken, die lediglich Frust nach sich ziehen, denn alle wichtigen Grundlagen, die für die jeweiligen Beispiele von Bedeutung sind, werden dir rechtzeitig vermittelt. Im Anschluss an die Projekt-Kapitel werde ich dich mit weiterem Grundlagenwissen versorgen, das die ganze Sache abrundet. Das Elektronik-Kapitel ist quasi das i-Tüpfelchen, das mögliche aufgekommene Fragen beantwortet. Zudem verweise ich im Verlauf des Buches immer wieder mal auf dieses Kapitel, so dass du ggf. schnell mal dort nachschlagen kannst, um Erinnerungslücken zu füllen. Also mach dir keine Sorgen, denn alles, was du zur erfolgreichen Bearbeitung der zahlreichen Projekte benötigst, seien sie klein oder etwas größer, wirst du zum richtigen Zeitpunkt erfahren.

Jetzt ist es aber an der Zeit, ein paar Worte über eine Programmiersprache zu verlieren, mit der du ohne eine einzige Zeile Programmcode deinen Arduino ansprechen bzw. steuern kannst. Später werden wir noch andere Boards wie z.B. den Raspberry Pi oder das PicoBoard unter die Lupe nehmen. Für jemanden, der sich schon ein wenig mit der Programmierung des Arduino befasst hat, ist das vielleicht völlig fremd, denn um eine Kommunikation mit dem Arduino zu ermöglichen, ist norma-lerweise eine sogenannte Entwicklungsumgebung erforderlich, in der Zeile für Zeile die Befehle eingegeben werden müssen, die im Detail beschreiben, was der Arduino überhaupt tun soll. Ich zeige dir an dieser Stelle am besten einmal die Entwicklungsumgebung, so dass du eine ungefähre Vorstellung davon bekommst, was ich überhaupt meine.

Abbildung 1.1 Ein Sketch für den Arduino lässt eine angeschlossenen Leuchtdiode blinken

Das Ganze schaut aus wie ein Texteditor, den du sicherlich in jedem Betriebssystem vorfindest. Und dennoch ist es hier ein wenig anders. In dieser Entwicklungsumgebung kannst du mithilfe eines sehr umfangreichen Befehlssatzes Kommandos an deinen Arduino versenden. Um die ganze Bandbreite der Möglichkeiten auszuschöpfen, wäre es sicherlich gut, nahezu alle Befehle zu kennen. Ein Programm, das im Arduino-Umfeld Sketch genannt wird, setzt sich in der Regel aus vielen einzelnen Befehlen bzw. Programmstrukturen zusammen. Um eine bessere Übersicht zu erlangen, sind die Befehle farblich gekennzeichnet, was Syntax Highlighting genannt wird. So kannst du sofort erkennen, was wo an welcher Stelle im Code steht. Durch das Eintippen der Befehle besteht natürlich immer die potenzielle Gefahr, dass du dich vertippst und der Sketch dann nicht ausgeführt werden kann, weil der Compiler, der den eingegebenen Quellcode in Maschinensprache übersetzt, die Vorgaben an der fehlerhaften Stelle nicht versteht. Es kann also gerade am Anfang der Lern-phase recht viel schiefgehen. Das muss nicht unbedingt schlecht sein, denn über Fehler lernt man bekanntlich am meisten. Was genau ein Compiler ist, wirst du im Kapitel über den Arduino noch kennenlernen. Hier sei vorläufig nur gesagt, dass es sich um ein Programm handelt, das die für den Menschen lesbaren Befehle – auch wenn sie auf Englisch sind – in eine für den Arduino verstehbare Sprache übersetzt. In diesem Buch möchte ich aber einen anderen Ansatz der Programmierung vorstellen, der ohne eine einzige Zeile Programmcode auskommt, ich sagte es bereits. Wie soll das funktionieren, wirst du dich möglicherweise fragen, der Arduino muss doch irgendwie seine Instruktionen bekommen, ansonsten ist er nichts weiter als ein nettes Stück Hardware ohne nennenswerten Sinn.

Die Programmiersprache Scratch

Es gibt eine Programmiersprache mit Namen Scratch, die als freie Sprache von der Longlife Kindergarten Group (http://llk.media.mit.edu/) am MIT (Massachussetts Institute of Technology) entwickelt wurde, um einen leichten Einstieg in die Programmierung zu ermöglichen und dabei der Kreativität freien Lauf zu lassen. Du kannst z.B. Animationen erstellen, um sie in einer Geschichte interaktiv zu beeinflussen. Wenn du eine Idee für ein Spiel hast, ist Scratch eine wunderbare Spielwiese, um sich darauf auszutoben und zu sehen, was alles machbar ist. Bist du mit deinem Ergebnis zufrieden, kannst du deine Kreativität im Web präsentieren und darüber auf dich aufmerksam machen. Ich habe den folgenden Wortlaut bei Wikipedia gefunden, was mir schon ein gewisses Schmunzeln entlockte:

Scratch ist eine ... erziehungsorientierte visuelle Programmiersprache für Kinder und Jugendliche inklusive ihrer Entwicklungsumgebung ...

Erziehungsorientiert! Hmm, das klingt sehr nach Schule, Druck und möglicherweise viel Stress. Wer denkt sich so etwas aus? Intuitionsorientiert hört sich irgendwie treffender an. Sei’s drum. Ich kann dir jedenfalls sagen, dass du in diesem Buch nicht das Gefühl bekommen wirst, etwas gegen deinen Willen machen zu müssen. Gerade im Betätigungsfeld als Programmierer kannst du deiner Kreativität freien Lauf lassen, und es ist fast alles möglich. Alleine deine Befürchtung, dass etwas nicht so funktionieren wird, wie du es erhoffst, wird dich daran hindern, es zu tun. Ich erinnere mich an den sehr treffenden Spruch: Alle sagten, dass es nicht geht. Bis einer kam und es machte! Sicherlich wirst du gerade am Anfang hier und da auf Hinder-nisse stoßen und vielleicht auch ein wenig fluchen. Aber das ist ein ganz normaler Prozess, den jeder beim Erlernen und beim Umgang mit neuen bzw. unbekannten Themen durchläuft. Sieh es als ein Spiel an, das nicht so tierisch ernst genommen wird. Gerade die Leichtigkeit, mit der du an deine Projekte herangehst, wird dich weiter nach vorne bringen, und die stetige Übung leistet ihren Beitrag, damit du mithilfe unterschiedlicher Techniken und Denkansätze mit Freude zum Ziel gelangst. Was ist an der Art und Weise, wie du mit Scratch zum Ziel gelangst, so anders als mit anderen Programmiersprachen? Es ist der spielerische Ansatz, der dem Ganzen durch den Einsatz vieler grafischer Elemente eine besondere Note verleiht.

Ich möchte dir jetzt schon einmal die Oberfläche von Scratch in der Version 2 zeigen, auf die wir natürlich im weiteren Verlauf des Buches noch eingehen werden. Die Entwicklung findet dabei komplett innerhalb eines Web-Browsers statt. Scratch in der Version 2 wurde im Gegensatz zu Vorgängerversionen, die als Stand-alone-Applikationen liefen, komplett in Flash programmiert, so dass der Download und die nachfolgende Installation entfallen. Also eine sehr bequeme Angelegenheit. Da die Web-Browser-Landschaft jedoch etwas umfangreicher ist, habe ich die drei wichtigsten Vertreter aufgelistet, und wir sollten einen Blick auf die Systemvoraussetzungen für Scratch 2 werfen:

Chrome 7 oder später

Firefox 4 oder später

Internet Explorer 7 oder später

Alle Browser müssen über den Adobe Flash-Player 10.2 oder später verfügen, denn wie ich schon sagte, ist das neue Scratch in Flash programmiert. Die Bildschirmauflösung muss mindestens 1024 x 768 betragen. Ich denke, dass die meisten Monitore bzw. TFT-Displays dieser Anforderung genügen und deshalb nicht auf die Vorgängerversion 1.4 ausgewichen werden muss. Dennoch werden wir eine ältere Scratch-Version auf dem Raspberry Pi verwenden, auf die Gründe gehe ich zu gegebener Zeit ein.

Die Scratch-2-Oberfläche

Du musst lediglich die Internetadresse http://scratch.mit.edu/projects/editor/ in deinen Browser eingeben und schon kannst du loslegen.

Was fällt dir auf Anhieb hier auf? Nun, es ist, wie ich schon angekündigt habe, alles auf Grafik basierend. Du musst nicht eine einzige Zeile Code eingeben! Die Oberfläche ist in unterschiedliche Bereiche unterteilt, die logisch voneinander getrennt sind und jeweils ihre eigenen Funktionalitäten vorweisen. Alles ist für eine sehr intuitive Arbeit vorbereitet, so dass auch Nicht-ITler in kürzester Zeit zu fantastischen Ergebnissen kommen. Da gibt es z.B. eine sogenannte Bühne, auf der sich alle sichtbaren Aktivitäten abspielen; im Moment wird sie noch von der orangefarbenen Katze auf der großen weißen Fläche in Beschlag genommen.

Abbildung 1.2 Die Scratch-2-Entwicklungsumgebung

Ein Objekt auf der Bühne wird in Scratch Figur genannt. Was die Akteure auf der Bühne für eine Show abziehen, wird durch Skripte gesteuert, die dem Computer bzw. Scratch mitteilen, was passieren soll. Diese Skripte setzen sich aus den unterschiedlichsten Blöcken zusammen, die du hier als Beispiel in der geöffneten Block-Palette Bewegung siehst und die dunkelblau gekennzeichnet sind. Andere Block-Paletten in anderen Kategorien sind mit anderen Farben gekennzeichnet und dadurch optisch gut zu unterscheiden. Die einzelnen Blöcke erinnern an Puzzleteile, die an gewissen Stellen Nasen und Lücken besitzen und über eine Einschnappfunktion beim Zueinanderführen automatisch eine Einheit bilden. Die Tipp-Rate über die Tastatur wird dadurch auf ein Minimum gesenkt, und du musst tatsächlich nur etwas schreiben, wenn du z.B. Parameter anpasst oder Texte eingibst. Dabei kann es nicht dazu kommen, dass das erstellte Programm bzw. Skript abstürzt, weil du vielleicht einen Fehler in der Programmierung eingebaut hast. Das schließt jedoch nicht die logischen Fehler aus, die dazu führen, dass der Ablauf nicht in der geplanten Weise erfolgt. Bevor ich zu einem ersten Beispiel komme, möchte ich dir die grundlegende Technik zeigen, die bei einer oder mehreren Figuren zum Einsatz kommt. Jeder Figur und sogar auch dem Bühnenbild sind drei unterschiedliche Bereiche zugeordnet. Sehen wir uns dazu die folgende Abbildung an:

Abbildung 1.3 Zwei Figuren und ein Bühnenbild

Damit die einzelnen Figuren, die du auf der Bühne platzierst, und auch das Bühnenbild (Hintergrund), eigenständig und unabhängig voneinander agieren können, erhält jedes Objekt folgende separate Bereiche für:

Skripte

Kostüme – sichtbar bei einer Figur

Bühnenbilder – sichtbar bei einem Bühnenbild

Klänge

Hast du eines der Objekte in der Figurenliste bzw. das Bühnenbild mit der Maus ausgewählt, kannst du über bestimmte Tabulatoren am oberen Rand des Skript-Bereiches in die Bereiche wechseln, um sie mit gewünschten Aktionen bzw. Informationen zu versehen.

Die Tabulatoren für Figuren

Die Tabulatoren für die Bühne

Ein erstes Beispiel

Zum Einstieg schlage ich vor, ein kleines Beispiel für eine Animation zu program-mieren, in dem wir die Katze auf der Bühne einige Schritte gehen lassen.

Abbildung 1.4 Die Katze von links nach rechts bewegen

Wenn du einen Block aus einer Block-Palette in den Skript-Bereich übernehmen möchtest, klicke den gewünschten Block mit der linken Maustaste an und halte ihn gedrückt. Zieh dann den Block nach rechts in den Skript-Bereich und lass ihn dort los.

Abbildung 1.5 Hinzufügen eines Blocks per Drag & Drop in den Skript-Bereich

Möchtest du, dass mehrere Blöcke hintereinander ausgeführt werden, müssen sie miteinander verbunden werden. Du gehst wie folgt vor:

Den anzufügenden Block an den schon vorhandenen annähern

Halte die linke Maustaste gedrückt und nähere dich von unten langsam an den oberen Block an.

Annäherung wurde erkannt

Wenn du einen bestimmten Abstand unterschritten hast, meldet Scratch eine bevorstehende Kontaktaufnahme und unterhalb des oberen Blocks erscheint eine weiße Linie.

Verbindung herstellen

Jetzt kannst du die linke Maustaste loslassen, und der untere Block schnappt auto-matisch ein, so dass eine Verbindung hergestellt wurde. Eine 100% exakte Positionierung ist also nicht notwendig.

Wenn du den gerade angefügten Block wieder entfernen möchtest, zieh ihn mit gedrückter linker Maustaste zurück auf die Block-Palette. Bei mehreren zu entfernenden Blöcken musst du den obersten Block zurück auf die Block-Palette ziehen. Alle darunterhängenden Blöcke werden automatisch mitgezogen. Du verstehst das Verhalten der Blockverschiebungen bzw. -löschungen am besten, wenn du es einfach ausprobierst.

Info!

Blöcke, die programmtechnisch nicht zusammenpassen, werden auch nicht einschnappen. Darüber hast du eine wunderbare visuelle Rückmeldung, welche Blöcke du miteinander kombinieren kannst und welche nicht.

Jetzt Du!

Verbinde einige Blöcke miteinander und versuche, sowohl einen einzelnen als auch mehrere vom Gesamtblock zu separieren. Führe diese Aktionen mit unterschiedlichen Konstellation durch, so dass du ein Gefühl für das Verhalten bekommst.

Skript

Ich möchte mit einem kurzen Skript die Katze auf der Bühne um drei Positionen – je 100 Pixel – nach rechts wandern lassen, wobei zwischen den Positionswechseln eine Pause von 2 Sekunden eingelegt werden soll. Die Aktion soll beginnen, wenn die grüne Start-Flagge angeklickt wird. Das sind klare Vorgaben, und wir wollen sehen, wie wir das umsetzen. Wie ich schon kurz erwähnte, gibt es unterschiedliche Block-Paletten. Wir müssen uns bei der Realisierung der Vorgabe aus 3 Paletten bedienen.

Abbildung 1.6 Welche Blöcke werden benötigt?

Um einen definierten Startpunkt für unsere Bewegung auf der Bühne festzulegen, ziehen wir uns aus der Palette Ereignisse auf den Block, auf dem die grüne Flagge zu sehen ist. Wird sie angeklickt, startet das Skript. Die Animation auf der Bühne soll in bestimmten Schritten erfolgen, so dass der Verdacht naheliegt, einen Blick in die Kategorie Bewegung zu werfen. Dort findest du den blauen Gehe-Block, der hinsichtlich der Schrittweite noch von dir angepasst werden muss. Klicke auf die Zahl 10, die die standardmäßige Schrittweite in Pixeln ist, und trage dort den Wert 100 ein. Anschließend ist eine kurze Pause von 2 Sekunden vorgesehen. Die Kategorie Steue-rung stellt uns u.a. den gelben Warte-Block zur Verfügung, den du wie bei der vorherigen Bewegung anpassen musst, damit der Pausenwert von 2 Sekunden erreicht wird. Um sich wiederholende Aktionen programmtechnisch besser und flexibler zu gestalten, gibt es sogenannte Schleifen. Natürlich werden wir im späteren Verlauf der Kapitel näher darauf eingehen, doch ich zeige dir hier schon einmal das Konstrukt.

Abbildung 1.7 Eine Schleife in Scratch

Der Wiederhole-Block aus der Palette Steuerung gruppiert die in ihm platzierten Blöcke Gehe und Warte und bildet darüber eine Einheit. In diesem Fall wird sie über den Parameter dreimal ausgeführt und die Abfolge immer wiederkehrender wird Aktionen vereinfacht. Um ein Skript zu starten, klickst du auf die grüne Fahne, die dann ein internes Ereignis auslöst, das die Skript-Verarbeitung anstößt. Du kannst das entweder über einen Mausklick auf die Fahne am linken oberen Rand des Editors machen oder über einen Klick auf die Fahne des entsprechenden Blocks.

Abbildung 1.8 Das Skript in Scratch starten

Wichtig

Damit dieses Buch nicht den Touch eines Lehrbuchs bekommt, das man von oben nach unten liest, um alle Details nacheinander zu verstehen bzw. abzuarbeiten, werde ich die einzelnen Themen nicht strikt chronologisch herunterspulen. Gerade wenn es um die vielfältigen Blöcke geht, die in den Paletten zu finden sind, ist es sicherlich eine sehr trockene Angelegenheit, erst alle Details zu ihrer Funktionalität zu besprechen, um anschließend ein paar Beispiele zu präsentieren. So werde ich hier und da ein wenig vorgreifen. Keine Sorge, du wirst nicht auf der Strecke bleiben, weil dir Informationen fehlen; ich werde alle Schritte ausführlich besprechen.

Du hast übrigens eine optische Rückmeldung, die dir signalisiert, ob ein Skript gestoppt oder gestartet wurde.

Abbildung 1.9 Der Skript-Status

Bei einem nicht ausgeführten Skript – hier links in der Abbildung – siehst du die ganz normale Blockerscheinung. Wurde ein Skript gestartet, erkennst du das an der glühenden Umrandung – rechts in der Abbildung –, die die Blöcke einhüllt. Das ist manchmal recht hilfreich. Ich hatte schon einige Fälle, wo sich trotz vermeintlich richtiger Programmierung nichts auf der Bühne bewegte und ich mich fragte: Habe ich das Skript wirklich gerade gestartet? Natürlich hatte ich einen logischen Fehler eingebaut, aber auf dieser Weise erkannte ich, dass die Verarbeitung dennoch lief.

Wenn du ein wenig mit Scratch arbeitest bzw. spielst, wirst du möglicherweise zum Schluss gelangen, dass ich bisher etwas am Thema vorbeigeredet habe, denn was hat die ganze Angelegenheit von Scratch 2 mit dem Arduino zu tun? Da muss ich dir in gewisser Weise zustimmen, denn in der Online-Version über einen Browser kann Scratch 2 nicht mit einem Arduino kommunizieren. Also sollte ich die Sache hier und jetzt beenden. Was steht dann wohl auf den restlichen Seiten des Buches? Rezepte für fettfreies Kochen? Nein, natürlich nicht, denn es gibt hier unterschiedliche Ansätze, die wir uns einmal anschauen wollen. Wir starten mit S4A und fahren dann mit MBlock fort. Was sich dahinter verbirgt, wirst du gleich sehen, denn für die verschiedenen Möglichkeiten werde ich natürlich auch ein paar Beispiele bringen. In den einzelnen Projekt-Kapiteln kannst du anhand des entsprechenden Logos erkennen, mit welchem Ansatz die Umsetzung erfolgt.

S4A

Unter der Bezeichnung S4A, was die Abkürzung für Scratch for Arduino ist, haben einige Entwickler aus Spanien eine Vorgängerversion von Scratch angepasst und für die Kommunikation mit dem Arduino Diecimila, Duemilanove und Uno vorbereitet. Es handelt sich hierbei nicht um eine Online-Version, die innerhalb des Web-Browsers läuft, sondern um eine Stand-alone-Version, die auf deinem Rechner installiert werden muss. Das stellt jedoch absolut kein Problem dar und ist im Handumdrehen erledigt. Vielleicht fragst du dich, warum du nicht mit Scratch 2 arbeiten kannst, denn Scratch ist doch Scratch. Nun ja, nicht ganz. Einer Web-Anwendung wird hinsichtlich einiger wichtiger Sicherheitsaspekte kein Zugriff auf bestimmte Ressourcen deines Rechners gewährt, und das ist auch gut so, denn andernfalls würde dies ein massives Risiko bedeuten.

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!