Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektewise20:musikpublic:start

Projektdokumentation IrgendwasMitMusik

Einleitung

Das Projekt IrgendwasMitMusik ist ein automatisches Xylophon, was ein spezielles Notenblatt verarbeitet und diese Noten dann automatisch abspielt. Für das Notenblatt wird ein Blatt Papier mit Löchern versehen. Dieses wird in das Lesegerät geschoben. Dort blockiert das Blatt das Licht des Lichtstreifens oder lässt es auf die Phototransistoren (Lichtmesser) einfallen. Das Notenblatt wird durch einen Stepper-Motor immer um eine Einheit weiter transportiert, bis das gesamte Notenblatt gelesen wurde.(siehe Abb. 2) Diese „Noten“ werden gespeichert und interpretiert. Dementsprechend dreht sich einer der drei Servo-Motoren auf den übergebenen Winkel. Die drei Schlägel sind an den drei Servo-Motoren befestigt. Dadurch wird der Kopf des Schlägels über die richtige Platte des Xylophons gedreht. Der Schlägel befindet sich nicht im Gleichgewicht, sondern liegt auf einer Platte des Hubmagneten auf. Schlussendlich wird der richtige Hubmagnet betätigt, sodass der Schlägel die Platte auf dem Xylophon trifft und ein Ton erklingt. Diese Prozedur wiederholt sich, bis zum Ende der Noten, welche gespeichert sind.

Abbildung 1: Oberansicht des Roboters mit Beschriftung des generellen Aufbaus.
Abbildung 2: Ansicht des Lesestandes von rechts mit Beschriftung

P.S. Unser Projekttitel IrgendwasMitMusik stammt daher, dass es anfangs ein Platzhalter war für einen anständigen Namen, jedoch haben wir uns mit der Zeit an den Namen emotional angehängt, sodass wir den Namen nicht mehr rausschmeißen konnten.

Methoden / Umsetzung

Überblick

Baugruppen

Der Roboter besteht aus dem Lesegerät und dem Abspielgerät. Das Lesegerät hat acht Phototransistoren, mit welchen das Notenblatt interpretiert wird. Dabei schiebt der Stepper Motor das Blatt weiter. Das Abspielgerät besteht aus drei Servos und drei Hubmagneten, welche die Schlägel einstellen und das Xylophon anschlagen.

Welche Aufgaben gab es?

  1. Auswählen der Aktion: Der Arduino soll in zwei Zustände gesetzt werden können, in denen er entweder liest oder spielt.
  2. Lesen der Noten: Der Arduino soll eine gute Genauigkeit haben beim Lesen, das heißt er liest keine falschen Noten, liest überhaupt Noten etc.
  3. Stepper und das Schieben des Notenblatts Der Stepper soll das Papier weiterschieben, sodass ein regelmäßiger und optimierter Lesevorgang entsteht. (Das ist besser als unregelmäßig mit der Hand zu schieben)
  4. Abspielen bzw. Servo und Hubmagnet Das gespeicherte Notensystem soll entsprechend mit Schlägeln an dem Xylophon abgespielt werden.

Welche Aufgaben wurden nicht bearbeitet/berücksichtigt?

  • Es wurde nicht berücksichtigt, wie schnell der Roboter ist; die Funktionalität wurde höher gestellt.
  • Akkorde und mehrere Töne wurden weggelassen, da das den Aufwand des Projekts stark erhöht hätte.
  • Es gibt keine Möglichkeit für die Eingabe von verschieden langen Tönen.
  • Anfänglich hatten wir den Stepper in dem „Extra“-Teil unserer Projektplanung, wie man bei der Abb. 2. sieht. Aber es hat sich schnell herausgestellt, dass es sinnvoll ist einen Stepper zu nutzen.

Skizzen und Photos

Abbildung 3: Anfängliche Skizze des Abspielgerätes
Abbildung 4: Anfängliche Skizze des Lesestandes

