Guitar Tuner für Blinde (mit einem Arduino)

8 Schritt:Schritt 1: die Gitarre Tuner ausbauen Schritt 2: Stellen etwas Platz Schritt 3: Die Schaltung Schritt 4: Fügen Sie die Arduino Schritt 5: In den Rucksack Schritt 6: Programe - Arduino-Code Schritt 7: aufräumen Schritt 8: Lessons Learnt und Hinweise

Guitar Tuner für Blinde (mit einem Arduino)
Wie man ein Gitarrenstimmgerät ändern, damit es durch eine blinde Person kann verwendet werden,
Dieser Build verwendet ein Arduino Pro Mini-Mikrocontroller (alle Code wird zur Verfügung gestellt).
Dieses Projekt wurde für die Nächstenliebe verpflichtet Remap , die maßgeschneiderte Ausstattung bietet für Menschen mit Behinderungen.



Zusammenfassung
Beginnen Sie mit einem LED-elektronische Gitarren-Tuner. Ich habe ein Cherub Gitarre Kamerad (WST-550), die von eBay kostet etwa 10 £. Es war eine gute Wahl für dieses Projekt, wie es funktionierte gut, und wie es verwendet Durchgangsbohrung LEDs, es war ganz einfach zu löten.

Verwenden Sie einen Mikrocontroller (Arduino), um dann Ausgang der LED die Informationen als eine Folge von Tönen über einen Kopfhörer zu lesen.

Verwendung des Tuners

Wenn es eingeschaltet ist, wird der Tuner eine Skala zu spielen, wissen, dass es auf zu lassen.
Wenn der Tuner ist auf Tuning-Modus Halbton es 4 niederfrequenten flache Töne zu spielen.

Wenn eine Gitarrensaite ertönt, wird der Tuner die Notiz sie glaubt, die Saite zu spielen, bevor entweder spielen drei scharfen oder drei flache Töne, je nachdem, ob der String hoch oder zu tief zu spielen.

Die Dauer dieser drei Töne ab, wie hoch oder zu tief die Zeichenfolge ab (lange Töne, wenn die Saite klang sehr verstimmt, kurze Töne, wenn er fast richtig ist).
Wenn die Saite gestimmt ist, wird der Ton mit der Zeichenfolge zugeordnet wiederholt werden.

Eine bestimmte Zeichenfolge kann durch Drücken der Taste auf der Rückseite der Tuner ausgewählt werden, zu der Tuner schaltet durch die Saiten gestimmt werden. Es wird dann nur Feedback geben Töne (wie im Standardmodus, oben), sobald die korrekte Zeichenfolge wird gespielt.

Schritt 1: die Gitarre Tuner ausbauen

  1. Guitar Tuner für Blinde (mit einem Arduino)

    Guitar Tuner für Blinde (mit einem Arduino)

    Guitar Tuner für Blinde (mit einem Arduino)

    Normal 0 false false false EN-GB X-NONE X-NONE

    Die Demontage der Gitarrentuner entfernen Sie die Batterie und deren Halterung.

    Lösen Sie die beiden Schrauben auf der Rückseite des Tuners und sanft Preis die beiden Hälften des Gehäuses auseinander (Ich habe meine Fingernägel).


Schritt 2: Stellen etwas Platz

  1. Guitar Tuner für Blinde (mit einem Arduino)

    Guitar Tuner für Blinde (mit einem Arduino)

    Normal 0 false false false EN-GB X-NONE X-NONE
    Um etwas Platz in den Gitarren-Tuner machen, müssen Sie Folgendes tun:

    Ändern Sie das Kunststoffgehäuse

    Ich habe ein Messer, ein paar kleine Dateien und einige Drahtschneider, um Platz für die Arduino in der Rückseite des Gitarrenstimmgerät zu löschen.
    Eines der Schraubenlöcher in dem Fall, müssen entfernt werden, ebenso wie einige der Kunststoff, der die Batterie in Position hält.

    Ändern Sie die Leiterplatte

    Entfernen Sie die schwarze Schaum Batterie-Pad und De-Löten Sie die Batteriekontakte. Einige der Durchgangsbohrung Komponenten können Drähte ziemlich weit von der Rückseite der Platine stecken haben, so ordentlich sie auf und befestigen sie nieder, um so viel Platz wie möglich zu machen.

