<html> <time datetime=„2018-11-25“>heute</time> Bernd Heisterkamp <figure class=„aufmacherbild“><img src=„https://heise.cloudimg.io/width/1280/tjpg.q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/Aufmacher_Calliope-215ba456a4f3598a.jpeg“ alt=„Verschiedene Ansichten der Christbaumanhänger mit Calliope“/></figure><p class=„lead_text“>Ein – oder besser mehrere – Calliope mini sorgen mit Aluminiumrohren und einer ausgefeilten Programmierung für weihnachtliche Musik im Wohnzimmer.</p><p>Zu Weihnachten gehört festliche Musik wie Lebkuchen, Mandarinenteller und Geschenke. Wer sich lieber nicht mit der Blockflöte vor den Tannenbaum stellen, aber gerne etwas selbst machen möchte, sollte unser Glockenspiel mit dem Mikrocontroller Calliope mini bauen.</p> <figure class=„rteinlinebild akwa-inline-img rtepos_right col-lg-6 col-md-6 col-sm-6 col-xs-12 akwa-inline–right“ is=„a-grossbild“><a class=„grossbild cbox_gallery akwa-inline-imglink“ data-content-type=„image“ data-grossbildsrc=„/make/imgs/76/2/5/3/9/8/4/1/01-Calliope_Glockenspiel_Uebersicht-d899a1a7ea0c1313.JPG“ href=„https://m.heise.de/make/artikel/Weihnachtsprojekt-Verteiltes-Glockenspiel-mit-mehreren-Calliope-Mini-4219883.html?view=zoom;zoom=16“><img alt=„Zwei Calliope mini mit Glockenspiel-Anhänger“ src=„https://heise.cloudimg.io/width/3648/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/01-Calliope_Glockenspiel_Uebersicht-d899a1a7ea0c1313.JPG“ srcset=„https://heise.cloudimg.io/width/7296/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/01-Calliope_Glockenspiel_Uebersicht-d899a1a7ea0c1313.JPG 2x“ class=„c1“/></a></figure><p>Die Christbaumanhänger machen Musik, indem sie Klöppel gegen Aluminiumrohre schlagen. Jeder Anhänger hat dabei zwei unterschiedlich lange Rohre und kann somit zwei unterschiedliche Töne erzeugen. Durch Variation der Rohrlängen der Anhänger kann die ganze Tonleiter abgedeckt werden. Ein beliebiger Calliope versendet die Tonfolge im Takt der Musik per Bluetooth, die alle anderen empfangen. Nur die Calliopes, die den aktuellen Ton als ihren eigenen erkennen, spielen diesen dann über den Klöppelschlag ab. Je mehr Calliopes beteiligt sind, desto schöner kann die Melodie über den ganzen Weihnachtsbaum verteilt werden.</p> <p>Dieses Projekt richtet sich an Lehrkräfte oder Eltern, die einer Gruppe von Kindern das Programmieren näher bringen möchten. Neben dem Programmieren von Mikrocontroller und Servo gilt es, mit der Laubsäge zu arbeiten und etwas über Musik zu lernen. Beginnend mit einem einfachen Programm werden zunehmend komplexere Funktionen verwendet, von Schleifen über Arrays bis hin zu Funktionen und Text-String-Analyse, was etwas Erfahrung mit der PXT-Blocksprache bedarf.</p> <div class=„rtetextbox akwa-inline-textbox col-lg-12 col-md-12 col-sm-12 col-xs-12“> <h4>Kurzinfo</h4> <h4>Material pro Anhänger</h4> <ul><li>ein Calliope mini</li> <li>Batteriefach mit 2× AA-Batterien<br/></li> <li>Aluminiumrohr (Ø 14,8 mm, 1 mm Wandstärke), Länge je nach gewünschten Tonhöhen<br/></li> <li>Sperrholz (3 mm dick)</li> <li>ein Holzstab (90 mm lang)<br/></li> <li>eine M5-Schraube (60 mm lang, flacher Kopf)</li> <li>zwei Schrauben mit Unterlegscheiben und Muttern<br/></li> <li>Schrumpfschlauch (mind. 30 mm)<br/></li> <li>etwas Schnur, möglichst transparent</li> </ul><p><strong>Checkliste:</strong></p> <ul><li><strong>Zeitaufwand:</strong> 1 bis 2 Stunden für den Zusammenbau<br/></li> <li><strong>Kosten:</strong> 50 Euro<br/></li> <li><strong>Holzbearbeitung:</strong> einfache Sägearbeiten<strong><br/></strong></li> <li><strong>Programmieren:</strong> Calliope-MakeCode-Editor<br/></li> </ul></div> <noscript readability=„1“> <p><em>Bei Problemen mit der Wiedergabe des Videos aktivieren Sie bitte JavaScript</em></p> </noscript> <figure class=„video video–fullwidth akwa-inline-video player“><div class=„kaltura-video-container kaltura-player-shell js-player-dummy-play-button“><img alt=„Drei Anhänger, zwei mit Calliope, einer mit BBC micro:bit“ class=„kaltura-player-shellpreview-image c1“ src=„https://heise.cloudimg.io/width/1080/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/make/imgs/76/2/5/4/7/7/0/3/Glockenspiel_Calliope_1-dd63be0b198cbfe7.jpg“ srcset=„https://heise.cloudimg.io/width/2160/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/make/imgs/76/2/5/4/7/7/0/3/Glockenspiel_Calliope_1-dd63be0b198cbfe7.jpg 2x“/></div> </figure> <p>Die Anhänger werden aus 3 mm dicken Sperrholz geschnitten. Wer Zugang zu einem Lasercutter hat, kann die Sterne mit ausschneiden, bei der Arbeit mit einer Laubsäge sollten sie aufgemalt werden. Wichtig ist, die Aussparungen für den Servo und die Befestigungsschrauben des Calliope genau zu sägen, bzw. zu bohren.</p> <figure class=„rteinlinebild akwa-inline-img akwa-inline-img col-lg-12 col-md-12 col-sm-12 col-xs-12“ is=„a-grossbild“><a class=„grossbild cbox_gallery akwa-inline-imglink“ data-content-type=„image“ data-grossbildsrc=„/make/imgs/76/2/5/3/9/8/4/1/02-Calliope_Glockenspiel_Material-3e730efd5cac7fad.JPG“ href=„https://m.heise.de/make/artikel/Weihnachtsprojekt-Verteiltes-Glockenspiel-mit-mehreren-Calliope-Mini-4219883.html?view=zoom;zoom=17“><img alt=„Bauteile des Glockenspiels mit Calliope mini“ src=„https://heise.cloudimg.io/width/5472/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/02-Calliope_Glockenspiel_Material-3e730efd5cac7fad.JPG“ srcset=„https://heise.cloudimg.io/width/10944/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/02-Calliope_Glockenspiel_Material-3e730efd5cac7fad.JPG 2x“ class=„c1“/></a> <figcaption class=„rteinlinebild_source akwa-caption“>Alle benötigten Teile</figcaption></figure><p>In die Bohrung über der langen Aussparung des Anhängers wird quer ein Holzstab von etwa 90 mm Länge eingeklebt, an diesem Holzstab werden die Klangkörbe befestigt. Einkerbungen oder kleine Bohrungen am Ende des Holzstabs dienen der Fixierung der Befestigungsschnur.</p> <figure class=„rteinlinebild akwa-inline-img akwa-inline-img col-lg-12 col-md-12 col-sm-12 col-xs-12“ is=„a-grossbild“><a class=„grossbild cbox_gallery akwa-inline-imglink“ data-content-type=„image“ data-grossbildsrc=„/make/imgs/76/2/5/3/9/8/4/1/03-Calliope_Glockenspiel_Aufhaengung-feb34397e152f987.jpeg“ href=„https://m.heise.de/make/artikel/Weihnachtsprojekt-Verteiltes-Glockenspiel-mit-mehreren-Calliope-Mini-4219883.html?view=zoom;zoom=18“><img alt=„Holzstab neben Metallrohren“ src=„https://heise.cloudimg.io/width/2000/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/03-Calliope_Glockenspiel_Aufhaengung-feb34397e152f987.jpeg“ srcset=„https://heise.cloudimg.io/width/4000/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/03-Calliope_Glockenspiel_Aufhaengung-feb34397e152f987.jpeg 2x“ class=„c1“/></a> <figcaption class=„rteinlinebild_source akwa-caption“>Die Aufhängung der Metallrohre</figcaption></figure><p>Die Klangkörper werden von einem Aluminiumrohr abgesägt, die Länge und Dicke des Rohrs beeinflusst die Tonhöhe, je kürzer das Rohr, desto höher der Ton. In der Tabelle seht ihr, welche Längen von einem 14,8 mm dicken Rohr mit 1 mm Wandstärke für die Grundtöne der Tonleiter abgeschnitten werden müssen. Wer ein anderes Metallrohr nimmt, kann die richtigen Längen ausrechnen.</p> <p><table class=„rtetable table akwa-inline-tabletable“><tbody><tr><td class=„c2“><strong>Ton</strong></td> <td class=„c2“><strong>Frequenz</strong></td> <td class=„c2“><strong>Länge</strong></td> </tr><tr><td class=„c2“>e</td> <td class=„c2“>659,255</td> <td class=„c2“>374</td> </tr><tr><td class=„c2“>d</td> <td class=„c2“>587,33</td> <td class=„c2“>397</td> </tr><tr><td class=„c2“>c</td> <td class=„c2“>523,251</td> <td class=„c2“>420</td> </tr><tr><td class=„c2“>h</td> <td class=„c2“>493,883</td> <td class=„c2“>433</td> </tr><tr><td class=„c2“>a</td> <td class=„c2“>440</td> <td class=„c2“>458</td> </tr><tr><td class=„c2“>g</td> <td class=„c2“>391,995</td> <td class=„c2“>486</td> </tr><tr><td class=„c2“>f</td> <td class=„c2“>349,228</td> <td class=„c2“>514</td> </tr><tr><td class=„c2“>e</td> <td class=„c2“>329,625</td> <td class=„c2“>529</td> </tr><tr><td class=„c2“>d</td> <td class=„c2“>293,665</td> <td class=„c2“>561</td> </tr><tr><td class=„c2“>c</td> <td class=„c2“>261,626</td> <td class=„c2“>594</td> </tr></tbody></table></p> <figure class=„rteinlinebild akwa-inline-img rtepos_right col-lg-6 col-md-6 col-sm-6 col-xs-12 akwa-inline–right“ is=„a-grossbild“><a class=„grossbild cbox_gallery akwa-inline-imglink“ data-content-type=„image“ data-grossbildsrc=„/make/imgs/76/2/5/3/9/8/4/1/18_Bild_FFT-a950ccaa362464b2.jpg“ href=„https://m.heise.de/make/artikel/Weihnachtsprojekt-Verteiltes-Glockenspiel-mit-mehreren-Calliope-Mini-4219883.html?view=zoom;zoom=34“><img alt=„Screenshot FFT“ src=„https://heise.cloudimg.io/width/478/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/18_Bild_FFT-a950ccaa362464b2.jpg“ srcset=„https://heise.cloudimg.io/width/956/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/18_Bild_FFT-a950ccaa362464b2.jpg 2x“ class=„c1“/></a></figure><p>Dazu nutze ich die Gleichung: L <em>= √(A / f )</em> <a href=„https://www.instructables.com/id/Copper-pipe-glockenspiel/“ rel=„external“ target=„_blank“>nach einem Instructables-Projekt</a>. <em>L</em> ist die Rohrlänge und <em>f</em> die gewünschte Frequenz. <em>A</em> ist eine Konstante, die nur sehr schwierig zu berechnen ist, aber leicht gemessen werden kann. Nach Umformung kommt man auf die Gleichung <em>A = f L2</em>. Kennt man die Schwingungsfrequenz einer bestimmten Rohrlänge, kann man so <em>A</em> bestimmen. Zum Glück hat heute jeder einen Frequenzanalysator in der Hosentasche, ladet dazu eine App zur Fast Fourier Transformation (FFT) auf euer Handy (z.B. <a href=„https://itunes.apple.com/de/app/fftwave/id1080227446?mt=8“ rel=„external“ target=„_blank“>FFTWave für iOS</a>).</p> <p>Geht nun wie folgt vor:</p> <ol class=„rtelist rtelist–ordered“><li>Sägt ein Rohr von 50 cm Länge ab, hängt es einer dünnen Perlonschnur auf und bringt es mit einem Stab zum Erklingen.</li> <li>Sobald der Klang etwas abgeklungen ist, startet die App und speichert das gemessene Spektrum (siehe Bild).</li> <li>Die niedrigste Frequenz sollte der Grundschwingung entsprechen, im Beispiel 495,3Hz.</li> <li>Berechnet <em>A = f L²</em>, hier <em>495,3 Hz × (50 cm)² = 1 238 250 cm²/s</em><br/></li> <li>Wählt den gewünschten Ton (z.B. <em>a = 440 Hz</em>) und berechnet die Rohrlänge gemäß <em>L = √(A / f)</em>, also <em>L = √(1 238 250/440) = 53 cm</em></li> </ol> <p>Als Klöppel nehmt ihr eine M5-Schraube. Sie wird über einen Schrumpfschlauch mit dem Ruderhorn verbunden. Dazu gebt ihr einen Tropfen Alleskleber auf das Horn, stülpt ca. 30 mm Schlauch darüber und führt auf der offenen Seite die Schraube hinein. Die Schraube darf das Ruderhorn nicht berühren, sondern es müssen etwa 5 mm Abstand bleiben, dadurch kann die Schraube etwas über die Endposition des Servos hinausschwingen und das Rohr ganz kurz antippen. Den Schrumpfschlauch mit Haar- oder Heißluftfön bearbeiten, bis er das Gewinde der Schraube und das Ruderhorn so stark einquetscht, dass diese nicht mehr rausrutschen können. Der Schrumpfschlauch hat sich als optimal herausgestellt, da er genügend Stabilität bietet, die Schraube über den Servo zu bewegen, aber gleichzeitig ein Schwingen der Schraube ermöglicht.</p> <figure class=„rteinlinebild akwa-inline-img akwa-inline-img col-lg-12 col-md-12 col-sm-12 col-xs-12“ is=„a-grossbild“><a class=„grossbild cbox_gallery akwa-inline-imglink“ data-content-type=„image“ data-grossbildsrc=„/make/imgs/76/2/5/3/9/8/4/1/04-Calliope_Glockenspiel_Kloeppel-c1c3414d5c30a5d2.jpeg“ href=„https://m.heise.de/make/artikel/Weihnachtsprojekt-Verteiltes-Glockenspiel-mit-mehreren-Calliope-Mini-4219883.html?view=zoom;zoom=19“><img alt=„Metallklöppel aus Schraube, Schrumpfschlauch und Rotorhorn“ src=„https://heise.cloudimg.io/width/2000/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/04-Calliope_Glockenspiel_Kloeppel-c1c3414d5c30a5d2.jpeg“ srcset=„https://heise.cloudimg.io/width/4000/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/04-Calliope_Glockenspiel_Kloeppel-c1c3414d5c30a5d2.jpeg 2x“ class=„c1“/></a> <figcaption class=„rteinlinebild_source akwa-caption“>Der fertige Klöppel</figcaption></figure><p>Der Servo wird mit einem Kabelbinder auf dem Holzanhänger befestigt. Wenn ihr nicht löten möchtet, kauft ihr am Besten einen Servo mit Grove-Stecker, der direkt an den Calliope gesteckt wird.</p> <figure class=„rteinlinebild akwa-inline-img akwa-inline-img col-lg-12 col-md-12 col-sm-12 col-xs-12“ is=„a-grossbild“><a class=„grossbild cbox_gallery akwa-inline-imglink“ data-content-type=„image“ data-grossbildsrc=„/make/imgs/76/2/5/3/9/8/4/1/05-Calliope_Glockenspiel_Servo-01e9ee5e60d32731.JPG“ href=„https://m.heise.de/make/artikel/Weihnachtsprojekt-Verteiltes-Glockenspiel-mit-mehreren-Calliope-Mini-4219883.html?view=zoom;zoom=20“><img alt=„Blauer Servo, der mit Kabelbinder auf dem Holz befestigt ist.“ src=„https://heise.cloudimg.io/width/5472/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/05-Calliope_Glockenspiel_Servo-01e9ee5e60d32731.JPG“ srcset=„https://heise.cloudimg.io/width/10944/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/05-Calliope_Glockenspiel_Servo-01e9ee5e60d32731.JPG 2x“ class=„c1“/></a> <figcaption class=„rteinlinebild_source akwa-caption“>Servo und Klöppel</figcaption></figure><p>Ansonsten müsst ihr den Stecker separat kaufen und anlöten. Dabei müsst ihr auf die richtige Verkabelung achten. Das Servokabel hat drei Adern: braun oder schwarz, rot und gelb oder weiß. In der Grafik seht ihr, wie der Servo an die Grove -Steckerbuchse A1 (sie befindet sich über dem Button B) angeschlossen werden muss. Anschließend die Lötstellen mit Schrumpfschlauch isolieren, ansonsten gibt es einen Kurzschluss.</p> <figure class=„rteinlinebild akwa-inline-img akwa-inline-img col-lg-12 col-md-12 col-sm-12 col-xs-12 c3“><img alt=„Anschlüsse Servo“ src=„https://heise.cloudimg.io/width/613/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/06_Calliope_Glockenspiel_ServoAnschluss-dafb8c5bdcf4e2a8.jpg“ srcset=„https://heise.cloudimg.io/width/1226/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/06_Calliope_Glockenspiel_ServoAnschluss-dafb8c5bdcf4e2a8.jpg 2x“ class=„c1“/><figcaption class=„rteinlinebild_source akwa-caption“>Servo-Anschlüsse für den Grove-Stecker</figcaption></figure> <p>Zuerst soll der Calliope so programmiert werden, dass sich der Klöppel beim Drücken des Knopfes A kurz nach vorne und direkt wieder in die Mitte bewegt. Beim Drücken von B er nach hinten und ebenfalls wieder in die Mittelposition gefahren. So könnt ihr probieren, ob der Klöppel die Rohre sauber anschlägt.</p> <figure class=„rteinlinebild akwa-inline-img rtepos_left col-lg-6 col-md-6 col-sm-6 col-xs-12 akwa-inline–left c4“><img alt=„Screenshot Programm 1“ src=„https://heise.cloudimg.io/width/306/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/07_Bild_Konzert-09aa820448e9885f.PNG“ srcset=„https://heise.cloudimg.io/width/612/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/07_Bild_Konzert-09aa820448e9885f.PNG 2x“ class=„c1“/><figcaption class=„rteinlinebild_source akwa-caption“>Konzert 1</figcaption></figure><p>Den Befehl <code>Wenn Knopf A gedrückt</code> findet ihr im Menü „Eingabe“. Alle Aktionen, die in der Klammer dieses Befehls stehen, werden beim Drücken des Knopfes ein Mal ausgeführt. Als Erstes soll der Servo in eine neue Position fahren, dazu braucht ihr den Befehl <code>Schreibe Servo an Pin … auf …</code> aus dem Menü „Fortgeschritten -> Pins“. Voreingestellt ist <code>P1</code>, stattdessen müsst ihr <code>C17</code> auswählen, da ihr an diesem Pin das gelbe oder weiße Kabel des Servos befestigt habt. Als Zielwert nehmt ihr zunächst <code>75</code>, was eine Änderung von 15 Grad aus der Mittelposition <code>90</code> bedeutet. Mit dem Befehl <code>Pausiere (ms) 100</code> gebt ihr dem Servo Zeit, um die Position anzufahren, bevor ihr ihn mit <code>Schreibe Servo an Pin C17 auf 90</code> wieder in die Mitte bewegt. Für <code>Wenn Knopf B gedrückt</code> werden die Programmierbefehle wiederholt – allerdings soll der Servo in die andere Richtung fahren, daher wird als Zielwert <code>112</code> vorgegeben.</p> <p>Nun könnt ihr das Programm auf den Calliope übertragen und die Batterieversorgung anschließen. Der USB-Anschluss alleine reicht nicht für Stromversorgung des Servos. Variiert zur Überprüfung die Werte, die ihr dem Servo vorgebt (im Beispiel <code>75</code> und <code>112</code>) bis der Klöppel bis kurz vor die Klangrohre fährt, diese aber nicht berührt. Sonst würde der Ton nach dem Anschlagen direkt wieder gedämpft. Die Pausendauer muss so angepasst werden, dass der Servo die maximale Position auch erreicht, bevor er den Befehl zum Zurückfahren erhält.</p> <p>Habt ihr alles richtig eingestellt, könnt mit dem Calliope durch Drücken der Knöpfe A und B zwei unterschiedliche Töne erzeugen. In Schulklassen eine gute Gelegenheit, um gemeinsam eine kleine Melodie auszuprobieren, denn jeder Calliope sollte zwei andere Töne erzeugen.</p> <p>Es wäre allerdings unpraktisch, wenn die ganze Gruppe am Weihnachtsbaum stehen und die Knöpfe im richtigen Takt drücken müsste. Daher ist jetzt das Ziel, die Noten über die Bluetooth-Schnittstelle kabellos zu übertragen. Die Melodie wird dazu in einer Liste gespeichert, in der Programmierung ist dies ein Array. Ihr findet die Funktion im Fortgeschritten-Menü des Calliope Editors unter „Arrays“.</p> <p>Erstellt zunächst eine Variable mit dem Namen <code>MeineMelodie</code> (Menü „Variablen -> Neue Variable anlegen“). Dieser weist ihr mit den Befehlen <code>Ändere Wert auf MeineMelodie</code> und <code>Erstelle Array mit …</code> ein noch leeres Array zu. Über das blaue Setup-Symbol im Befehl <code>Erstelle Array mit …</code> kann die Anzahl der Listenelemente geändert werden. Zieht einfach so viele Elemente in das Array wie euer Lied Noten hat. In die Elemente schreibt ihr eure Melodie von oben nach unten. Die Ziffern neben den Noten beschreiben die Oktave. Im Beispiel sind alle aus der gleichen Oktave. Wenn ihr ein Lied über mehrere Oktaven habt, müsst ihr die Ziffern entsprechend anpassen (C1, C2 ,… usw.).</p> <figure class=„rteinlinebild akwa-inline-img akwa-inline-img col-lg-12 col-md-12 col-sm-12 col-xs-12 c5“><img alt=„Screenshot Programm 2 &quot;Senden&quot;“ src=„https://heise.cloudimg.io/width/559/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/08_Bild_KonzertNo2_senden-2517e419a4186348.PNG“ srcset=„https://heise.cloudimg.io/width/1118/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/08_Bild_KonzertNo2_senden-2517e419a4186348.PNG 2x“ class=„c1“/><figcaption class=„rteinlinebild_source akwa-caption“>Konzert 2: Melodie senden</figcaption></figure><p>Mit einer <code>Für Index von 0 bis 4</code> Programmierschleife (siehe Menü „Schleifen“) soll nacheinander jedes Element des Arrays ausgelesen werden. Die Voreinstellung <code>4</code> wird mit der Variablen <code>Array-Länge</code>» (Menü „Arrays“) ersetzt, die automatisch die Anzahl der Listenelemente speichert. Da der Index bei <code>0</code> und nicht bei <code>1</code> beginnt, muss für die Anzahl der Schleifendurchläufe noch 1 subtrahiert werden. Das geht mit dem <code>0 – 0</code> Befehl im Menü „Mathematik“. Die erste Null wird mit der Variablen <code>Array-Länge (MeineMelodie)</code> und die zweite Null durch eine <code>1</code> ersetzt.</p> <div class=„rtedossier akwa-inline-textbox rtepos_right col-lg-4 col-md-5 col-sm-5 col-xs-12 akwa-inline–right“ readability=„18“> <figure class=„rtedossier_anrissbild“><img alt=„“ src=„https://heise.cloudimg.io/width/210/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/imgs/71/2/2/5/4/4/7/7/Calliope_mini-9a308b345966bdc2.jpeg“ srcset=„https://heise.cloudimg.io/width/420/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/imgs/71/2/2/5/4/4/7/7/Calliope_mini-9a308b345966bdc2.jpeg 2x“ class=„c1“/></figure> <p>Der Mikrocontroller Calliope mini wurde in Deutschland entwickelt und soll bereits in der Grundschule Programmierkenntnisse vermitteln.</p> <ul><li><a href=„https://www.heise.de/select/make/2017/2/1492870483451450“ rel=„external“>Calliope mini in Make 2/17</a></li> <li><a data-content-type=„content“ href=„https://m.heise.de/make/artikel/Calliope-mini-3676938.html“>Beispielprogramme im Video</a></li> <li><a data-content-type=„content“ href=„https://m.heise.de/meldung/Calliope-mini-Mikrocontroller-fuer-die-Grundschule-3361271.html“>Betaversion im Praxistest</a></li> <li><a data-content-type=„stream“ href=„https://m.heise.de/thema/calliope-mini“>Themenseite Calliope mini</a></li> </ul></div> <p>Alle Befehle, die in der grünen Klammer der Schleife stehen, werden nun genauso häufig ausgeführt wie die empfangene Melodie Noten hat. Bei jedem Durchlauf wird die Variable
Index
um
1
erhöht und es somit möglich, ein weiteres Element aus der Liste auszulesen. Dazu braucht ihr den Befehl
Liste rufe den Wert ab bei 0
aus dem Menü „Arrays“. Anstelle des Wertes
Liste
wählt ihr die Variable
MeineMelodie
und statt der Null setzt ihr die Variable
Index
ein. Mit
ändere AktuelleNote auf …
wird der zuvor bezogene Listenwert der Variable
AktuelleNote
zugewiesen.</p> <p>Wählt den Befehl
Sende Zeichenfolge
im Menü
Funk
und wählt die Variable
AktuelleNote
um genau diesen Wert per Bluetooth in die Welt zu senden. Das Senden der nächsten Note soll um die Taktzeit verzögert werden. Hierfür nutzt ihr den Befehl
pausiere (ms) Takt
und setzt als Wert
500
ein. Dies sorgt für eine Unterbrechung von einer halben Sekunde bevor die nächste Note aus dem Array versendet wird. Damit später klar, ist wer zu eurer Gruppe gehört und somit die Noten empfangen soll, muss in der
Beim Start
Anweisung eine Gruppe mit dem Befehl
Setze Gruppe 0
definiert werden (Menü „Funk“ „mehr“).</p> <p>Die unterschiedlichen Calliopes sollen die versendeten Noten mithören, prüfen ob sie selbst die empfangenen Noten spielen können und dies gegebenenfalls auch tun. Hierzu müsst ihr zunächst definieren, welche Noten euer Calliope spielen kann. Definiert zwei Variablen
MeineNote1
und
MeineNote2
und weist ihnen mit der Anweisung
Ändere MeineNote1 auf …
(Menü „Variablen“) sowohl für Note 1 als auch für Note 2 die Tonhöhen zu, die ihr mit den Klangrohren erzeugen könnt. Damit ihr später seht, auf welche Noten euer Calliope eingestellt ist, solltet ihr sie im Startmenü mit dem Befehl
Zeige Zeichenfolge
kurz anzeigen.</p> <figure class=„rteinlinebild akwa-inline-img akwa-inline-img col-lg-12 col-md-12 col-sm-12 col-xs-12 c6“><img alt=„Screenshot Programm 2 &quot;Empfangen&quot;“ src=„https://heise.cloudimg.io/width/674/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/09_Bild_KonzertNo2_empfangen-6f9c25bef126683a.PNG“ srcset=„https://heise.cloudimg.io/width/1348/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/09_Bild_KonzertNo2_empfangen-6f9c25bef126683a.PNG 2x“ class=„c1“/><figcaption class=„rteinlinebild_source akwa-caption“>Konzert 2: Melodie empfangen</figcaption></figure><p>Der Befehl
Wenn Datenpaket empfangen receivedString
aus dem Menü „Funk“ speichert die empfangene Zeichenfolge in der Variablen
receivedString
. Benennt diese Variable in
AkutelleNote
durch klicken auf
receivedString
um, das macht den Programmtext leichter verständlich.</p> <p>Nun braucht ihr die Funktion
Wenn wahr dann …
Funktion (Menü „Logik“) um zu überprüfen, ob es sich bei der empfangenen Note um eine handelt, die euer Calliope spielen kann. Ebenfalls im Menü „Logik“ befindet sich der Operator
0 = 0
. Ersetzt die erste Null mit
AkutelleNote
und die zweite Null mit
MeineNote1
. Es wird also geprüft, ob die empfangene Note der ersten Note eures Calliopes entspricht. Die Befehle in der grünen Klammer entsprechen nun denen aus Konzert Nummer 1, wenn der Knopf A gedrückt wurde. Den
Wenn wahr dann …
Befehl müsst ihr noch für die zweite Note wiederholen und anpassen. Jetzt könnt ihr die beiden Programmteile Senden und Empfangen in einem Programm kombinieren. Somit kann jeder Calliope sowohl als Sender als auch als Empfänger eingesetzt werden.</p> <p>Noch kann der Calliope, der die Noten versendet, seine eigenen Klangröhren allerdings nicht ertönen lassen sollte. Die Erweiterung ist sehr einfach. Nachdem der Calliope eine Note versendet hat, soll er einfach prüfen, ob er selbst die Note spielen kann. Dazu wird der
wenn (AktuelleNote = MeineNote1) dann …
Befehl aus dem vorgehenden Beispiel wiederholt und hinter den Befehl
Sende Zeichenfolge AktuelleNote
gestellt und zwar einmal für
MeineNote1
und nochmal für
MeineNote2
. Jetzt kann auch der Dirigent mit musizieren.</p> <figure class=„rteinlinebild akwa-inline-img akwa-inline-img col-lg-12 col-md-12 col-sm-12 col-xs-12“ is=„a-grossbild“><a class=„grossbild cbox_gallery akwa-inline-imglink“ data-content-type=„image“ data-grossbildsrc=„/make/imgs/76/2/5/3/9/8/4/1/11_Bild_KonzertNo3a-f96211cf15baa15d.PNG“ href=„https://m.heise.de/make/artikel/Weihnachtsprojekt-Verteiltes-Glockenspiel-mit-mehreren-Calliope-Mini-4219883.html?view=zoom;zoom=27“><img alt=„Screenshot Programm 3 Variante 1“ src=„https://heise.cloudimg.io/width/1071/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/11_Bild_KonzertNo3a-f96211cf15baa15d.PNG“ srcset=„https://heise.cloudimg.io/width/2142/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/11_Bild_KonzertNo3a-f96211cf15baa15d.PNG 2x“ class=„c1“/></a> <figcaption class=„rteinlinebild_source akwa-caption“>Konzert 3: Melodie senden und empfangen, mit Funktionen</figcaption></figure><p>Allerdings wiederholen Programmierer nicht gerne Programmcode. Kleine Änderungen müssen ansonsten an mehreren Programmstellen eingearbeitet werden, was mühsam und fehlerträchtig ist. Abhilfe schafft die Verwendung von Funktionen (Menü „Fortgeschritten“ „Funktionen“). Der Programmteil, der sich wiederholt, wird in die blaue Klammer der Funktion verschoben und dieser ein Name gegeben. Am Besten einer, der auf die Aufgabe der Funktion schließen lässt. In diesem Beispiel bietet es sich an, die Funktionen <code>SpieleNote1</code> und <code>SpieleNote2</code> zu definieren. Sie enthalten die Befehle für die Servosteuerung.</p> <figure class=„rteinlinebild akwa-inline-img akwa-inline-img col-lg-12 col-md-12 col-sm-12 col-xs-12“ is=„a-grossbild“><a class=„grossbild cbox_gallery akwa-inline-imglink“ data-content-type=„image“ data-grossbildsrc=„/make/imgs/76/2/5/3/9/8/4/1/12_Bild_KonzertNo3b-d6ec2de178289dae.PNG“ href=„https://m.heise.de/make/artikel/Weihnachtsprojekt-Verteiltes-Glockenspiel-mit-mehreren-Calliope-Mini-4219883.html?view=zoom;zoom=28“><img alt=„Screenshot Programm 3 Variante 2“ src=„https://heise.cloudimg.io/width/1060/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/12_Bild_KonzertNo3b-d6ec2de178289dae.PNG“ srcset=„https://heise.cloudimg.io/width/2120/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/12_Bild_KonzertNo3b-d6ec2de178289dae.PNG 2x“ class=„c1“/></a></figure> <p>Sollen nicht nur ganze Noten, sondern auch Halb-, Viertel- und Achtelnoten in der Melodie verwendet werden, muss die Notenlänge zusammen mit der Tonhöhe im Array gespeichert werden. Dazu werden vor der Tonhöhe die Werte <code>g</code> (ganze), <code>h</code> (halbe), <code>v</code> (viertel) oder <code>a</code> (achtel) ergänzt. Eine Achtelnote D der zweiten Oktave wird somit zu <code>aD2</code>. Der erste Buchstabe der Note bestimmt die Pausenzeit bis die nächste Note gespielt wird.</p> <p>Definiert drei neue Variablen: <code>Notenlaenge</code>, <code>Ton</code> und <code>Takt</code>. Der Variablen <code>Takt</code> weist ihr in der Startklammer einen fixen Wert zu, beispielsweise 1000 ms. Der Variablen <code>Notenlaenge</code> weist ihr mit dem Befehl <code>Extrahiere aus … beginnend mit …</code> (Menü „Fortgeschritten“ „Text“) den ersten Buchstaben des in <code>AktuelleNoteEmpfangen</code> gespeicherten Texts zu. Dazu müsst ihr die Werte von Position <code>0</code> bis <code>1</code> auswählen. Mit <code>Ändere Notenlaenge auf / Extrahiere aus AktuelleNoteEmpfangen von 0 bis 1</code> wird also die Information g,h,v oder a in <code>Notenlaenge</code> gespeichert. Der <code>Ton</code>, beispielsweise D1, wird mit dem gleichen Befehl und den Positionen <code>1</code> bis <code>3</code> gespeichert.</p> <p>Für die Einhaltung der Pause definiert ihr noch die Funktion <code>Taktpause</code>. Nutzt die <code>Wenn … dann … sonst wenn…</code> Funktion (Menü „Logik“) um die Variable <code>Notenlaenge</code> mit g,h,v und a zu vergleichen. Dazu müsst ihr im Setup der Funktion (blaues Icon) weitere <code>else if</code> Optionen in die Funktion ziehen. Den Wert in der Variablen <code>Notenlaenge</code> vergleicht ihr nach nacheinander mit den möglichen Tonlängen. Ist die richtige Tonlänge gefunden, wird der Pausenbefehl ausgeführt. Die Länge der Pause entspricht entweder dem <code>Takt</code> (Länge g), dem <code>Takt ÷ 2</code> (h), dem <code>Takt ÷ 4</code> (v) oder dem Takt geteilt durch 8 (a). Der Teilen-Befehl befindet sich im „Mathematik“ Menü.</p> <figure class=„rteinlinebild akwa-inline-img akwa-inline-img col-lg-12 col-md-12 col-sm-12 col-xs-12“ is=„a-grossbild“><a class=„grossbild cbox_gallery akwa-inline-imglink“ data-content-type=„image“ data-grossbildsrc=„/make/imgs/76/2/5/3/9/8/4/1/13_Bild_KonzertNo4-b0b896222829dba4.PNG“ href=„https://m.heise.de/make/artikel/Weihnachtsprojekt-Verteiltes-Glockenspiel-mit-mehreren-Calliope-Mini-4219883.html?view=zoom;zoom=29“><img alt=„Screenshot Programm 4“ src=„https://heise.cloudimg.io/width/985/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/13_Bild_KonzertNo4-b0b896222829dba4.PNG“ srcset=„https://heise.cloudimg.io/width/1970/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/13_Bild_KonzertNo4-b0b896222829dba4.PNG 2x“ class=„c1“/></a> <figcaption class=„rteinlinebild_source akwa-caption“>Konzert 3 mit alben, Viertel- und Achtel-Noten. Aus Gründen der Übersichtlichkeit wurde dem Calliope-Dirigenten das Instrument weggenommen. Der Calliope, der eine Melodie sendet, spielt selbst keinen Ton. Aber das kann natürlich leicht geändert werden.</figcaption></figure> <p>Ein Weihnachtsbaumanhänger sollte auch schön leuchten. Folgende Funktionen sollen zum Schluss noch programmiert werden:</p> <ol class=„rtelist rtelist–ordered“><li>Jedes Mal, wenn eine Note empfangen wird, soll die bunte LED des Calliope in einer zufällig ausgewählten Farbe leuchten.</li> <li>Die LED-Matrix soll einen mit zwei Bildern animierten Stern anzeigen.</li> </ol> <figure class=„rteinlinebild akwa-inline-img rtepos_left col-lg-6 col-md-6 col-sm-6 col-xs-12 akwa-inline–left“ is=„a-grossbild“><a class=„grossbild cbox_gallery akwa-inline-imglink“ data-content-type=„image“ data-grossbildsrc=„/make/imgs/76/2/5/3/9/8/4/1/15_Bild_KonzertNo5_Farbwechsel-6b79c278a134919d.png“ href=„https://m.heise.de/make/artikel/Weihnachtsprojekt-Verteiltes-Glockenspiel-mit-mehreren-Calliope-Mini-4219883.html?view=zoom;zoom=31“><img alt=„Screenshot Programm 5 Teil 2“ src=„https://heise.cloudimg.io/width/785/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/15_Bild_KonzertNo5_Farbwechsel-6b79c278a134919d.png“ srcset=„https://heise.cloudimg.io/width/1570/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/15_Bild_KonzertNo5_Farbwechsel-6b79c278a134919d.png 2x“ class=„c1“/></a> <figcaption class=„rteinlinebild_source akwa-caption“>Konzert 5: RGB-LED beleuchten</figcaption></figure><p>Erstellt für den Farbwechsel eine eigene Funktion und nennt sie
ZeigeZufaelligeFarbe
und erstellt eine neue Variable mit dem Namen
Farbe
. Dieser Variablen wird mit Befehl
Wähle eine zufällige Zahl zwischen 0 und 4
(Menü „Mathematik“) ein Zufallswert zugewiesen. Mit
Wenn … dann … sonst wenn…
Funktion wird die Variable mit den fünf möglichen Werten verglichen und die LED, je nach Zahlenwert, mit dem Befehl
setze LED-Farbe auf …
(Menü „Grundlagen“) auf eine andere Farbe eingestellt. Die Funktion wird auch im Programmteil
wenn Knopf A gedrückt
vor der
Taktpause
aufgerufen.</p> <figure class=„rteinlinebild akwa-inline-img rtepos_left col-lg-6 col-md-6 col-sm-6 col-xs-12 akwa-inline–left“ is=„a-grossbild“><a class=„grossbild cbox_gallery akwa-inline-imglink“ data-content-type=„image“ data-grossbildsrc=„/make/imgs/76/2/5/3/9/8/4/1/14_Bild_KonzertNo5_Animation-dd12de94731b97cc.PNG“ href=„https://m.heise.de/make/artikel/Weihnachtsprojekt-Verteiltes-Glockenspiel-mit-mehreren-Calliope-Mini-4219883.html?view=zoom;zoom=30“><img alt=„Screenshot Programm 5 Teil 1“ src=„https://heise.cloudimg.io/width/502/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/14_Bild_KonzertNo5_Animation-dd12de94731b97cc.PNG“ srcset=„https://heise.cloudimg.io/width/1004/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/14_Bild_KonzertNo5_Animation-dd12de94731b97cc.PNG 2x“ class=„c1“/></a> <figcaption class=„rteinlinebild_source akwa-caption“>Konzert 5: LED-Matrix animieren</figcaption></figure><p>Für die Animation auf der LED-Matrix erstellt ihr eine weitere Variable namens
Animation
. Dieser Variable weist ihr den Befehl
erstelle großes Bild
(Menü „Fortgeschritten“ -> „Bilder“) zu. Zeichnet in den ersten fünf Spalten den ersten Teil der Sternanimation und in den hinteren fünf Spalten den zweiten Teil. Aufgerufen wird die Animation über den Befehl
scrolle Bild Animation mit Offset … und Intervall … (ms)
. Der Offset bestimmt, um wie viele Spalten das Bild bei der wiederholten Anzeige verschoben wird. Bei
1
würden die Bildanimationen wie ein Lauftext nach links scrollen. Stellt den Wert auf
5
, so sieht man erst das eine, dann das andere Bild. Die Blinkfrequenz wird über den Intervallwert eingestellt. Da diese Animation dauerhaft laufen soll, also auch wenn keine Melodie gespielt wird, wird der Befehl in der Schleife
dauerhaft
eingebettet.</p> <figure class=„rteinlinebild akwa-inline-img akwa-inline-img col-lg-12 col-md-12 col-sm-12 col-xs-12“ is=„a-grossbild“><a class=„grossbild cbox_gallery akwa-inline-imglink“ data-content-type=„image“ data-grossbildsrc=„/make/imgs/76/2/5/3/9/8/4/1/17_microbit-KonzertNo5-ebbec0bd4ffef005.PNG“ href=„https://m.heise.de/make/artikel/Weihnachtsprojekt-Verteiltes-Glockenspiel-mit-mehreren-Calliope-Mini-4219883.html?view=zoom;zoom=33“><img alt=„Screenshot Programm komplett für microbit“ src=„https://heise.cloudimg.io/width/1266/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/17_microbit-KonzertNo5-ebbec0bd4ffef005.PNG“ srcset=„https://heise.cloudimg.io/width/2532/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/make/imgs/76/2/5/3/9/8/4/1/17_microbit-KonzertNo5-ebbec0bd4ffef005.PNG 2x“ class=„c1“/></a></figure><p>Das war's, euer Weihnachtsbaumanhänger ist fertig. Viel Erfolg beim Nachbauen!</p> <noscript readability=„1“> <p><em>Bei Problemen mit der Wiedergabe des Videos aktivieren Sie bitte JavaScript</em></p> </noscript> <figure class=„video video–fullwidth akwa-inline-video player“><div class=„kaltura-video-container kaltura-player-shell js-player-dummy-play-button“><img alt=„Zwei Christbaumanhänger mit Calliope mini“ class=„kaltura-player-shellpreview-image c1“ src=„https://heise.cloudimg.io/width/1080/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/make/imgs/76/2/5/4/7/7/0/6/Glockenspiel_Calliope_2-b51d348ff71200e2.jpg“ srcset=„https://heise.cloudimg.io/width/2160/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/make/imgs/76/2/5/4/7/7/0/6/Glockenspiel_Calliope_2-b51d348ff71200e2.jpg 2x“/></div> </figure><ul class=„rtelist rte__list–unordered“><li><em>Hier gibt es alle <a href=„https://www.heise.de/make/downloads/76/2/5/3/9/8/4/1/Calliope_Glockenspiel.zip“ rel=„external“ target=„_blank“>Dateien zum Download</a>, inklusive der Plot-Vorlagen und Hex-Dateien für den Calliope sowie eine Version für den britischen BBC micro:bit.</em></li> </ul> <div class=„btn-toolbar whatsbroadcast-toolbar“> <p><a class=„btn btn-default stretch“ data-toggle=„.shariff“>Teilen</a> </p> <p><a class=„btn btn-default stretch“ data-toggle=„#whatsbroadcast“>Abonnieren</a> </p> </div> </html>