Abschnitte

  • Lesestand: Der Lesestand liest über das Notenblatt die Noten ein. Die Phototransistoren mussten so angebracht werden, dass sie senkrecht auf die Lichtquelle zeigen. Außerdem mussten sie wieder entfernbar sein, zum Transport und zum Austausch sowie zur Verbesserung der Phototransistoren. Deshalb sind die Phototransistoren in das obere Brett hineinzuschieben, bis etwa zur Hälfte des Bretts. Die Phototransistoren zeigen nach unten, da ursprünglich der Gedanke bestand, dass eine Lichtquelle auf den Tisch gelegt wird. (siehe Abb. 7) Durch das Hinzufügen des Steppers, mussten wir den gesamten Lesestand ein zweites Mal bauen für mehr Stabilität und mehr Platz für die Zahnscheiben.
  • Phototransisoren:
    1. Anzahl der Phototransisoren: Da Phototransistoren an Analogeingängen des Arduino Nano angeschlossen werden, konnten wir nur acht nehmen. Deshalb werden auch nur acht Platten des Xylophons angesteuert. Bei einem größeren Arduino könnte man mehr Phototransistoren und nutzen und einen zum Beispiel für ein Pauseeingabe benutzen. Das heißt wenn der „Pause“-Transistor beleuchtet wird, wird die vorangegangene Note beispielsweise doppelt so lang.
    2. Anbauen der Phototransisoren: Die Phototransistoren werden durch Schlitze in das Holz geschoben. Dadurch könne sie aber kippen, wodurch der direkte Lichteinfall nicht gewährleistet wäre. Aus diesem Grund sind Halterungen mit herausnehmbaren Schaschlikspießen an den Seiten angebracht für die Stabilität. (siehe Abb. 5)
    3. Bestimmung der Grenzwerte der Lichtwerte der Phototransistoren: Um die verschiedene Zustände bei dem Phototransisor erkennen zu können, haben wir die Lichtwerte benutzt, die von den Phototransisoren geliefert werden. Wenn der Lichtstreifen leuchtet, liegt der addierte Wert bei ungefähr 700, wenn das Papier alle Lichter blockiert. Wenn ein Phototransistor beleuchtet wird liegt der Wert bei etwa 1700, und bei 7700, wenn alle beleuchtet wurden. So haben wir bestimmt, dass bei einem Wert von x < 1200 der Zustand „keiner wird beleuchtet“ zutrifft. Bei 1200 < x < 2500 ist der Zustand „einer wird beleuchtetet“ und bei 2500 < x „alle sind beleuchtet“. Es wurden alle anderen Zustände, bei denen mehr als ein Phototransistor beleuchtet wird nicht betrachtet (siehe „Welche Aufgaben wurden nicht berücksichtigt?“). So konnte die Genauigkeit des Roboters verbessert werden.
Abbildung 5: Ansicht der Halterung für die Phototransistoren + Achsen etc. des Steppers
  • Stepper: Der Stepper ist ein Schrittmotor, welcher sich um genau einen Schritt dreht. Über Zahnscheiben und Zahnriemen ist er mit einer Schraube verbunden. (siehe Abb. 5)

Diese ist mit einer weiteren Schraube, die von der anderen Seite kommt, mit Hilfe eines Schrumpfschlauchs und ein wenig Sekundenkleber veklebt. Die entstandene Stange wird vom Stepper gedreht und bekommt durch Heißkleber etwas Gripp. (siehe Abb. 6) Das Notenblatt wird zwischen dieser Stange und vier Rollen gedrückt und so fortbewegt. Dabei ist zu berücksichtigen, dass die Reibung zwischen Schrauben und Gestell manchmal zu hoch ist, wodurch der Stepper stockt. Das ist aber kein Problem beim Lesen, da sich das Programm in einem Loop befindet.

picture8.jpg
Abbildung 6: Vorderansicht des Lesestandes
  • Licht: Als Lichtquelle wollten wir zuerst ein Smartphone nehmen, da dies ein starkes Licht hat und immer verfügbar ist. Außerdem muss man es nicht noch besorgen. Das Problem dabei ist, dass eine einzelne Lichtquelle nicht genug streut und die Lichtstärke nicht an allen Phototransistoren gleich ist. Und der unterschiedliche Auffallwinkel würde zu weiteren Problemen führen. Aus diesen Gründen mussten wir einen Lichtstreifen anbringen. Dieser braucht eine Stromquelle von 12V, wofür wir das Netzteil genutzt haben, welches wir für die Hubmagneten nutzen. Der Lichtstreifen hat den Vorteil, dass sich jeweils eine Lampe direkt gegenüber von einem Phototransistor befindet, wodurch sehr direktes, helles Licht garantiert wird. Dadurch wird auch der Einfluss des Raumlichts minimiert. Das führt zu stetigen Grenzwerten.