Schritt 3: Die Schaltung

  1. Guitar Tuner für Blinde (mit einem Arduino)

    Guitar Tuner für Blinde (mit einem Arduino)

    Guitar Tuner für Blinde (mit einem Arduino)

    Um etwas weniger Arduino Eingangspins verwenden, wurden einige der sehr hohe und sehr niedrige Signale Tuner mit Dioden kombiniert.

    Sehen Sie das Bild, wie Sie den Stromkreis zu konstruieren ...

    Die anderen zusätzlichen Komponenten (Kopfhörer, Button etc.) wird in Schritt 5 erläutert.

Schritt 4: Fügen Sie die Arduino

  1. Guitar Tuner für Blinde (mit einem Arduino)

    Guitar Tuner für Blinde (mit einem Arduino)

    Guitar Tuner für Blinde (mit einem Arduino)

    Löten Sie die Arduino auf der Rückseite der Gitarre Tuner-Schaltung

    Um die Arduino vom Gitarren-Tuner-Schaltung zu isolieren, habe ich ein Stück Plastik von einigen Verpackungen und hielt sie an Ort und Stelle mit einer klebrigen Schaumpolster.

    Dieser Build verwendet bis die meisten der Arduino IO-Pins (auch die analogen Eingänge sind als Digitaleingänge verwendet werden).

    Ich fand, dass ziemlich dicken Zahnschmelz Kupferdraht war die einfachste sich für diese Stelle zu verwenden; ihre Isolierung kann off mit einem Lötkolben aufgeschmolzen werden. Allerdings ist es am besten, viel frisches Lot zu verwenden. Ausgehend von der open (geschnitten) Ende des Drahtes scheint auch zu helfen.

Schritt 5: In den Rucksack

  1. Guitar Tuner für Blinde (mit einem Arduino)

    Guitar Tuner für Blinde (mit einem Arduino)

    Guitar Tuner für Blinde (mit einem Arduino)

    Normal 0 false false false EN-GB X-NONE X-NONE
    Einige der Komponenten werden nicht im Inneren des Gehäuses Tuner passen. Also habe ich die Batterie, Knopf, Power-Glättungskondensator und Kopfhörer auf der Rückseite des Tuners.

    Ich machte den Rucksack Anordnung abnehmbar von dem Hauptkreislauf, so dass ich noch in der Lage, um den Tuner für Neuprogrammierung zu öffnen, falls erforderlich.

    Feedback-Probleme

    Ein Widerstand ist in Serie mit dem Kopfhörer genommen worden sind; es kann nicht auf diesen Bildern zu sehen, wie es Aufbau und unter der Leiterplatte befinden. Verwenden Sie den höchsten Wert Widerstand kann das wird laut genug Töne immer noch geben.

    Mit einem großen Wert Widerstand und eine große Leistungskondensator hilft die Ausgabetöne verhindern stören den Tuner; Wenn dies geschieht, kann es dazu führen, dass mit sich selbst interferieren und gehen ein wenig verrückt.

    Ich habe einen 470uF 16V Kondensator und einen 470Ohm Widerstand. Allerdings müssen Sie, um zu finden, was für Sie zu experimentieren.

    Kondensatorplatzierung

    Wenn der Kondensator bleibt dauerhaft aufgeladen (das heißt, wenn es in der Schaltung vor dem Netzschalter) kann es schlecht für die Lebensdauer der Batterie sein, da es einen Leckstrom haben.

