GuitarBot ist ein Projekt, welches als Maturaarbeit an der Kantonsschule Sargans realisiert wurde. Die eigentliche Arbeit ist komplett in Englisch verfasst. Diese kurze Infopage sollte einen Einblick in das Projekt geben. Die Arbeit kann am Ende dieser Seite als PDF heruntergeladen werden.
Diese Seite hat die selbe Struktur wie die schriftliche Arbeit:
- Mechanik
- Elektronik
- Software
▼▼ Scrollen um weiterzufahren! ▼▼








Eine der wichtigen Fragestellung lautet, wie die Tonhöhe reguliert werden kann. Dazu befinden sich auf der unteren Ebene vier Schrittmotoren. Jeder dieser Motoren bewegt via Zahnriemen einen selbstgebuaten "Fretter" auf einer Schiene. Die Zylinderspule, als Teil des "Fretters", klemmt die Saite an der momentanen Position ab und definiert somit die Tonhöhe.


Die zweite wichtige Frage ist wie der Ton zustande kommt. Um einen unabhänigen Anschlag zu erzielen, besitzt jede Saite ihren eigenen Anschlagmechanismus. Dieser Mechanismus besteht aus zwei Servo Motoren. Der eine, mit einem Gitarren-Plektrum ausgestattet, schlägt die Saite an. Der andere, mit Moosgummi am Servo-Arm, wird benutzt um den Ton zu stoppen (dämpfen).

Die ganze Mechanik muss natürlich gesteuert werden. Der Microcontroller welcher im GuitarBot steckt ist ein Arduino Mega. Arduino Boards sind ziemlich cool weil sie einfach zu handhaben sind und viel können. Da die ganze Arduino Palette opensource ist, gibt es eine enorme Auswahl an zusätzlichen Sachen.

Im GuitarBot hat es auch andere Boards. Zum Beispiel einen Big EasyDriver pro Schrittmotor, einen Servocontroller oder ein Relais Modul um die Zylinderspulen zu steuern.
Die Arduino Boards werden in vereinfachtem C++ programmiert. Es gibt unzählige Libraries, von welchen zum Beispiel "AccelStepper" oder "Adafruit_PWMServoDriver" im Projekt benutzt wurden.
Das Programm liest Befehle aus einer .csv Datei (auf einer SD Karte) und führt diese zum richtigen Zeitpunkt aus. Die Befehle können "move", "play" oder "stop" lauten. Die dazugehörigen funktionen heissen "movePosition()", "playTone()" und "stopTone()".
- readLine() ist die komplizierteste Funktion des Programms. Wenn sie ausgeführt wird, wird eine Zeile Zeichen für Zeichen aus der .csv Datei gelesen. Die verschiedenen Daten (time, string, command, ...), werden in lokalen Variablen gespeichert. Diese Variablen werden dann der auszuführenden Funktion übermittelt.
- movePosition() wird benutzt um eine Bewegung eines Schrittmotors zu initialisieren. Die Funktion setzt eine neue Target Position. Die eigentliche Bewegung erfolgt dann während der Rest des Programms weiter läuft.
- playTone() spielt einen Ton. Die Funktion löst die Zylinderspule aus, hebt den Dämpfer und schlägt die Saite an.
- stopTone() ist die einfachste Funktion. Sie senkt nur den Dämpfer. Somit wird der Ton gestoppt.