Abbildung 7: Grafische Darstellung des Leuchtbereiches eines Smartphones
  • Board mit Xylophon und Servos: (siehe Abb. 3) Das Abspielgerät ist auf einem Holzbrett von etwa 50cmx50xm angebracht. Darauf befinden sich die Hubmagneten, die Servos und das Xylophon. Die Servos und das Xylophon mussten um 4cm erhöht werden, da die Hubmagneten sehr hoch sind. Das Xylophon musste fest sitzen, aber entfernbar sein, sowie nicht beschädigt werden. Deshalb wird eine horizontale Bewegung durch Schrauben blockiert. Außerdem ist das Xylophon andersherum angebracht, damit die gerade Kante auf der Seite der Schlägel ist.
  • Anbringung der Hubmagneten Die Hubmagneten aktivieren die Schlägel, sodass sie, ähnlich einer Wippe, die Platten anschlagen. Dafür müssen die Schlägel im Ruhezustand auf der Platte des Hubmagneten aufliegen. Bei Stromzufuhr fahren die Hubmagneten aus und bringen die Schlägel zum Kippen. Im vollausgefahrenen Zustand dürfen die Hubmagneten nicht zum Aufliegen der Schlägel auf den Platten führen, sodass eine freie Schwingung gewährleistet wird.
    Die Anbringung der Hubmagneten hat uns zuerst Probleme bereitet. Der Hubmagnet hat eine zylindrische Form, wodurch es schwierig ist, eine stabile Halterung zu konstruieren. Deshalb haben wir zwischen der Feder und dem Zylinder eine Holzplatte angebracht. Dadurch ist die Holzplatte in den Hubmagneten integriert. Dabei ist aber zu beachten, dass die Feder nicht blockiert werden darf. Anschließend haben wir durch weitere Holzplatten ein Kippen des Hubmagneten blockiert und ihn erhöht, damit Platz für die Feder ist. Durch die Drehung der Servos müssen auf den Hubmagneten Platten angebracht sein, damit die Hubmagneten in jeder Stellung der Servos den Schlägel treffen. Da das Gewinde der Hubmagneten für Metall ist, besteht unsere Platte aus einer Aluminiumplatte und einer Holzplatte. Dadurch wird die Anschlagefläche leicht erhöht, kann aber nicht mehr abfallen.
  • Schlägel: Die Schlägel sind über eine Holzperle an den Servos befestigt. Da wir die Schlägel nicht beschädigen durften, sind sie mit Malerkrepp geschützt und mit Heißkleber angebracht. Die Holzperle ist über einen Draht an dem Servo befestigt; eine Schraube blockiert dabei eine Bewegung in horizontaler Richtung, während das Drehen der Perle weiterhin gewährleistet wird.
    Der Schlägel muss möglichst lang auf der Seite des Xylophons sein, um eine Schwingung des Tons zu erlauben. Dadurch entsteht ein großer Radius bei der Rotation des Schlägels. Das ist optimal, für eine geringe Verschiebung des Schlägelkopfes bei der Drehung, sodass der Schlägelkopf die Mitte der Platten trifft trotz Rotation. Des Weiteren wird der Teil des Schlägels auf der Seite der Hubmagneten relativ kurz. Deshalb müssen Gewichte angefügt werden, um den längeren Hebelarm und das Gewicht des Schlägelkopfes auszugleichen, damit der Schlägel auf die Platte der Hubmagneten kippt. Auch bestand die Frage, wie man die Schlägel so organisiert, sodass man nicht für jede Note einen Schläger hat, was viel zu viele Ressourcen benötigt hätte. Also haben wir uns dazu entschieden, das Xylophon in 3 Abschnitte (C D E, F G A, H C) zu teilen. (siehe Abb. 8) Da es keine horizontale, sondern eine rotatorische Bewegung ist, würde eine zu geringe Anzahl an SChlägeln dazu führen, dass die Platten nicht mehr in der Mitte getroffen werden.