Schritt 6: Programe - Arduino-Code

  1. Guitar Tuner für Blinde (mit einem Arduino)
    // In Arduino 1.0.1 geschrieben, für Pro Mini 3,3 V ATmega328
    // Dezember 2012
    // Code den REMAP geschrieben: www.remap.org.uk Eine Wohltätigkeitsorganisation, maßgeschneiderte Geräte für Menschen mit Behinderungen produziert.
    //-Code entwickelt, um eine Arduino nutzen ein Gitarrentuner für den Einsatz zu machen, von der Sack
    // Die Gitarrentuner modifiziert war ein Cherub WST-550
    // Verwenden, zu kopieren, zu modifizieren, verbessern den Code alles, was Sie wollen, aber keine Garantien .... Viel Glück / Spaß haben ....

    // Hier wird die Eigenschaften der Rückkopplungstönen.
    #define NOTE_FLAT 93 // Der Ton abgespielt wird, wenn eine flache Note erkannt wird: G Wohnung
    #define NOTE_SHARP 887 // Der Ton gespielt, wenn eine scharfe Note erkannt wird: D Sharp
    #define NOTE_6E 105 // Der Ton gespielt, wenn ein 6E erkannt wird (aber der Ton ist eigentlich E4)
    #define NOTE_5A 157 // Der Ton gespielt, wenn ein 5A festgestellt wird (aber der Ton ist eigentlich A3)
    #define NOTE_4D 235 // Der Ton gespielt, wenn ein 4D erfasst wird (aber der Ton ist eigentlich D3)
    #define NOTE_3G 352 // Der Ton gespielt, wenn ein 3G erkannt wird (aber der Ton ist eigentlich G2)
    #define NOTE_2B 559 // Der Ton gespielt, wenn ein 2B erfasst wird (aber der Ton ist eigentlich B1)
    #define NOTE_1E 837 // Der Ton gespielt, wenn ein 1E erkannt wird (aber der Ton ist eigentlich E1)
    #define NOTE_DURATION 300 // Alle Zeiten in Millisekunden Die Dauer der Ton gespielt beim Start oder bei der Auswahl eines Zeichenfolge
    #define NOTE_DELAY1 200 // Time dazwischen Feedback Pieptöne
    #define NOTE_DUR2 400 // Die Dauer der Ton gespielt, wenn ein in der Melodie Zeichenfolge erkannt wird

    // Eingangsstifte zum Lesen der Noten LEDs
    int P6e = 7; // Pin an die 6E LED verbunden
    int P5A = 6; // Pin an die LED 5A verbunden
    int P4d = 5; // Pin an die 4D LED verbunden
    int P3G = 4; // Pin an die 3G-LED verbunden
    int P2B = 3; // Pin an die 2B LED verbunden
    int P1E = 2; // Pin an die 1E LED verbunden

    // Eingangsstifte zum Lesen aus den tune LEDs
    int p40 = 11; // Pin an die Dioden, die die 50 und 40 LEDs kombinieren verbunden
    int p30 = 12; // Pin an die +30 LED verbunden
    int p20 = 13; // Pin an die +20 LED verbunden
    int p10 = 14; // (Analog pin 0) Pin an die +10 LED verbunden
    int tune = 15; // (Analog Pin 1) Pin an die 0-LED verbunden
    int n10 = 16; // (Analog Pin 2) Pin an die angeschlossen -10 LED
    int n20 = 18; // (Analog Pin 4) Pin an die angeschlossen -20 LED
    int n30 = 17; // (Analog Pin 3) Pin an die angeschlossen -30 LED
    int n40 = 19; // (Analog Pin 5) Pin an die Dioden, die die -40 und -50 LEDs kombinieren verbunden

    // Andere Stifte
    int spkr = 10; // Output Pin, die an die Kopfhörer über einen Widerstand (Höchster Wert, der noch genug gibt einen lauten Ausgang) verbindet.
    int Taste = 9; // Eingangspin, die mit dem Kettenauswahltaste verbindet.
    int Flach = 8; // Eingangs Pin, dass, wenn der Tuner bereits in Halbton-Modus erkennt?

    // Variablen
    int Offset = 0; // Wie weit verstimmt die Zeichenfolge, zB bei -30 LED leuchtet der Wert dieser Variablen wird -40 sein.
    int note = 0; // Variable zu erfassen die Note wurde erkannt 1 = 1E, 2 = 2B, 3 = 3G, 4 = 4D, 5 = 5A, 6 = 6E.
    int noteSelect = 0; // Diese Geschäfte, die Schnur wurde ausgewählt, wenn die bestimmte Zeichenfolge Modus verwendet 0 = aus.
    int lastoffset = 0; // Zurück Offset gesehen.
    int lastNote = 0; // Zurück note gesehen.

    Leere setup () {

    Serial.begin (9600); // Für die Fehlersuche

    // Setze Pin-Modi
    pinMode (P6e, INPUT);
    pinMode (P5A, INPUT);
    pinMode (P4D, INPUT);
    pinMode (P3G, INPUT);
    pinMode (P2B, INPUT);
    pinMode (P1E, INPUT);

    pinMode (p40, INPUT);
    pinMode (p30, INPUT);
    pinMode (p20, INPUT);
    pinMode (p10, INPUT);
    pinMode (Melodie, INPUT);
    pinMode (n10, INPUT);
    pinMode (n20, INPUT);
    pinMode (n30, INPUT);
    pinMode (n40, INPUT);

    pinMode (flach, INPUT);
    pinMode (spkr, OUTPUT);
    pinMode (Taste INPUT);
    digital (Taste, HIGH);

    // Spielen Sie einige Töne beim Start, damit der Benutzer weiß, dass der Tuner funktioniert.
    Ton (spkr, NOTE_1E, NOTE_DURATION);
    Verzögerung (NOTE_DELAY1);
    Ton (spkr, NOTE_2B, NOTE_DURATION);
    Verzögerung (NOTE_DELAY1);
    Ton (spkr, NOTE_3G, NOTE_DURATION);
    Verzögerung (NOTE_DELAY1);
    Ton (spkr, NOTE_4D, NOTE_DURATION);
    Verzögerung (NOTE_DELAY1);
    Ton (spkr, NOTE_5A, NOTE_DURATION);
    Verzögerung (NOTE_DELAY1);
    Ton (spkr, NOTE_6E, NOTE_DURATION);
    Verzögerung (800);

    // Prüfen, ob der Tuner bereits in Halbtonschritten Abstimmungsmodus. Wenn es ist, spielen einige mehr Töne
    if (digitalRead (flach) == 0) {
    Serial.println ("Halbton-Modus ist auf");
    Ton (spkr, NOTE_FLAT, 500);
    Verzögerung (800);
    Ton (spkr, NOTE_FLAT, 500);
    Verzögerung (800);
    Ton (spkr, NOTE_FLAT, 500);
    Verzögerung (800);
    Ton (spkr, NOTE_FLAT, 500);
    Verzögerung (800);
    }

    }

    Leere Schleife () {
    lastoffset = Offset;
    lastNote = Note;
    ButtonV (); // Prüfen, ob die Taste gedrückt wird
    NotesV (); // Prüfen, ob alle Saiten zu hören ist
    OffsetsV (); // Sehen Sie, wie aus der Melodie die Saiten
    if (beachten! = 0) {// Wenn ein String erkannt wurde
    if (noteSelect == 0 || noteSelect == note) {// überprüfen, ob eine bestimmte Zeichenfolge, die abgestimmt ist
    if (Anmerkung == lastNote) {// Sicherstellen, dass der Lese für eine Weile stabilisiert (dh zwei Wiederholungsmessungen)
    if (Offset == lastoffset) {// Prüfen Messwert stabilisiert hat
    Output (); // Geben Sie Audio-Feedback
    }
    }

    }
    }

    Verzögerung (200);

    }

    Leere Output () {// Ein Hinweis wurde so rechtzeitig erkannt, um ein Feedback geben
    Verzögerung (100);

    // Tone zu zeigen, welche beachten
    if (Anmerkung == 1) {
    Ton (spkr, NOTE_1E, NOTE_DUR2);
    }
    if (Anmerkung == 2) {
    Ton (spkr, NOTE_2B, NOTE_DUR2);
    }
    if (Anmerkung == 3) {
    Ton (spkr, NOTE_3G, NOTE_DUR2);
    }
    if (Anmerkung == 4) {
    Ton (spkr, NOTE_4D, NOTE_DUR2);
    }
    if (Anmerkung == 5) {
    Ton (spkr, NOTE_5A, NOTE_DUR2);
    }
    if (Anmerkung == 6) {
    Ton (spkr, NOTE_6E, NOTE_DUR2);
    }
    Verzögerung (100);

    // Tone um Feedback darüber, wie hoch oder zu tief zu geben.
    if (Offset> 1 || Offset <0) {
    Offset = Offset * 5;
    if (Offset <0) {
    Offset = Offset * -1;
    Ton (spkr, NOTE_FLAT, offset);
    Verzögerung (250);
    Ton (spkr, NOTE_FLAT, offset);
    Verzögerung (250);
    Ton (spkr, NOTE_FLAT, offset);
    Verzögerung (250);
    }
    else {
    Ton (spkr, NOTE_SHARP, offset);
    Verzögerung (250);
    Ton (spkr, NOTE_SHARP, offset);
    Verzögerung (250);
    Ton (spkr, NOTE_SHARP, offset);
    Verzögerung (250);
    }
    }
    else {// Was zu spielen, wenn die Saite gestimmt ist
    if (Anmerkung == 1) {
    Ton (spkr, NOTE_1E, NOTE_DUR2);
    }
    if (Anmerkung == 2) {
    Ton (spkr, NOTE_2B, NOTE_DUR2);
    }
    if (Anmerkung == 3) {
    Ton (spkr, NOTE_3G, NOTE_DUR2);
    }
    if (Anmerkung == 4) {
    Ton (spkr, NOTE_4D, NOTE_DUR2);
    }
    if (Anmerkung == 5) {
    Ton (spkr, NOTE_5A, NOTE_DUR2);
    }
    if (Anmerkung == 6) {
    Ton (spkr, NOTE_6E, NOTE_DUR2);
    }
    Verzögerung (400);
    }

    }

    nichtig ButtonV () {// Prüfen, ob eine bestimmte Zeichenfolge ausgewählt
    if (digitalRead (Knopf) == 0) {// Lesen Sie die Taste
    noteSelect ++; // Increment Note ausgewählt jeden Tastendruck

    if (noteSelect == 7) {// Töne zu spielen, wenn alle Noten haben durch das heißt, den normalen Modus gefahren worden
    noteSelect = 0;
    Ton (spkr, NOTE_6E, NOTE_DURATION);
    Verzögerung (NOTE_DELAY1);
    Ton (spkr, NOTE_5A, NOTE_DURATION);
    Verzögerung (NOTE_DELAY1);
    Ton (spkr, NOTE_4D, NOTE_DURATION);
    Verzögerung (NOTE_DELAY1);
    Ton (spkr, NOTE_3G, NOTE_DURATION);
    Verzögerung (NOTE_DELAY1);
    Ton (spkr, NOTE_2B, NOTE_DURATION);
    Verzögerung (NOTE_DELAY1);
    Ton (spkr, NOTE_1E, NOTE_DURATION);
    Verzögerung (NOTE_DELAY1);
    }

    if (noteSelect> 0) {// Töne zu spielen, wie die Noten zyklisch durchlaufen
    Ton (spkr, NOTE_1E, NOTE_DURATION);
    Verzögerung (NOTE_DELAY1);
    }
    if (noteSelect> 1) {
    Ton (spkr, NOTE_2B, NOTE_DURATION);
    Verzögerung (NOTE_DELAY1);
    }
    if (noteSelect> 2) {
    Ton (spkr, NOTE_3G, NOTE_DURATION);
    Verzögerung (NOTE_DELAY1);
    }
    if (noteSelect> 3) {
    Ton (spkr, NOTE_4D, NOTE_DURATION);
    Verzögerung (NOTE_DELAY1);
    }
    if (noteSelect> 4) {
    Ton (spkr, NOTE_5A, NOTE_DURATION);
    Verzögerung (NOTE_DELAY1);
    }
    if (noteSelect> 5) {
    Ton (spkr, NOTE_6E, NOTE_DURATION);
    Verzögerung (NOTE_DELAY1);
    }
    }
    }

    nichtig OffsetsV () {// Liest die Melodie LEDs und setzt das Lesen in der Variablen-Offset
    Offset = 0;
    if (digitalRead (p40) == 0) {
    Serial.println ("p40");
    offset = 40;
    }
    if (digitalRead (p30) == 0) {
    Serial.println ("p30");
    offset = 30;
    }
    if (digitalRead (p20) == 0) {
    Serial.println ("p20");
    Offset = 20;
    }
    if (digitalRead (p10) == 0) {
    Serial.println ("p10");
    Offset = 10;
    }
    if (digitalRead (tune) == 0) {
    Serial.println ("tune");
    Offset = 1;
    }
    if (digitalRead (n40) == 0) {
    Serial.println ("N40");
    offset = -40;
    }
    if (digitalRead (n30) == 0) {
    Serial.println ("N30");
    offset = -30;
    }
    if (digitalRead (n20) == 0) {
    Serial.println ("n20");
    offset = -20;
    }
    if (digitalRead (n10) == 0) {
    Serial.println ("n10");
    offset = -10;
    }
    }

    nichtig NotesV () {// Liest die Notiz LEDs und speichert die Ergebnisse in der Notiz variable
    beachten = 0;
    if (digitalRead (P6e) == 0) {
    Serial.println ("P6e");
    beachten = 6;
    }
    if (digitalRead (P5A) == 0) {
    Serial.println ("P5A");
    beachten = 5;
    }
    if (digitalRead (P4D) == 0) {
    Serial.println ("P4d");
    beachten = 4;
    }
    if (digitalRead (P3G) == 0) {
    Serial.println ("P3G");
    beachten = 3;
    }
    if (digitalRead (P2B) == 0) {
    Serial.println ("P2B");
    beachten = 2;
    }
    if (digitalRead (P1E) == 0) {
    Serial.println ("P1E");
    beachten = 1;
    }
    }