Abbildung 8: Oberansicht des Boards colorized
  • Code (Grundlegende Erklärung):
  1. Überprüfung auf Aktion: Zuerst haben wir versucht, Lese- und Spielzustand durch Zeit zu unterscheiden. Das heißt, der Arduino prüft fast konstant, ob unter dem Lesestand kein Blatt ist (alle Phototransistoren wurden beleuchtet) für mehr als 10 Sekunden. Wenn das gilt, dann soll der Roboter spielen. Bei Unterbrechen, würde der Countdown wieder zurückgesetzt werden. Diese Idee hat zwar geklappt, aber es war nicht so benutzterfreundlich. Also haben wir uns auf einen Schalter für das Lesen und einen Taster für das Abspielen geeinigt. Jetzt prüft es konstant, ob einer der beiden Schalter an ist oder nicht und führt die jeweilige Aktion aus. (siehe Abb. 9)
  2. Lesen der Noten: Während des Ablesens wird gepüft, ob alle Phototransistoren außer einem unter einem bestimmten Wert sind (LOW). Diese Note wird dann eingetragen. Dieser Vorgang wird für jeden Phototransistor durchgeführt. In der entsprechenden Methode im Code kommt auch der Abschnitt mit dem Stepper:
  3. Stepper und das Schieben des Notenblatts Das Schieben des Notenblatts ist relativ simpel. An sich funktioniert es so: (siehe Abb. 10) Wenn der Schalter für das Ablesen an ist, schiebt der Stepper das Blatt weiter, bis Licht auf einen einzigen Phototransistor fällt. (bis ein Blatt eingeschoben wird). Dann wird die Ablese-Funktion aufgerufen, welche die Note liest und den Befehl gibt, das Notenblatt so lange weiterzuschieben, bis kein Licht auf die Phototransistoren fällt. Danach fängt die Schleife wieder von vorne an.
Abbildung 9: Grafik für die „Überprüfung der Aktion
Abbildung 10: Grafik für „Stepper und Schieben des Notenblatts
  • Code (Erklärung des Programms):

„Setup“ außerhalb setup(): Die Servos werden hier initialisiert, mitsamt der Variablen, die sich außerhalb der Methoden befinden müssen (globale Variablen). Hier ist es gut zu wissen, dass A0, A1 etc. als Integer gelten. So kann das Array initialisiert werden.

#include <Servo.h>
Servo cde;        //Servos zuständig für jeweils die Notengruppe (C,D,E) (F,G,A) (H,C)
Servo fga;
Servo hc;
 
//Testwerte, damit man beim Testen nicht im ganzen Code rumsuchen muss.
int einPinAn = 2500;      //Ein Phototransistor ist beleuchtet
int keinPinAn = 1200 ;     //Kein Phototransisotr ist beleuchtet
 
 
int notenblatt[300];      //Der Array, wo die Noten gespeichert werden.
int tonzahl = 0;          //Zählt die Anzahl der hinzugefügten Noten
int analog_pin[] = {A0, A1, A2, A3, A4, A5, A6, A7};

Methode setup(): Es initialisiert die analogen Pins in einer Schleife und auch alle benötigten digital Pins. Dazu kommen auch die Servos.

void setup() {
  Serial.begin(2400);
 
  for (int i = 0; i < 8; i++) {         //for-loop für alle analogen Pins, die an die jeweiligen Phototransistoren angeschlossen sind.
    pinMode(analog_pin[i], INPUT);
  }
 
  pinMode(2, OUTPUT);    //Hubmagneten
  pinMode(4, OUTPUT);
  pinMode(7, OUTPUT);
 
  pinMode(LED_BUILTIN, OUTPUT);      // Arduino blinkt, wenn es gerade ein Ton gelesen hat.
 
  pinMode(10, INPUT);     //Output (Knopf für das Abspielen von Noten)
  pinMode (9, INPUT);    //Read   (Schalter für das Lesen der Noten)
 
  cde.attach(3);    //Servos
  fga.attach(5);
  hc.attach(6);
 
  pinMode(12, OUTPUT);     //Direction
  digitalWrite(12, HIGH);  //Einstellung der Drehrichtung
  pinMode(11, OUTPUT);     //Step (Für den Stepper am Lesestand)
}

Methode loop(): Hier wird auf vier Zustände geprüft. (siehe Abb. 9) - Leseschalter ist an: Während der Leseschalter an ist, wird folgendes ausgeführt: Zuerst bewegt sich der Stepper immer um einen Schritt, bis nur ein Phototransistor beleuchtet wird. Da es sich dann in einem Zustand befinden sollte, in dem es liest, wird die Methode ablesen(int i) 8 Mal ausgeführt, jedes Mal für einen Phototransistor. - Knopf für das Spielen: Hier wird einfach nur die Methode abspielen() aufgerufen. Optional kann für die Kontrolle der Noten auch die Methode ausgeben() aufrufen, um die Noten bei dem Serial Monitor auszugeben. - Keine Angabe: Gibt konstant „Bitte eine Aktion waehlen“ aus. - Beide Ausgewählt: Gibt konstant „Bitte nur eine Aktion waehlen“ aus.