Schritt 7: aufräumen

  1. Guitar Tuner für Blinde (mit einem Arduino)

    Guitar Tuner für Blinde (mit einem Arduino)

    Guitar Tuner für Blinde (mit einem Arduino)

    Um die externen Komponenten I bedeckte sie in Schutz Sugru ; es ist eine wunderbare Selbsteinstellung Gummi, die aus viel wie Plastilin beginnt.

    Es hat nicht funktioniert ganz so sauber wie ich gehofft hatte, aber es ist sicherlich funktional und hart. Wenn ich das Projekt wieder würde ich wahrscheinlich versuchen, eine neue Rückfall 3D-Motiven bedruckt sind, sonst würde ich anders (interessanter) Farben Sugru verwenden.

Schritt 8: Lessons Learnt und Hinweise

  1. Guitar Tuner für Blinde (mit einem Arduino)
    Normal 0 false false false EN-GB X-NONE X-NONE
    Hier sind ein paar Lektionen, die ich auf dem Weg gelernt:

    Der Riese Kondensator

    Ich musste den Kondensator als ich war immer Feedback Fragen zu aktualisieren; Das Arduino würde ein Ton ausgegeben und der Lärm wäre die Stromversorgung setzen würde vom Tuner abgeholt werden, wodurch es zu Fehlanzeigen zu geben.

    Analogeingänge

    Mein ursprünglicher Plan für diesen Build war es, die Widerstände zwischen allen LEDs setzen, wodurch eine Grund Digital-zu-Analog-Wandler bauen. Ich könnte dann verwendet werden, haben eine ATtiny (im Grunde, ein Mini Arduino), um die analoge Spannungen zu lesen.

    Dies wäre eine effizientere und billigere System haben. Das Problem war jedoch, dass auch nach vielen Änderungen und sehr vorsichtig Löten von oberflächenmontierbaren Widerständen, konnte ich nicht diese Methode, um zuverlässig zu arbeiten.

    Andere Dinge, die ich ändern kann:

    · Neugestaltung der Rückfall (eventuell 3D-Print-it)

    · Verwenden Sie eine größere Taste auf der Rückseite

    Ein sehr ähnliches Projekt wurde mir gezeigt:
    http://lushprojects.com/guitartuner/