void loop() {
  //  Serial.println(analogRead(4));          //Tester
  if (digitalRead(9) == HIGH && digitalRead(10) == LOW) {
    while ((holInputSumme() > einPinAn || holInputSumme() < keinPinAn) && digitalRead(9) == HIGH) {
      digitalWrite(11, HIGH);
      delay(3);
      digitalWrite(11, LOW);
      delay(3);
    }
    if (holInputSumme() < einPinAn && holInputSumme() > keinPinAn) {
      for (int i = 1; i <= 8; i++) {
        ablesen(i);
        digitalWrite(LED_BUILTIN, LOW);
      }
    }
  } else if (digitalRead(9) == LOW && digitalRead(10) == HIGH) {
    ausgeben();   //Test
    abspielen();
  } else if (digitalRead(9) == LOW && digitalRead(10) == LOW) {
    Serial.println("Bitte eine Aktion waehlen");
  } else if (digitalRead(9) == HIGH && digitalRead(10) == HIGH) {
    Serial.println("Bitte nur eine Aktion waehlen");
  }
}

Methode holInputSumme(): Gibt die Summe der Lichtwerte von den Phototransistoren aus. Es ist besser, den Wert nicht als Variable zu speichern, damit man nicht aus Versehen „alte“ Zustände kontrolliert, sondern immer die neusten Lichtwerte prüft.

int holInputSumme() {
  return analogRead(A0) + analogRead(A1) + analogRead(A2) + analogRead(A3) + analogRead(A4) + analogRead(A5) + analogRead(A6) + analogRead(A7);
}

Methode ablesen(int note): bekommt eine Note übergeben, die es lesen soll und trägt sie ein, wenn folgende Bedingungen (if's) erfüllt sind. - 'if': Es wird geprüft, ob wirklich nur ein Phototransistor beleuchtet wird. Wenn ja, prüft es in einer for-Schleife, ob alle anderen Phototransistoren beleuchtet werden. - 'if': Hier wird der Trick verwendet, dass int note -1 äquivalent zu dem Index des analogen Pins ist, zu dem der Phototransistor der Note verbunden ist. So werden bei „if (i != note - 1)“ alle anderen Phototransistoren geprüft, ob sie Werte unter 500 liefern, was heißen würde, dass sie nicht beleuchtet werden. Wenn dies der Fall ist, wird die Variable „anderePin“s nicht verändert, sondern bleibt als true. Ansonsten liefert sie nach der Schleife „false“. - 'if': Wenn nun „anderePins“ true liefert und der entsprechende Phototransistor zu der Note beleuchtet wird, wird die Note eingetragen und der Zähler „tonzahl“ um eins addiert. Auch kommt das Licht bei dem Arduino an, um zu signalisieren, dass eine Note gelesen wurde. Danach kommt der Stepper in Aktion und rollt das Papier weiter bis kein Licht mehr auf die Phototransistoren fällt. Diese Aktion ist mit der Stepper-schleife in der loop() Methode verbunden.

void ablesen(int note) {
  if (holInputSumme() < einPinAn) {
    boolean anderePins = true;
    for (int i = 0; i < 8; i++) {
      if (i != note - 1) {
        anderePins = anderePins || analogRead(analog_pin[i]) < 500;
      }
    }
    if (analogRead(analog_pin[note - 1]) > 500 && anderePins) {
      notenblatt[tonzahl] = note;
      tonzahl++;
      digitalWrite(LED_BUILTIN, HIGH);
      delay(1000);
      while (holInputSumme() < einPinAn && holInputSumme() > keinPinAn) {
        digitalWrite(11, HIGH);
        delay(3);
        digitalWrite(11, LOW);
        delay(3);
      }
      delay(1000);
    }
  }
}

Methode ausgeben(): Einfacher for loop mit println() für die Kontrolle.

void ausgeben() {
  for (int i = 0; i < tonzahl; i++) {
    Serial.println(notenblatt[i]);
  }
}

Methode abspielen(): ist eine for-Scheife, in der mit jeder Schleife eine Note abgespielt wird. Das Array „notenblatt“, in der alle Noten gespeichert sind, wird auf die eingetragene Note geprüft und führt die entsprechende Bewegung mit dem Stepper und dem Hubmagneten aus.

void abspielen() {
  int x = 500;    //Pause für den Hubmagneten
  int y = 400;    //Pause zwischen das Spielen der Noten
  for (int i = 1; i < tonzahl; i++) {
    switch (notenblatt[i]) {
      case (1):
        cde.write(109);
        delay(200);
        digitalWrite(2, HIGH);
        delay(x);
        digitalWrite(2, LOW);
        delay(y);
        break;
      case (2):
        cde.write(98);
        delay(200);
        digitalWrite(2, HIGH);
        delay(x);
        digitalWrite(2, LOW);
        delay(y);
        break;
        .
        .
        .
        //Noch weiter bis case(8)
    }
  }
}

Bauteile

Abbildung 11: Pinbelegung des Arduinos
drv8825-arduino-stepper-motor-wiring-schematic-diagram-pinout_bb.jpg
Abbildung 12: Beispielhafte Schaltung von dem Stepper-driver drv8825

https://www.makerguides.com/a4988-stepper-motor-driver-arduino-tutorial/

mosfet_schalter_strombegrenzer_pulldown_induktiv.jpg
Abbildung 13: Beispielhafte Schaltung eines Hubmagneten

\https://www.mintgruen.tu-berlin.de/robotikWiki/doku.php?id=techniken:schalten

Bauteil Menge
Phototransistor 8
Lichtstreifen (12V) 1
Stepper 1
Rolle 4
Zahnscheibe 3
Zahnriemen 1
Schalter/Taster 3
Bauteil Menge
Hubmagnet 3
Servo 3
Holzperle 3
Gewichte 3
Schlägel 3
Aluminiumplatte 3
Xylophon 1
Netzteil (12V) 1
Schrauben
Holz
Muttern, Unterlegscheiben
Elektrobauteile Menge
Arduino 1
Stepperplatine 3
Kondensator 4
Mosfet 3
Leerlaufdiode 3
Widerstände
Kabel

Ergebnis und Diskussion

Insgesamt konnten wir mit unserem Projekt IrgendwasMitMusik das umsetzen, was wir uns vorgenommen hatten. Das fertige Produkt ist dem ursprünglichen Plan sehr ähnlich, und auch zeitlich entsprach unsere Umsetzung etwa unserer Projektplanung. Der Roboter liest im Lesezustand über den Lesestand die Noten ein und spielt im Spielzustand diese auf dem Abspielgerät ab.

Das Einlesen der Noten funktioniert zu großen Teilen. Trotz dessen liest der Roboter manchmal Noten mehrfach ein oder die erste Note wird gar nicht oder falsch eingelesen. Dazu muss man lediglich das Notenblatt anpassen, sodass die erste Reihe frei gelassen wird von Löchern. Außerdem ist das Einlesen über die Phototransistoren nicht zu hundert Prozent genau. Das Abspielgerät funktioniert relativ gut, allerdings wird der Prozess manchmal unterbrochen und es muss erneut eingelesen werden. Besonders bei langen Notenblättern werden diese oft nicht vollständig abgespielt. Dies ist vermutlich darauf zurückzuführen, dass die Spannung des Arduinos beim Betreiben der Servos einbricht. Dies ist ein Problem, welches wir erst zum Schluss identifiziert haben, weshalb wir nicht noch die Möglichkeit hatten ein weiteres Netzteil mit 5V anzuschließen. Darauf lassen sich vermutlich auch vergangene kleine Probleme zurückführen, die wir mit den Servos hatten.

Bei einer Verbesserung des Projekts müsste man den Anschluss der Servos verändern. Außerdem könnte man das Lesen verbessern, indem man den Lesestand größer baut. Dadurch könnten die Phototransistoren größere Abstände haben und die Löcher im Notenblatt größer sein. Bei unserem Aufbau ist dies allerdings von der Lichtquelle abhängig.

Einen Phototransistor kann man für eine Pause im Stück nutzen. Dadurch verringert sich allerdings die Anzahl der potenziell spielbaren Noten. Dies haben wir nur kurz getestet und ließe sich noch ausbauen.

Für eine Erweiterung des Projektes, kann man versuchen Akkorde zu spielen. wobei dafür das Prinzip des Lesens verändert werden müsste und die Zuteilung der Schlägel auf drei konkrete Platten eventuell aufgebrochen werden muss.

Trotz der Einschränkungen von Corona konnten wir also unseren Roboter fertigstellen und sind insgesamt zufrieden mit unserem Projekt.

Code und Rohdaten

projektewise20/musikpublic/start.txt · Zuletzt geändert: 2021/04/23 18:04 von d.golovko