10 Schritt:Schritt 1: Wie groß ist der Big Piano? Schritt 2: Big Piano Design Choices Schritt 3: Andere Überlegungen zum Entwurf Schritt 4: Erstellen Sie die Tasten leuchten Schritt 5: Welche Tasten gedrückt wurden? Schritt 6: Wie Sound machen Schritt 7: Gesteuert wird es (... mit einem Arduino) Schritt 8: Planen und Erstellen des Piano Körper Schritt 9: Erstellen Sie den Schlüssel Arbeits Schritt 10: Nach dem letzten Vorhang ...

    Viele Leser werden einen Tom Hanks-Film aus dem Jahr 1988 als "Big" erinnern. In dem Film ein kleiner Junge wird auf übernatürliche Weise in eine zwanzig-etwas Mann verwandelt und findet heraus, wie es ist, groß zu sein. Vielleicht ist die ikonische Szene des Films hat zwei der Figuren tanzen auf einem hochskaliert "Big Piano" - das ist die Szene jeder scheint sich daran zu erinnern. Sie drehten den Film in ein Broadway-Musical und später lizenziert die Show in Gemeinschaftstheater durchgeführt werden. Meine Gemeinde Theater ( South Valley Civic Theatre in Morgan Hill, Kalifornien) beschlossen, "Big the Musical" als Teenager Show zu machen, und das Produktionspersonal an uns herangetreten, um einen Big Piano, das halten konnte bauen ihre eigene neben der Film-Version und geben unsere Show ein "wow" Moment. Nicht viele Menschen brauchen, um einen Big Piano zu bauen, und wenn Sie das tun, es ist wahrscheinlich, dass Sie bestimmte Ziele und Randbedingungen unterscheiden sich von denen wir konfrontiert sind. Diese instructable weniger eines detaillierten Plans und einer Reihe von Notizen zur Erläuterung der Probleme, die wir lösen wollten, und die Art und Weise haben wir uns für sie zu lösen. Ich hoffe, dass andere Big Piano Builder können aus unseren Erfahrungen zu lernen. Schritt 1: Wie groß ist der Big Piano? Die Breite eines Klaviers durch menschliche Ergonomie und der Pitch-Bereich der Musik, die Sie brauchen, um zu spielen bestimmt. In diesem Fall hat das Klavier, auf getanzt werden, und das bedeutet eine weiße Taste groß genug für einen menschlichen Fuß zu Schritt auf. Das heißt: etwa 7 ". Die große Musik die Zeichen auf dem Klavier zu spielen hat eine 3 bis 4 Oktaven Wir haben uns für vier Oktaven IE- 28 weißen Tasten, die jeweils 7.." Breit. Wir haben 6 "Endkappen zum Klavier So war die Gesamtlänge (28 x 7) + 12 = 208". Die Tiefe des Klaviers ist flexibler. Wir wollten unsere piano, um die Proportionen eines echten Klavier anzunähern, und das war ein 7: 1 Tiefe-Verhältnis für weißen Tasten Breite. Die Dinge einfach halten wir gingen für eine Gesamttiefe von 48 ". Die Höhe ist auch flexibel. Wir entschieden uns, leuchten die vor jeder Schlüssel mit einem Quadrat aus Licht. Mit einigen zusätzlichen Höhenangaben landeten wir mit einer Gesamthöhe von 12 ". Also alles in allem das Design Ziel war 17 Meter lang, 4 Meter tief und 1 Fuß hoch. Das ist großer Schritt 2: Big Piano Design Choices Nachdem Sie ausgearbeitet, wie groß der Big Piano sein sollte, gibt es ein paar andere Design-Entscheidungen getroffen werden: Aussehen: Zumindest muss das Klavier wie ein Klavier zu suchen. Für jede Oktave gibt es 7 weißen Tasten und 5 schwarzen Tasten. Die schwarzen Tasten sind dünner als die weißen Tasten. Wir verwendeten 7 "für die weißen Tasten und 4.5" für die schwarzen Tasten. Wenn Sie genau hinschauen, sehen Sie, dass die schwarzen Tasten sind nicht zwischen den weißen Tasten zentriert (mit Ausnahme der G # / Ab)), sondern sind schräg zu den Seiten. Wir verzerrt den schwarzen Tasten 1/3, 2/3 für die Spaltung zwischen den weißen Tasten. Beleuchtung: In dem Film leuchtet jeder einzelne Klaviertasten, wenn gespielt. Es ist ein toller Blick, und soweit wir es beurteilen konnte sie, indem sie die Schlüssel von durchscheinenden Acryl getan. Das Acryl hat dicke, die Akteure tanzen auf sie zu unterstützen ist. Acryl ist teuer. einem 1/2 "x 4 'x 8' Blatt kostet ca. € 600. Wir wollten unsere Big Piano für unter 2000 € zu bauen -. so mit die gesamte Hauptlicht up wurde nicht passieren, sondern für die Herstellung nur die haben wir uns . Vor dem Hauptlicht up verwenden wir immer noch durchscheinenden Acrylglas als Lichtdiffusor handeln, aber wir verwenden viel weniger von it- und weil es nicht strukturellen können wir das dünne Zeug verwenden - 1/8 ". Play-Fähigkeit: Sollte das Klavier spielbar sein? Es muss nicht so sein. Sie können ein Klavier im Orchestergraben der Musik vorstellen, während die Schauspieler tanzen die Noten auf dem Big Piano. Sie können sogar rig up die Lichter auf dem Klavier zu entsprechen die gespielten Noten. So lange, wie die Akteure wissen, den Fuß auf der rechten Taste zum richtigen Zeitpunkt gesetzt, wird niemand wissen, dass sie nicht wirklich spielen. Wir haben überlegt, dass die Option, und während es ist definitiv einfacher, beschlossen wir unsere Klavier tatsächlich spielbar zu machen. Das heißt: wenn ein Schauspieler Schritte auf einer Taste, die Note gespielt wird und das Licht geht an. Es ist ein authentischer Look, und es fügt definitiv in die kühlen Faktor des Endergebnisses. Spielbar schwarzen Tasten: Haben die schwarzen Tasten müssen spielbar sein? Die Musik in der Partitur nicht verlangen. Es ist alles C-Dur. Es wäre cool, um alle Tasten abgespielt haben, aber es ist nicht notwendig, fügt es die Komplexität, und wir entschieden uns, es nicht zu tun. Schritt 3: Andere Überlegungen zum Entwurf Zusammen mit den wichtigsten Design-Ziele, zu berücksichtigen waren andere Faktoren: * Budget: Mit 28 weißen Tasten, werden alle Geld auf einem einzigen Tasten verbracht um 28. multipliziert Hinzu kommt, dass die Nicht-Schlüsseloverhead des Klaviers werden und es ist nicht schwer, eine Menge Geld ausgeben. Kommerzielle Versionen des großen Klavier Verkauf für rund 20 T € und unser Gesamtbudget betrug <€ 2k - so müssen Sie nach einer preiswerten Design zu entscheiden. * Anbieter-Fähigkeit / Portabilität: Unser Theater hat nicht viel Flügel Platz und es verfügt nicht über eine Stufe unterhalb Aufzug in Satz Elemente in Position zu bringen. Das Klavier hat portable genug, um auf und hinter der Bühne genommen werden wird. Wir waren auch fest auf der Rückseite der Bühne Platz. Wir haben unsere piano fach-fähig, so dass wir sie effizient zu speichern könnte, während es nicht in einer Szene. * Gewicht: Wir setzen in erster Linie auf die menschliche Muskel unseren Versatzstücke zu bewegen. Ein 17 Fuß-Sperrholz Klavier ist ganz Schwer aber wir brauchten, es zu halten, um das Licht Portabilität Anforderung zu erfüllen. * Skills: Für unsere Big Piano haben wir eine Reihe von Fähigkeiten. Design- Trainieren Sie eine praktische Design, das aus verschiedenen Trades Zielkonflikte. Zimmerei - Bauen Sie die Mechanik des Klaviers. Electronics - Bauen Sie ein Micro-Controller und zugehörige Schnittstellenschaltungen. Software - Programm der Mikrocontroller, um die Aufgabe, die wir wollen, durchzuführen. Auch wenn Sie das Glück haben, ein oder zwei Menschen, die sie tun können, alle sind, ist es eine große Aufgabe, und es ist am besten, wenn die Arbeit kann so Menschen mit unterschiedlichen Schwierigkeitsstufen können eine contribution.Step 4 machen aufgebaut sein: Making the Keys Licht nach oben Der Plan war, eine 7 "x7" Acryl Quadrat auf der Vorderseite jedes Klavier-Taste leuchtet, wenn der Darsteller stand auf der Taste. Als zusätzlichen Bonus, würde jede Note innerhalb der Oktave eine einzigartige Farbe haben, damit das Publikum konnte leicht sehen, wenn die Noten eine Oktave auseinander waren gespielt. Der Trend in diesen Tagen ist es, LEDs in jeder neuen Beleuchtung Anwendung zu verwenden, und das ist keine Ausnahme. Wir wollten farbige Lichter und wir wollten, dass sie steuerbar sein über einen Micro-Controller. Eine schnelle Übersicht über den Markt führte uns zu individuell steuerbaren RGB-LED-Module, die Daisy sein können miteinander verkettet zu entdecken. Das Modul wir wählten hat 4 LEDs pro Modul und jede LED ist eine RGB-LED. Das heißt: Es ist eine rote, grüne und blaue LED in einem einzigen Paket. Jedes Modul besitzt einen LED-Treiber-Chip, der eine einfache digitale Schnittstelle liefert zur Steuerung des Moduls. Es gibt 4 Eingängen zu jedem Modul: * 12V * Daten (5V TTL) * Uhr (5V TTL) * Boden Jedes Modul hat die gleichen Ausgangssignale, so kann es zu dem nächsten Modul in der Kette verbunden sein. Die Art, wie diese Module arbeiten ist interessant. An einem Ende gibt es Daten und Taktleitungen. Die Farbe jeder Modul wird unter Verwendung von 24 Bits von RGB-Daten angegeben. Nach 24 Bits werden in einem Modul getaktet, geht es in Durchgangsmodus, und alle nachfolgenden Bits werden auf der ganzen Linie zu dem nächsten Modul übertragen. Wenn die Taktleitung inaktiv für eine gewisse Zeitdauer jedes Modul kehrt in den Ausgangszustand, wo es neue Daten anzunehmen. Durch Austakten Nx24 Bits die Farbe der N LED-Modulen gesteuert werden können. Um die Daten und Taktleitungen zu steuern Ich habe die SPI (Serial Peripheral Interconnect) Bus der Mikrocontroller. Die ATmega328P hat SPI-Bus-Hardware-Unterstützung, so die Effizienz ich diese eher als ein Bit-knallte Ansatz zu maximieren. Für die Big Piano haben wir beschlossen, 2 Module pro Taste verwenden, um genügend Lichtleistung zu erhalten. Das gab uns 56 Module insgesamt. Die Daten wurden bei etwa 4 MHz getaktet, so dass die gesamte LED-Kette nahm um 0.34ms einrichten. Ein Interrupt-Service-Routine wird alle 17ms was eine Refresh-Rate von rund 60 Hz bezeichnet. Die Macht von den LED-Modulen verbraucht, hängt von der Farbe angezeigt. Der schlimmste Fall ist voll Weiß (255,255,255). Experimentell, dass verbraucht etwa 1,38 W / Modul. In dieser Anwendung waren wir mit rund 8 Module zu jeder Zeit zu tun haben, also war ich nicht besorgt über maxing Strom, aber der Stromverbrauch kann ein limitierender Faktor in einigen Anwendungen. Ressourcen: Adafruit hat ein gutes Tutorial zum Antrieb der RGB LED-Module. https://www.adafruit.com/products/683 Wenn Sie weniger für die Module bezahlen wollen, können Sie sie direkt von chinesischen Anbietern kaufen: Suche nach "WS2801 LED RGB" http://www.aliexpress.com/ Big Piano Firmware. LED-Treiber. https://github.com/deadsy/bigpiano/blob/master/src/led.cpp https://github.com/deadsy/bigpiano/blob/master/src/led.h Schritt 5: Welche Tasten gedrückt wurden? Es gibt 28 weißen Tasten auf dem Klavier die wir brauchen, um zu verfolgen. Ein naiver Ansatz wäre jede Taste auf einen einzelnen Eingang des Microcontroller zu verdrahten. Das würde funktionieren, wenn der Mikrocontroller genug IO Pins, aber in der Regel tun sie nicht. Die ATmega328P sicherlich nicht. Es würde auch bedeuten 29 Drähte (28 + 1 gemeinsam) mit den Schaltern. Das ist mehr Arbeit und Material als uns lieb ist, so können wir besser machen? Die Menschen haben dieses Problem in der Vergangenheit konfrontiert, und eine gemeinsame Lösung ist Matrix Scannen. Die wichtigste Erkenntnis ist, dass wir, um die Schlüsselstaaten (oben / unten) wissen wollen, aber wir brauchen nicht, um sie im gleichen Augenblick wissen. Durch das Scannen der Schlüssel über die Zeit (wenn auch sehr schnell in menschlicher Hinsicht) können wir die Menge an Hardware wir brauchen zu reduzieren. In unserem Fall die Tasten angeordnet sind wir in 4 Reihen (Oktaven) und 7 Spalten (weiße Taste Noten). Wir scannen die Spalten (Noten) ein zu einer Zeit und sehen, welche dieser Vermerke in den Oktaven aktiv sind. Nachdem ich 7 Scans (für jede Note) werden wir den Zustand für jede der 28 Tasten kennen. Wir geben den Hinweis zum Scannen mit 3 Ausgänge (8 Möglichkeiten - wir brauchen nur 7 Notizen) und 4 Eingänge (4 Oktaven). Wir benötigen 7 Drähte für die Noten und 4 Drähte für die Oktaven. Wir können das Problem mit 7 IO-Pins und 11 Drähte zu lösen. Dies ist eine große Verbesserung. Es gibt ein paar Details: * Schlüssel Ghosting: Wegen der Natur der Matrix des Tastenverdrahtungs sie für mehrere Tasten möglich drückt, um irrtümlich als das Drücken einer Taste, die nicht gedrückt ist, interpretiert werden. Durch das Hinzufügen einer Diode an jedem Schalter zu verhindern, haben wir Strom von hinten in der Matrix fließt, und das verhindern. * Column / Note Selection: Wir müssen nur 1 Note zur Zeit (von 7) wählen und wir sind kurz auf IO-Pins, so dass der beste Weg, damit umzugehen ist, eine 3 zu verwenden: 8-Decoder. Wir verwendeten einen 74LS138. Dass eine aktive niedrige Ausgangs, so dass der Schaltkreis ist vielleicht weniger intuitiv als mit einer + 5V-Ausgang angesteuert. * Eingabeschaltkreis: die Eingänge der ATmega328P kann so konfiguriert werden, interne Pull-up-Widerstände aufweisen. Das ist gut. Es erspart uns mit, um sie selbst zu verdrahten. * Key De-Bouncing: Mechanische Schlüssel nicht schließen oder zu öffnen sauber. Sie hüpfen schnell zwischen offenen und geschlossenen Zustand über einen längeren (miiliseconds) Zeitraum. Wir lösen dieses Problem, indem Filterung der wichtigsten Ereignisse in der Software. Einfach gesagt haben wir nicht einen Schlüssel / unten Ereignis erkennen, bis der betreffende Staat auf dem Schalter für einige Anzahl der Scans beibehalten. Wir können noch, die Nummer oder unten, um die Taste mehr oder weniger "empfindlich" zu machen. Ressourcen: Eine interessante Diskussion über Schlüssel Scannen und Schlüssel Geschwindigkeitserfassungs kommerziellen Tastaturen. http://www.openmusiclabs.com/learning/digital/input-matrix-scanning/keyboard/ Big Piano Firmware. Tastaturmatrix-Treiber. https://github.com/deadsy/bigpiano/blob/master/src/key.cpp https://github.com/deadsy/bigpiano/blob/master/src/key.h Schritt 6: Wie Sound machen Diese Show ist eine musikalische so bereits ein Orchestergraben voller Instrumente - darunter ein Digital-Piano. Der einfachste Weg, um einen Big Piano-Sound wie ein Klavier machen, ist es, ihn an ein Digital-Piano und der einfachste Weg, das zu tun, ist mit MIDI. MIDI ist ein serielles Protokoll in den frühen 1980er Jahren erfunden, damit ein digitales Musikinstrument auf andere digitale Musikinstrument (e) zu steuern. Es ist ähnlich wie bei einer seriellen RS232-Anschluss außer: * Es hat eine seltsame Baudrate (31250 Baud). * Es verwendet eine Stromschleife statt Spannung Signalisierung (um Brummen treibenden Masseschleifen zu vermeiden). Glücklicherweise gibt es ein Arduino Schild, das eine MIDI-Hardware-Schnittstelle implementiert, zu ergänzen, dass eine serielle Schnittstelle Software und Sie haben eine Arbeits MIDI-Schnittstelle verfügen. Für unsere Zwecke brauchen wir nur zwei Arten von MIDI-Nachrichten zu generieren: Hinweis ON: Wird erzeugt, wenn eine Taste gedrückt wird. Dies teilt das Klavier, um die Notiz zu starten. Hinweis OFF: Wird erzeugt, wenn eine Taste losgelassen wird. Dies teilt das Klavier, um die Notiz zu stoppen. Jeder MIDI-Befehl besteht aus 3 Bytes: * Der Befehl (beachten Sie on / off) * Die Velocity (wie schnell die Note gedrückt / freigegeben) * Die Note (was bestimmte Taste gedrückt wurde / freigegeben) Die Wahl für die Velocity wirft Fragen auf. Einige Tastaturen kann erkennen, wie schnell Sie auf der Tastatur drücken und sich die Art (meist Volumen) des erzeugten Klang. The Big Piano können den Schlüssel Geschwindigkeits- nicht erkennen, so dass wir verwendet eine vordefinierte, konstante Velocity. Dies macht das Klavierspiel weniger nuanciert, als es sonst der Fall wäre, aber dies weniger ein Problem für ein Klavier spielte mit Füßen ist. Ressourcen: Sparkfun macht das MIDI I Schild verwendet. https://www.sparkfun.com/products/9598 Big Piano Firmware. MIDI und UART-Treiber. https://github.com/deadsy/bigpiano/blob/master/src/midi.cpp https://github.com/deadsy/bigpiano/blob/master/src/midi.h https://github.com/deadsy/bigpiano/blob/master/src/uart.cpp https://github.com/deadsy/bigpiano/blob/master/src/uart.h Schritt 7: Gesteuert wird es (... mit einem Arduino) Es ist eine offensichtliche Wahl, um ein Micro-Controller verwenden, um all diese Funktionen zusammen zu binden, und die "Arduino" Mikrocontroller und ihre zugehörigen Schildplatten bieten eine billige, verfügbar ist, und gut unterstützt Plattform für Gebäude Dinge wie diese. * Software Build Environment and Tools: Unser Build-Umgebung ist Linux, AVR GCC, AVR libc und Stellen. Der Code ist nominell C ++, aber der Code verwendet keine C ++ Funktionen - es ist effektiv C. Wir verwenden die TinyUSB ISP und avrdude, um die kompilierten Binärdateien in das Gerät schieben. Note- Wir eingebettete Firmware-Programmierer aus Weg zurück, und finden Sie die Arduino Software-Umgebung albern zu sein. Also haben wir es nicht verwenden. Wir lieben die Hardware Arduino genannt, aber in Wirklichkeit ist es nur ein Atmel-Mikrocontroller auf einem Brett. Wir verwenden nicht die Arduino Bootloader, IDE oder Bibliotheken. Wenn Sie wie das Zeug, mehr Leistung für Sie, was auch immer die Arbeit done- für uns ist es gerade in die Quere kommt. * Debugging: Der ATmega328P hat eine einzige serielle Schnittstelle und die MIDI-Hardware nutzt sie, so dass es nicht für die Fehlersuche verwendet werden. Wir mögen eine Form der Ausgabe für die Fehlersuche, so haben wir eine 16x2 LCD an das System. Es ist ein generischer Typ HD44780 Gerät, und wir hakte es in 4-Bit-Modus, so dass es eine minimale Anzahl von IO-Pins verwenden würde. Fügen Sie den entsprechenden Treiber-Code und Sie können printf bis zur LCD senden. * Stromversorgung: Der Arduino braucht + 5V und die LED-Module müssen + 12V. A günstig, einfach und in der Lage Lösung ist neu dazu ein Netzteil aus einem alten PC. Die meisten PC-Netzteile verfügen über eine Vielzahl von Leitungen, die von ihnen. Die meisten von diesen entfernt werden kann. Eine Sache, die Sie achten müssen ist die "power on" Signal. Dies ist ein Signal von der Hauptplatine, um die PS, die für Dinge wie Wake-on-LAN verwendet wird. Das Motherboard Gründen es die PS sagen einzuschalten. Wenn es nicht geerdet ist die PS bleibt ausgeschaltet - so dass wir es für eine geerdete immer auf Stromversorgung. * Elektrische Geräusche: Die Leitungen für die Tastaturmatrix und der LED-Modulreihe sind 17 Meter lang. Sie arbeiten bei Frequenzen in dem niedrigen MHz. Die MIDI-Kabel mit dem Klavier in der Grube ist etwa 30 Meter lang. Elektrisches Rauschen ist ein Anliegen. Ein Live-Theateraufführung hat Funkmikrofone, DMX gesteuerte Lichtdimmer und anderen elektrischen Störquellen. Glücklicherweise ist die Basis-Design hatte keine Probleme mit Lärm und wir wussten nicht, um etwas Besonderes zu Lärmprobleme zu beheben tun müssen. Wir haben beginnen mit der Denkweise, dass Lärm ein Problem sein könnte, und aus diesem Grund haben wir begrenzt Schaltung Frequenzen und gewährleistet, wir hatten angemessenen Rauschabstand in der Schlüsselscanschaltungen. Ressourcen: Big Piano Firmware. Schauen Sie sich main.cpp für die Top-Level-Schleife, die die Funktionselemente integriert. https://github.com/deadsy/bigpiano/blob/master/src/main.cpp Schauen Sie sich lcd.cpp und lcd.h für den HD44780 LCD-Treiber. https://github.com/deadsy/bigpiano/blob/master/src/lcd.cpp https://github.com/deadsy/bigpiano/blob/master/src/lcd.h Schritt 8: Planen und Erstellen des Piano Körper The Big Piano ist groß, aber es hat leicht, stark, günstig und tragbar sein. Es ist eine interessante Mischung aus widerstreitenden Zielen, und der Trick ist, innerhalb der Grenzen zu navigieren und hoffentlich mit einem Klavier, das gut funktioniert von der anderen Seite zu kommen. Ich nehme an, wenn Sie hatte einen Hintergrund in den Aufbau ganzer Körper interaktive Musikinstrumente wäre alten Gebiet, aber wir nicht. Wir stecken viel geistige Anstrengung zu versuchen, Probleme zu antizipieren und geben uns viele Möglichkeiten, damit wir einen Plan B haben, wenn alternative Plan A nicht funktioniert hat. * Technologie: In unserem Theater wir meistens Dinge zu bauen mit Holz. Wir können Sachen mit Metall zu bauen, aber das läuft in Gewicht und Budgetbeschränkungen. In unserem Ruhemomente dachten wir, ein Glasfaser-Klavier mit eingespritzten Schaum vielleicht stark und wunderbar leicht sein, aber wir haben nicht die Zeit oder die Möglichkeit dafür. So Holz ist das wichtigste Material. Holz hat auch den Vorteil, dass sie zu einem gewissen Grad von nur etwa jeder grokked wird. * Material Auswahl: 3/4 "Sperrholz wurde als zu schwer und stärker als wir brauchten abgelehnt Frühere Erfahrungen vorgeschlagen, dass richtig konstruiert 1/2." Sperrholz kann sowohl starke und relativ leicht sein - so 1/2 "CDX Sperrholz war unser Haupt Material. Randfugen zwischen den Stücken aus Sperrholz wurden mit aufgeschraubten n-geklebt furring Streifen gesichert. Für die Lagerung wussten wir bereits, wir brauchten, um unsere hochklappen Klavier. Das bedeutete, dass das Klavier wurde in zwei Hälften 8,5 Fuß mit Scharnieren zwischen ihnen gemacht. Jede Hälfte hatte 2 Oktaven von Schlüsseln und waren im Wesentlichen Kopien voneinander. Wir haben bereits Erfahrung Gebäudemodell Flugzeugflügeln aus Holz hatten, und wir sahen Parallelen zwischen Flügel und der Big Piano. So wie Flügel haben Holme, haben wir uns entschlossen, jeden Tastatur zur Hälfte mit 3 Kastenträger über die gesamte Länge des Klaviers Hälfte bauen. Die Rückseite Kastenträger: * Macht den Rücken des Klaviers * Unterstützt die Rückseite der schwarzen Taste * Stellt die Gelenkpunkt für die weißen Tasten Die mittlere Kastenträger: * Unterstützt die vor dem schwarzen Schlüssel * Bietet einen Anschlag für weiße Taste Reise Der vordere Kastenträger: * Enthält pro Taste Lichtfächer auf der Vorderseite * Bietet einen Anschlag für weiße Taste Reise * Stellt einen Raum für die Tastenmontage auf der Rückseite Die drei Kastenträger sind dann "genäht" zusammen mit Traversen: * Jedes Klavier Hälfte verfügt über 10 statischen schwarzen Tasten. Montage sie zwischen den hinteren und mittleren Kastenträger hält diese beiden Elemente fest mit Bezug zueinander. * 2 Stücke von 18 "x 48" Sperrholz an jedem Ende, auf der Unterseite, zwischen allen drei Strahlen, hält alles zusammen. Wir waren etwas besorgt, dass wir nicht genug Querverstrebung, aber in Wirklichkeit war es in Ordnung. Das ist der Hauptteil der Struktur. Jede Klavierhälfte eine 6 "Endkappe. Strukturell sind nur kosmetische, aber auf einer Hälfte es einen Hohlraum zur Aufnahme der Stromversorgung und der Mikroregler liefert. Ressourcen: Big Piano CAD-Zeichnung. https://github.com/deadsy/bigpiano/blob/master/cad/bfp.dxf Schritt 9: Erstellen Sie den Schlüssel Arbeits Wenn Sie einen großen Piano mit einer Art Touch-Sensor auf den Tasten gebaut, dann sie sein könnten mechanisch static- aber das ist nicht wir. Da wir uns für einfache Druckschalter verwenden, um die Tastendrücke zu erkennen, müssen die Tasten zu bewegen, und ihre mechanische Konstruktion wird die "Schlüssel" Problem beim Aufbau der Big Piano. Das erste, was wir taten, war Prototyp einer einzigen Taste so konnten wir keine mechanischen Probleme zu lösen und erarbeiten einen Entwurf, der bis zur vollen 28 Tasten skaliert werden könnte. Die einzigen Tasten Prototyp war sehr wertvoll und rettete uns vor, Fehler zu machen in einem größeren Maßstab. Wir entdeckten mehrere Dinge: * Jede Taste muss verstärkt werden, um die Spiel Last zu bewältigen sein. Eine unverstärkte Schlüssel zu viel biegen und würde wahrscheinlich in Gebrauch brechen. Schließlich haben wir gebaut die Schlüssel von 1/2 "Sperrholz und verstärkt sie mit entweder 3 oder 4 furring Streifen entlang der Länge der Schlüssel. Mit dieser Verstärkung (und geeignete Träger) können die Tasten eine 200 £ Person Sprung auf sie zu behandeln. * Keys müssen sowohl in Aufwärts- und Abwärtsbewegung zurückgehalten werden. Es ist offensichtlich, angehalten werden, wie die Taste gedrückt wird die Tastenbewegung braucht. Weniger offensichtlich ist der Schlüssel sollte auch nach oben hin begrenzt werden. Wenn Sie nicht zurückhalten weiß es Sie am Ende mit einem "sproingggg" Art Lärm / Funktion wie die Taste kehrt zurück. * Keys müssen aufgefüllt werden. Holz auf Holz ist zu laut. Genau wie der Filz in einem echten Klavier, die Big Piano macht zügigen Einsatz von Schaumband zu pad alle Oberflächen, die miteinander kollidieren. Es hält den Lärm und macht die Tasten sich besser fühlen. Key Scharnierend: Zunächst verfolgte wir die simple / offensichtliche Wahl für Tastenanschlag. Dies wurde auf ein Türscharnier am äußersten Ende des Schlüssels zu stellen und jede Taste mit zwei Federn, die zwischen der Unterseite des Schlüssels zu unterstützen und es mechanische Unterstützung. Dieser Ansatz funktionieren kann, aber es hat einige Nachteile: * Metall-Scharniere sind in der Regel laut zu sein und eine einzige Scharnier (alles was wir haben Platz für) ermöglicht es einer Seite zur anderen zu spielen auf dem Schlüssel. * Scharniere und Federn sind teuer und die Kosten unterliegt x28 Skalierung. Wir entschieden uns, ein riskanter Ansatz versuchen (meist um Kosten niedrig zu halten). Wir haben uns entschieden, die mechanische Elastizität des Holzes selbst zu verwenden, um sowohl das Scharnier und die Feder für jeden Schlüssel zu bilden. Eine Zunge des Holzes am Ende jeder Taste ist links unverstärkten und wirkt wie ein Holzlineal auf dem Rand eines Tisches statt. Schritt 10: Nach dem letzten Vorhang ... Zimmer (s) für Verbesserungen: Wir hatten keine signifikanten regrets "oh, wir sollten es so gemacht haben". Es gibt viele Möglichkeiten, einen Big Piano zu bauen, aber nicht zu viele, die weniger als € 2000. Abgesehen davon gibt es immer ein paar links über Ideen kosten. * Die (nicht-musikalische) Schlüssel Lärm war zu hoch. Sie könnten wahrscheinlich beheben, dass mit mehr Polsterung und eine Art von schalldämmenden Materials in den Kastenträgern. * Da die Schlüssel wurden einzeln hergestellt, wobei der Abstand zwischen ihnen war etwas unregelmäßig, und es gab einige Probleme mit Schlüssel gegenseitig reiben. Das könnte, indem sie alle Schlüssel in einem Klavier Hälfte aus einer Sperrholzplatte befestigt werden. Denken Sie an einen Kamm oder der abgestimmten Metallzähne in einer Spieluhr und Sie wissen, was ich meine. * Wir sollten ein paar Dollar mehr ausgegeben haben, um Sperrholz mit einer besseren Oberflächengüte für die Schlüssel zu kaufen. Es sah OK mit gemalten CDX, sondern eine glatte, glänzende Oberfläche würde noch mehr wie ein echtes Klavier zu suchen. Was wir bekamen, Rechts: * Wir trafen unsere Budgetziele. * Das Klavier wurde leicht verschoben. 2 Personen könnte es tun. Die 4-5 Personen hatten wir haben es leicht. * Das Klavier besetzt einen relativ kleinen Lagerraum. Niemand beschwerte sich das Klavier zu viel Platz oder auf dem Wege war. * Das Klavier war robust. Wir haben 10 Shows und nur einen einzigen Schalter ersetzt. * Das Klavier war zuverlässig und einfach zu bedienen. Wenn wir es eingesteckt es funktionierte einfach. * Erstellen Sie das Klavier spielbar war die richtige Entscheidung, auch wenn es mehr Arbeit. Das Publikum war für Theater fakery suchen und war beeindruckt, als es gab keine. * Die meisten wichtigsten ist das Klavier war ein Hit. Das Klavier-Szene immer erhielt großen Applaus. Kinder aus dem Publikum wurden die Chance, auf sie nach der Show zu spielen, und es war gut zu sehen, wie sie Spaß mit ihm. $(function() {$("a.lightbox").lightBox();});

      11 Schritt:Schritt 1: Hardware: Glühbirnen und Steckdosen Schritt 2: Hardware: Hängende Montage Schritt 3: Hardware: DB25 Wiring Schritt 4: Elektronik: Hintergrund Schritt 5: Elektronik: Mikrocontroller - Relais Schritt 6: Elektronik: Nulldurchgangs-Erfassungs Schritt 7: Elektronik: MIDI Schritt 8: Software: Timer und Interrupts Schritt 9: Software: MIDI Schritt 10: Software: ipMIDI Schritt 11: Glamour Shots

      Alle 8 Artikel anzeigen MIDI gesteuert Glühbirne Halterung mit Vintage-Stil "Edison" Glühbirnen. Der Steuerkasten dient einige Zwecke, vor allem aber können Sie den Modus zu ändern: CLASSIC - MIDI-Noten zugeordnet Glühbirnen Cn-Bn abgebildet Birnen 1-12, ist Intensität der Leuchtmittel vollständig auf, Sustain-Pedal hält Noten Gleichzeitig löscht alle Leuchtmittel, wenn er losgelassen. VELOCITY - wie Klassik, aber Intensität der Lampe wird durch die Geschwindigkeit der gespielten Note gesteuert. Scrollen (in Video gezeigt) - in diesem Modus werden die Glühbirnen sequentiell beleuchtet, da mehr Noten gespielt werden, mit der Intensität der Lampe basierend auf Geschwindigkeit der Note. Loslassen der Sustain-Pedal löscht die Lampen. AUTOMATIC - Langsame Bewegungs Algorithmus, der eine Änderung optische Anzeige in Zufallsmuster erzeugt. Ich teilte die Schritte in drei Teile: Hardware (1-3) - Leuchtmittel, Steckdosen, Montage usw. Electronics (4-7) - Erklärung der Schaltung, wie Glühbirne Intensität (Dimmen), MIDI-Kommunikation Software (8-10) zu steuern - Details in die Arduino Firmware, mit Timer, Interrupts und PWM, die Glühbirne Intensität steuern. Schritt 1: Hardware: Glühbirnen und Steckdosen Sockets Ich entschied mich für die kleineren Buchsen Glühlampen (Kandelaber Base E12 Sockel) verwenden vor allem, weil ich einen Haufen herumliegen aus einem anderen Projekt. Allerdings ist die kleinere Basis weniger ein Auge wund meiner Meinung nach, und in der Regel viel billiger als die Standard-E-26 Basis-Glühbirne-Buchse (Standard-Glühbirne-Größe). Ich war in der Lage, diese Buchsen an zu ebay für ca. 50 Cent pro Stück, die viel billiger als die Zahlung € 04.03 für eine Standard-Glühbirne-Buchse ist. Beim Löten Sie die Drähte an die Buchsen, werden Sie feststellen, die Lötstelle wird durch Schrumpfschlauch abgedeckt. Das ist sehr wichtig, vor allem für die Live-Seite des Drahtes, so dass Sie nicht versehentlich schockieren Sie sich, wenn es eingesteckt. Der Schrumpfschlauch bietet auch einige mechanische Unterstützung, so dass nicht das gesamte Gewicht auf der Lötstelle. Ich werde es mehr im elektrischen Teil zu sprechen, aber es ist sehr wichtig, dass die neutralen Drähte sind an der Außenhülle der Buchse nicht umgekehrt verlötet. Dies macht es deutlich sicherer für die Menschen zusammen zu sein, für den Fall, dass Sie freiliegenden Metallbuchsen verwendet, wie ich. Die sicherste Lösung wäre, isolierten Buchsen zu verwenden, obwohl sie wahrscheinlich größer und teurer. Glühbirne: Die Lampen stammen aus 1000bulbs.com , obwohl, Edison-Lampen können an anderen Orten erhalten werden als auch, wie Home Depot . Das Wichtigste ist, um eine Lampe mit niedriger Wattzahl zu bekommen. Sie wollen nicht, 12 60-Watt-Glühbirnen Beleuchtung bis in dein Gesicht, auch bei 25 Watt, ist es ein wenig stark manchmal sein kann. Darüber hinaus macht die geringeren Wattzahl die Elektronik und Verkabelung einfacher, weil der niedrigere Strom requirement.Step 2: Hardware: Hängende Montage Alle 8 Artikel anzeigen Der Stab, der die Steckdosen hängen aus ist nur Ihre Standard-Elektroleitung (Leitung), können Sie dies in einer Vielzahl von Längen und Durchmessern bei Home Depot zu bekommen. Es ist auch sehr leicht, sich mit einem Rohrschneider abgeschnitten. Das Beste daran ist, dass es spottbillig. Ich habe eine 5-Fuß-Pfeife, die ich in der Hälfte, dann legte ein T-Stück in der Mitte, um sich ihnen anzuschließen, die Gesamtkosten für die ganze Hardware war weniger als 10 €. .. 1/2 in x 5 ft Elektro Metallic Tubing (EMT) Conduit - 1,83 € . 1/2 in Electrical Metallrohr (EMT) 1-Loch-Trägern (25-Pack) - 3,56 € finsih THEIS Liset Eine nette Sache über elektrische Leitung, ist, dass es sehr weich, aber robust. So ist es einfach, in zu schneiden, ist es einfach, in zu bohren, ist es einfach zu gestalten, aber es ist auch sehr stark. (Und billig!) Um die Lampen hängen, bohrte ich einfach Löcher in das Rohr entlang einer Seite, etwa 2 Zoll auseinander, dann die Kabel durch die Löcher aus, um die Spitze in die DB25-Anschluss eingespeist. Ich beschloss, die Drähte zu schneiden alle die gleiche Länge und löten sie an die DB25-Stecker ersten, so dass, wenn ich ging, um die Buchsen anschließen, ich könnte meine Drahtlängen zu diesem Zeitpunkt zu wählen, und eine optisch genaue Darstellung, wie es wäre look.Step 3: Hardware: DB25 Wiring Obwohl die Lampen alle die gleiche Neutralleiter, beschloss ich, jeder Birne seine eigene Adernpaar, den ganzen Weg zurück in die E-Box geben. Ich konnte einen Stecker mit 13 Pins auf sie (12 für den geschalteten Netzspannung, 1 für die neutral), wie ein DB15 verwendet haben, aber das würde bedeuten, dass der Neutralleiter müssten deutlich dicker als die anderen Drähte sein. Bei 25 Watt pro Birne, zieht jeder Lampe (Watt / Spannung = Strom) -> (25/120) ~ = 0,20833 Amps oder zu 208mA Strom. Sie können 200 mA Strom durch einige sehr kleine Drahtstärken ohne Probleme gestellt. Allerdings, wenn Sie, um den Nullleiter teilen, würden Sie haben 208mA * 12 = 2,5 Ampere Strom. Immer noch nicht schreckliche Menge, aber Sie müssten eine Drahtstärke, die dicker für den Neutralleiter war zu verwenden. Auch wegen der Art, ich hing meinen Lichter, brauchte ich eine ziemlich lange Kabel, das von der hängenden Montage am Steuerkasten, mindestens etwa 15 Meter. Ich konnte natürlich einen Kabel, aber das ist eine Art Schmerz, anstatt dachte ich, wenn ich nicht haben, um über die Drahtstärke sorgen, konnte ich nur mit einem DB25-Kabel und einige sehr mühsam Verdrahtung zu beseitigen. Um die Verdrahtung einfach zu halten, habe ich alle neutral seitigen Anschlüsse in der unteren Reihe des DB25-Anschluss und der Netzseite auf der top.Step 4: Elektronik: Hintergrund Der einfachste Weg, um eine Glühbirne und Ausschalten von einem Mikrocontroller drehen wird mit Hilfe eines Halbleiterrelais (SSR). Sharp macht diese Chips gesagt, die tatsächlich verarbeiten kann eine gute Menge an Strom und haben so gut wie jede Komponente im Inneren. Dauert nur ein Widerstand, und Sie können diese aus einem Mikrocontroller Pin fahren. Das ist alles schön und gut für das Drehen der Lampe an und aus, aber das ist, wo die Einfachheit endet. Seit den Antrieb des Halbleiterrelais, ist wirklich wie das Fahren einen Optokoppler, der wirklich nur der Fahrt eine LED, dann ist es logisch zu denken, man könnte die Glühbirne Intensität mithilfe PWM am Relais zu steuern, so wie man es mit einer LED. Leider kann man das nicht, zumindest nicht ohne, wenn Sie einige andere Dinge zuerst. Der Unterschied zwischen einem Festkörperrelais, und einer basischen Optokoppler ist in der Ausgangsstufe. Wir brauchen den "opto" Teil für die Isolierung, so dass wir nicht unsere Glühbirne Schaltung direkt eine Verbindung zu unseren digitalen Schaltung für grundlegende Sicherheitsgründe. Allerdings ist die Ausgangsstufe des Optokopplers in der Regel ein Transistor einer Art (BJT, MOSFET usw.). Das wird nur erlauben uns, in einer Richtung laufenden geben und eine Spannung in die andere Richtung würde wahrscheinlich das Teil sofort beschädigen. Um AC Geräte zu steuern, müssen wir einen Triac verwenden. Ein Triac ist eine Art der Thyristor, der Strom in beiden Richtungen passieren können, aber die wichtige Sache, über Triacs wissen, ist, dass, sobald sie eingeschaltet sind, können sie nicht ausschalten, bis der Strom unter einen bestimmten Wert, nahe Null. Es ist, weil dieser Tatsache, dass wir nicht beliebig Pulsbreitenmodulation des LED-Seite der SSR. Darüber hinaus müssen wir vorsichtig sein, um einen SSR, das nicht über Nulldurchgangserkennung eingebaut Auswahl. Einige der SSR haben diese Funktion, um die AC-Gerät auf der anderen Seite zu schützen, aber in unserem Fall, die es unmöglich machen wird an den Triac zu steuern, wie wir wollen. So brauchen wir eine SSR, die keine Nulldurchgangserkennung hat, und können den aktuellen unserer Glühbirne zu behandeln. Das letzte Stück ist recht einfach. Der nächste Schritt ist, was es hier was zu, um die Intensität der Lampe zu steuern, müssen wir die SSR einschalten und dann die Kamera aus wieder in einem Halbzyklus der Wechselstromwellenform. Da die Netzspannung kommen in bei 60 Hz, bedeutet, dass wir 1/120-Hz = ~ 8,3 ms, dies zu tun. Das ist genug Zeit für einen Mikrocontroller. Das Video oben zeigt dies geschieht, die gelbe Spur ist die Netzwechselspannung, der blaue ist der PWM-Signal, das von dem Mikrokontroller. (Die Box ist nur ein Re-purposed Schaltkasten, die ich an einem Secondhand-Laden gefunden habe ich in den Rücken Ausschnitte, und verwenden Sie die frontseitigen Regler, um die Anzeigemodi der Lampen zu ändern..) Schritt 5: Elektronik: Microcontroller - Relais Ich hatte ein paar Arduinos herumliegen, sowie eine individuelle Schild I für eine andere Glühbirne Projekt gemacht hatte, so dass das, was ich am Ende mit. Der Schirm ist eigentlich nur, dass es die Optokopplerschaltung darauf zum Auslösen eines Interrupts auf dem Arduino, wenn die Wechselspannung durch Null hat nützlich. (Nulldurchgangserkennung Circuit). Es gibt durchaus ein paar Möglichkeiten, dies zu tun, und ich zufällig ein Arduino Mega zur Verfügung zu haben, aber man konnte leicht mit einem Standard-Arduino tun dies auch. Sie wirklich nur 12 Ausgangs-Pins benötigen, um es arbeiten. Wenn Sie die Intensitätssteuerung möchten, können Sie noch tun dies mit Standard-Ausgangspins, sondern um die höchste Auflösung Intensität, mit der schnellsten Code, 12 PWM-Ausgänge, die der Arduino Uno nicht müssen Sie zu erhalten. Ich habe Code in der Software-Bereich, dies zu tun, ohne PWM als auch, obwohl man könnte auch zu implementieren Software-PWM und wahrscheinlich in Ordnung auf der Uno. Ich zufällig auch ein Brett von einem anderen Projekt mit 12 Halbleiterrelais auf, und die notwendigen Widerstände. Ich musste einige geringfügige Änderungen daran vornehmen zu meinem Boden und Nullleiter zu verbinden, aber die Schaltung ist recht einfach. Jedes der Festkörperrelais muss dem Mikrocontroller auf der LED-Seite mit einem Widerstand verbunden ist, in Serie. Im Wesentlichen sind Sie nur 12 Fahr LEDs so weit wie Sie betroffen sein sollten. So stellen Sie sicher, dass Sie, um PWM-Ausgangsstifte verbinden sind Ihr Leben einfacher zu machen. Die Relais Ich verwende sind Sharp PR22MA11NXPF . Sie sind groß, da das Paket ist klein, sie Wechselstrom bis 400V passieren! und Ströme von 150 mA. Sie sind viele Variationen dieses Paket können einige Ströme von über 1000mA geben, wenn Sie höhere Strom Anwendungen benötigen. Ich entschied mich für den niedrigen aktuellen Version als zusätzliches Sicherheitsbedenken verwenden. Wenn ich in allem, was über 150mA Strom ziehen könnten angeschlossen ist, ich meine Verkabelung mich irgendwo anders auf der ganzen Linie zu beschädigen, oder. Mindestens diese Weise wird das Relais vor allem anderen zu braten ... hoffentlich. (Hinweis: Die PR22MA Serie scheint nicht mehr hergestellt, aber der PR33-Serie ist noch in Produktion, es ist im Wesentlichen das gleiche Teil kann aber jede Menge 300mA auf bis zu 600 V zu haben!) Digikey: PR33 Schritt 6: Elektronik: Nulldurchgangs-Erfassungs Um die Nulldurchgangserkennung zu tun, verwende ich eine tolle Chip von Vishay, die gemacht SFH6206 . Die Zwei-LED-Seiten einen Transistor auf der gegenüberliegenden Seite, wirklich, es ist ein AC gesteuert Optokopplers. Es gibt viele Möglichkeiten zu tun, Nulldurchgangserkennung , aber auf diese Weise finde ich, um die einfachste und billigste sein. Sie kaufen einfach die kleinste 115-> 12,6 V Transformator, oder etwas in diesem Bereich, einer 9V oder darunter würde auch funktionieren. Dann stecken Sie Ihren Transformator in die SFH6206 mit einem Widerstand, um den Strom zu begrenzen. Der Triac Seite (AC vom Trafo) kann bis zu + -60mA behandeln, aber Sie nicht so viel brauchen. Allerdings, je mehr Strom Sie durchlaufen, desto mehr Strom auf der digitalen Seite (Transistor Waschbecken Ausgang) übergeben und damit die schnellere Reaktion haben Sie. Ich entschied mich für einen 470-Ohm-Widerstand in Serie mit meinem 12.6VAC, die mir ~ (12,6 / 470) ~ = 27 mA Strom. Also mein Transformator muss nur für mehr als 27mA, was mich eine viel kleinere Transformator verwenden können bewertet werden. Eine Alternative wäre, nur das Netz direkt in den SFH6206 und verwenden Sie einen größeren Widerstand. Allerdings, wenn ich das tat, und ich wollte 20 mA der Strom durch die LEDs, brauche ich 120-1,5 (LED Vorwärtsspannung) = 118,5 / 20mA ~ = 6Kohm Widerstand. Es wird jedoch ein 6K Widerstand, mit 20 mA durchläuft es ableitenden ~ 2,5 Watt Leistung, das ist eigentlich ganz viel und wird eine beträchtliche Menge an Wärme zu erzeugen, während sie gleichzeitig sehr energie rücksichtslos: D. Viel lieber würde ich nicht um mein Controller-Box verlassen die ganze Zeit Sorgen und benutzen effizienter Elektronik. Auf der Ausgangsseite (Transistor Waschbecken, open collector) I den Sender binden an Masse, und fügen Sie mein eigenes 1K Pullup-Widerstand. Der Grund, warum ich nicht verwenden Sie die internen Pull-up-Widerstand auf dem Mikrocontroller ist, dass es sehr viel höher, in der Nähe von 30K. Das Ergebnis ist eine wesentlich langsamer Impuls, wenn der AC in der Nähe von null Volt. Als Ergebnis ist das Timing nicht so genau, und es ist eine einfache Lösung mit nur einem Teil, um den Nulldurchgangs Interrupt erhalten antreten besser mit den AC voltage.Step 7: Elektronik: MIDI Die MIDI-Schnittstelle ist sehr einfach. Eine detaillierte Erklärung, wie es funktioniert, lesen auf dem midi elektrische Spezifikation. Im Wesentlichen sind Sie nur die Isolierung des UART (serielle) Übertragung. In meinem Fall bin ich nur auf eingehende MIDI-Nachrichten zu hören, aber ich wünschte wirklich, ich soeben einen MIDI THRU-Anschluss, so dass ich immer noch MIDI aus meiner Tastatur, während zu den Lichtern verbunden. Wenn Ihre Tastatur hat keine Klänge erzeugen, wird dies wahrscheinlich notwendig sein. Die MIDI-Sendesignals muss an die UART RX-Pin des micronctroller verbunden werden. Darüber hinaus wieder, nur weil ich hatte einen herumliegen, fügte ich ein Ethernet-Schild an die Box, so dass ich meine MIDI-Befehle über das Netzwerk zu übertragen, oder steuern die Lampen aus der Ferne. Der einfachste Weg, dies zu tun ist, um die ipMIDI Software, die bereits da draußen zu nutzen. Alles, was Sie tun müssen ist, konfigurieren Sie Ihre Ethernet-Schild als Multicast-Gerät auf den richtigen Anschluss, und jetzt Ihre Tastatur wird auch eine MIDI-Netzwerkbrücke. Ich habe eine ganze Reihe von Synthesizern bis zu einer anderen Tastatur eingehängt, und in der Regel nur mein Klavier, Klavier zu spielen. Aber ich dachte, es wäre schön, wenn man die Möglichkeit, andere Geräte zu steuern, ob ich zu haben. Schritt 10 übergeht, wie das Einrichten ipMIDI, aber es ist wirklich ein eigener Sache überhaupt, so überspringen, wenn Sie nicht interested.Step 8 sind: Software: Timer und Interrupts Ich weiß nicht, welche Bilder zu zur Erläuterung der Software zu veröffentlichen, so offensichtlich, wahrscheinlich besser, nur ein Bild mit einer Katze zu posten. Auch ist die volle Arduino-Code zur Verfügung, um oben herunterladen. (LbdOrganPWM.ino) Timer und Interrupts Um die Hardware-PWM in Folge mit der Wechselstromleitung Triggerung zu verwenden, alles, was wir tun müssen, ist sicherzustellen, dass der Zähler, die zur Ausgabe der PWM-Wert wird beim Nulldurchgang der Netzspannung zurückgesetzt verwendet wird. Mit in Schritt 7 erläutert die Auslöseschaltung legen wir einen Hardware-Interrupt an diesen Pin an die Zähler zurückzusetzen, wenn es auslöst. Jeder Timer wird zu Beginn des Programms zu der Wellenform-Erzeugungsmodus der Schnell-PWM-Modus mit ICRn als oberste Wert initialisiert. Diese Timer-Modus ist, was mit der Hardware PWM ermöglicht. Da wir 7-Bit-Auflösung in der Geschwindigkeit der MIDI-Note, wollen wir recht nah an dieser Entschließung für die Glühlampe Intensität zu erhalten. Ehrlich gesagt, ist alles, was über 16 Stufen ziemlich unbedeutend, aber da wir können wir genauso gut. Also, wenn wir den Vorteiler der Timer auf 1024 (pg. 161 ATmega2560 Datenblatt) , dann haben wir 16 MHz / 1024 für unsere Zeitschaltuhr = 15625Hz. Unser Ziel Frequenz unseres gesamten PWM-Wellenform ist 120 Hz, um die Halbwelle der 60 Hz Netzspannung entsprechen. So teilen wir 15626/120 bis ~ 130 zu bekommen. Das heißt, wenn wir unsere ICRn Register bis 130, werden wir eine Frequenz entsprechend der Netzfrequenz mit ~ 130 Stufen zu erhalten. Das ist perfekt, da wir 128 Schritte in der MIDI-Velocity! Nachdem du dies, gibt es einige Unterschiede in der Netzfrequenz, und so landete ich mit einem oberen Wert (ICRn) von 122. Dies schien wie ein ausreichend sicheren Wert, wo ich sicherstellen, dass ich würde an der Null Ausschalten des Triac überqueren. Wenn Sie zu weit gehen die Nulldurchgangsschwelle vorbei, verfehlen sie sie, und das Licht nie erlischt oder verdunkelt. Letzte Sache, über die Timer-config ist die PWM-Polarität. Denn sobald der Timer bekommt es ist Endpunkt wir sicherstellen, dass der Triac schaltet (dies bedeutet, dass wir in der Nähe des Nulldurchgangs) wollen, müssen wir den umgekehrten Betrieb des PWM-Pin zu verwenden, so dass, wenn der Timer = 0 ist, ist der Stift niedrig. Das bedeutet nur, wenn wir einen Geschwindigkeitswert von 100 zu erhalten, haben wir wirklich, um das PWM-Register, um 127-100 = 27 festgelegt werden soll. Für den Umgang mit den Nulldurchgangs die Arduino Bibliothek hat eine in-Funktion für diese Verwendung der Hardware-Interrupt gebaut: attachInterrupt (5, zeroCrossDetect, Fallen); Wobei 5 der Interrupt (Pin 18 auf der Mega) zeigt FALL er nur auf der fallenden Flanke (1-> 0 und nicht 0-> 1) der Unterbrechungsstift ausgelöst und zeroCrossDetect ist die Funktion unten. Es arbeitet, indem alle von den spezifischen PWM Stifte I auf Null beim Nulldurchgang gewählt verwendeten Zähler. Er setzt auch den Vorteiler und die Wellenform-Erzeugungsmodus für jeden Zeitgeber, der Grund dafür ist, so dass der Timer wird bei einer Wechselstromperiode am Anfang des Programms, wodurch es keinen Offset vom Anfang. Leere zeroCrossDetect () { TCNT1 = 0; TCNT3 = 0; TCNT4 = 0; TCNT5 = 0; TCCR1B = (1 << WGM12) | (1 << WGM13) | (1 << CS10) | (1 << CS12); TCCR3B = (1 << WGM32) | (1 << WGM33) | (1 << CS30) | (1 << CS32); TCCR4B = (1 << WGM42) | (1 << WGM43) | (1 << CS40) | (1 << CS42); TCCR5B = (1 << WGM52) | (1 << WGM53) | (1 << CS50) | (1 << CS52); } Schritt 9: Software: MIDI Ich werde nicht viel Zeit mit, wie die MIDI funktioniert, es gibt jede Menge Tutorials auf, dass. Jedoch empfehle ich das Arduino MIDI-Bibliothek finden Sie hier. Für meine Bedürfnisse, ich wirklich brauchen nur ein paar von den Funktionen dieser Bibliothek zur Verfügung gestellt. Insbesondere Hinweis auf, Note Off und Control Change (zum Erkennen der Sustain-Pedal). So wie ich das Sustain-Pedal mit den Leuchtmitteln implementiert wird, hängt von der Art, dass die Steuerung in. Für die "Classic" und "Velocity" Modi, das Sustain-Pedal hält jede Glühbirne auf der selben Notenwert, bis es freigegeben wird. Wenn es freigegeben wird, werden alle Glühlampen gelöscht. Im Modus "Blättern", wird der Sustain-Pedal ignoriert. Auch bei der Verwendung von ipMIDI, Programmwechsel und Bankänderungen erkannt werden, obwohl ich noch nicht ganz herausgefunden, ob ich, dass zumin all.Step 10 verwenden: Software: ipMIDI Dieser Abschnitt ist wirklich spezifisch für meinen persönlichen Gebrauch des Steuerkastens. Es hat sehr wenig mit den Lampen zu tun, sondern ist für die Automatisierung über WIFI ermöglichen. ipMIDI ist ein großes Software-Modul, das Sie Ihre MIDI-Geräte von Ihrem lokalen Netzwerk (LAN) nutzen können. Alles was Sie tun, um dies einzurichten brauchen ist Ihre Ethernet-Karte konfigurieren, für das Senden von Multicast-Nachrichten an Adresse 225.0.0.37, auf Port: 21928. Dann, wenn Sie MIDI-Nachrichten jeglicher Art zu erhalten, einfach neu übertragen sie als UDP-Nachrichten, und so lange wie Sie haben ipMIDI installiert auf einem Netzwerk-Computer irgendwo, sollten Sie sehen, MIDI-Noten kommen in zu starten. Und falls Sie sich Nachrichten senden, um die ipMIDI Gerät auf Ihrem Computer können Sie die Leuchtmittel über Standard-MIDI sequencing.Step 11 steuern: Glamour Shots Das ist es! Hier ein paar Fotos: D

        4 Schritt:Schritt 1: Stückliste Schritt 2: Die Schaltung Schritt 3: DIE CODE Schritt 4: Die Möglichkeiten

        Dies ist bereits Teil einiger meiner Instructables, aber wahrscheinlich schwer, über die Suchfunktion finden. Die Fritzing ist ziemlich selbst explaning, können Sie jede arduino Sie wollen. Achten Sie darauf, die Linie, auf der Arduino dem TX Pin ziehen Sie beim Hochladen Programme, machte ich einen kleinen Knopf, der i drücken, während das Hochladen auf meinem midi Schild. Schritt 1: Stückliste 1x 5pin DIN / MIDI-Buchse 1x 4N35 Optokoppler oder passenden Typ 1x Diode oder passenden Typ 1x 220 Ohm Widerstand 1x 560 Ohm Widerstand (i verwendet ein 220 und ein 330 in Reihe und es funktionierte) 1x Brot oder stripboard, wie Sie es vorziehen 1x Arduino (Klon) offensichtlich 1x MIDI-Kabel 1x die MIDI-Quelle wird das Schild mit je Gerät, das MIDI protocolStep 2 sendet arbeiten: die Schaltung Es ist ziemlich einfach zu verbinden, abhängig von der Art der Verpflegung und MIDI-Stecker Sie haben, Sie Drähte zu löten haben. Sicherstellen, dass die Diode in der richtigen Richtung. Was die Schaltung tut, ist die Entkopplung der MIDI-Linie von der Arduino. Der Grund, warum Sie dies tun müssen, ist, dass die Vorrichtung, die das MIDI-Signal sendet, beispielsweise eine Tastatur, auch "Mächte" die MIDI-Kommunikation. Das bedeutet, dass es bietet die 5V, dass "es" das MIDI-Signal. Wenn Sie die MIDI-Stecker mit Ihrem Arduino verbinden würde direkt möchten Sie am vielleicht töten die Arduino Pin Eingang, vor allem, wenn es eine Fehl wireing im Keyboard oder Sequenzer, die Sie verwenden. Wie der Name andeutet, ist der Optokoppler Kopplung von Licht und damit die MIDI-Host und der Arduino nicht elektrisch verbunden ist. Mechanisch seine kleine LED und ein Fotowiderstand, der hat (fast) keinen Widerstand bei seiner exponierten Licht und einen sehr hohen Widerstand, wenn seine in der Dunkelheit. Also jedes Mal wenn die MIDI Host sendet ein HALLO die Lampe blinkt, der Widerstand ist kein Widerstand mehr, und die Arduino bekommt ein HALLO am inpout auch. Die Diode in der circtuit schützt alles gegen falsche Polarität. Dies alles ist auf dem MIDI-Standard, und die ursprüngliche schema finden Sie hier: http://www.midi.org/techspecs/electrispec.phpStep 3: der Code Dies ist die grundlegende MIDI RUECKRUF Skript. Er prüft, ob ein NoteOn kommt in und springt dann zu der Position in dem Skript. Auf dieser Position können Sie Ihren Code in setzen, wie zu lesen, die Geschwindigkeit dieser Anmerkung und wo es sich um einen Servomotor. Schritt 4: Die Möglichkeiten Als MIDI kann in DAWs automatisiert werden und diese MIDI-Tracks können mit Ihren Projekten gespeichert werden, sind die wichtigsten Möglichkeiten, i in diesem Projekt sah Audio verwandten. Um ein paar zu nennen: Automatische Mikrofonständer. Stellen Sie sich vor Re-Amping, mit einem fernsteuerbar Mikrofonständer, speicherbare bei Ihren Projekten. Automatische Mikrofonständer in eine Dieselbe Idee etwas weiter gemacht Acoustic Drum Machine Servos, Motoren, ein Schlagzeug, ein Paar Löffel, eine experimentelle Acousic Drumcomputer Alles Timelapse bezogenen Als MIDI-Sequenzer löschte Werte in einem 16/16 Raster, und Sie steuern und synchronisieren Sie können das Tempo, seiner ideal für Zeitraffer. Auch leicht speedramping wäre eine Option.

          4 Schritt:Schritt 1: MIDI zu Arduino-Interface Schritt 2: MOTORSHIELDS Schritt 3: Gehäuse Schritt 4: Shields PCBs

          Diese Instructable wird über den Bau einer vierzeiligen cablecam / Bewegungssteuereinheit sein. Das Prinzip ist nicht neu see CatCam. Seine Basis vier Motoren / Winden und eine Steuereinheit, die die Motoren steuert. Kernkomponenten Arduino UNO (oder jede andere Arduino) 2x Motorshields R3 (als eine Abschirmung kann nur zwei Motoren zu steuern) MIDI-Schnittstelle (ein Schritt dieser Instructable sein) Ich habe eine Animation der Grundsätze: Und eine Draufsicht Version des obigen Video: Und es gibt Video der fast fertige Version der Fahrt zwei Motoren: Eine "neue" Idee ist, die Steuersignale über MIDI zu generieren. Wenn Sie sich MIDI kommt und was seine bedeutete zu tun denken, die Idee ist nicht so Besonderes mehr. Denken Sie an alle MIDI-Sequenzer und Steuergeräte, die rund sind, geschweige denn die verschiedenen Software-Automatisierung posibilities in DAW. Auch TouchOSC war ein großes Anliegen bei der Auswahl der MIDI, wie es können Sie MIDI-Interfaces zu bauen für mobile Geräte. Das wird mich steuern die Motoren über mein iPad oder iPad angetrieben Sequenzer. Perfekt für Zeitraffer und Echtzeitsteuerung. Ein paar Worte über MIDI MIDI (M usial I nstrument D igital I nterface) irgendwo in den 80er Jahren von Dave Smith, einer der großen synth Herren des Universums, und einigen anderen Jungs erfunden. Bisher über die beeindruckende Geschichte Fakten :) Was noch wichtiger ist, was sie tut und wie das Protokoll aussieht. MIDI-Protokoll Wie man auf dem Bild sehen können, MIDI ist ein serielles Protokoll, was bedeutet, dass es einen Strom von Bits (0/1) kommt in, dass conists von allen relevanten Informationen. Alles, was Sie zu tun ist, sagen Sie das Skript auf bestimmte Teile des Protokolls je nachdem, was Sie extrahieren möchten suchen. In diesem Fall sind die CC-Befehle normalerweise durch Fader oder Regler verwendet werden, um Einstellungen für Synthesizer Mischpulte oder was auch immer Sie über MIDI steuern möchten ändern, was wir brauchen. Denn es wäre sehr zeitaufwendig, einen dedizierten Skript für alle MIDI-Funktionen und ihre engagierte Namen verwenden wir ein Arduino-Bibliothek schreiben, die so genannte: MIDI BIBLIOTHEK für Arduino Wie alle Bibliotheken, die Sie aktivieren / können Sie die Funktionen durch das Hochladen es mit Ihren Skript verwenden. Alles, was wir haben zu tun, um mit dem Arduino jetzt Schnittstelle ist bauen eine kleine Schnittstelle mit einem DIN-MIDI socket.Step 1: MIDI zu Arduino-Interface Die MIDI-Bibliothek verwendet die Rx-Pin auf dem Arduino, so das ist, wo das MIDI-Signal wird der Steuerung eingeben. Die Schnittstelle ist ein ziemlich einfaches Design, gemacht aus der MIDI-Daten (siehe Bild von ihrer Seite genommen) Bei technischen Daten, sagt, dass Sie einen Optokoppler und eine Diode, um sowohl die MIDI-Host und den MIDI-Slave speichern. Durch die Verwendung von Licht als Medium der Optokoppler sorgt dafür, dass der Arduino und die MIDI-Gerät nicht Electricaly verbunden, aber immer noch in der Lage sind (via Licht) zu kommunizieren. Stripboard LAYOUT ICH LIEBE Streifenplatinen, so dass alles in diesem Instructable auf Streifenplatinen basieren. Auf dem Foto können Sie die Schnittstelle auf dem Steckbrett und an der rechten Seite seiner auf dem Prototyp stripboard gepflanzt. Ich muss, um die Streifen 90 Grad drehen, weil ich brauchen mehr Platz für die Box will ich passen sie into.Step 2: MOTORSHIELDS Wenn Sie möchten, um Ihre Schilde schaden nicht, hast du diesen Schritt überspringen und einen anderen Weg für das Problem, dass: MOTORSHIELDS sollen nicht gestapelt werden. Schrauben Sie diese, ist das, was ich dachte, und abgeschnitten viele Stifte auf der zweiten Abschirmung (die eine, das ist auf der Oberseite des anderen) Der Grund dafür ist, dass die motorshield kommuniziert über 6 Pins. Auf allen Schilde. Also, wenn Sie aufeinander zu stapeln zwei von ihnen, zwei weitere Motor outs erhalten Sie, aber sie werden die gleichen wie die ersten, die zu tun, weil sie über die gleichen Pins zu kommunizieren. Was ich getan habe ist es, alle Pins, die die zweite "würde" zu verwenden, um mit der UNO zu kommunizieren und einen jumperbrisge zu 6 verschiedenen Pins des Arduino mit dem Schirm senden Clip. Sehen Sie das Foto für weitere Details. Oder die Fritzing schematic.Step 3: Gehäuse Wenn Sie möchten, um es in eine Schublade gesteckt oder nicht haben eine andere, können Sie diesen Schritt überspringen. Ich kaufte mir eine nette kleine Box, wahrscheinlich für beeing als Outdoor-Lichtschalter oder einer Art, dass verwendet wird. Seine wasserdicht (war, bevor ich haue sie) einen O-Ring und die Arduino passt perfekt. Alles, was ich zu tun hatte, ist alle Pins Clip über alles, einschließlich der Arduino sich um die Höhe runter. Sehen Sie die Fotos für Details mor Der einzige Ort, wo ich konnte in den Anschlüssen für die Motoren und die MIDI-Buchse passen zu der linken und rechten Seite, um 50x50x7mm. Schritt 4: Shields PCBs Die Abschirmung besteht aus drei Teilen: die Hauptschild der Seitenschild für die MIDI-IN-Stecker eine zweite Seite-Schild für einen Lüfter oder weitere Schaltungen auf der anderen Seite Ich habe Reihen von Stecker und Buchsen, um die Schilde und die Arduino verbinden und alle Spuren für jetzt sind intakt. Als ich auf Sparkfun lesen nicht allzu langer Zeit, sollten Sie Namen und Datum Ihrer Revisionen, so dass auf der einen Fotos gibt es alle Versionen mein Schild von links nach rechts, Erste endgültige Version. Es gelang mir, die MIDI IN-Schaltung klein Schild zu pflanzen, siehe letztes Foto. Ich werde einen stripboard-Fritzing Layout so bald wie möglich zu laden. Ein Video des Testlaufs: MIDI Arduino von Inevitable Crafts auf Vimeo .

            38 Schritt:Schritt 1: Schematische und Übersicht Schritt 2: Solder LEDs zu Sparkfun PCB Schritt 3: Solder Diodes zu Sparkfun PCB Schritt 4: Flachbandkabel Schritt 5: Clamp-Buchse Schritt 6: Multiplexing mit Arduino und 74HC595 Schritt 7: Header Pins Schritt 8: Strombegrenzungswiderstände Schritt 9: 74HC595 Buchse Schritt 10: Anschlüsse an LEDs Schritt 11: In Second 74HC595: Part 1 Schritt 12: In Second 74HC595: Part 2 Schritt 13: In Second 74HC595: Teil 3 Schritt 14: In Second 74HC595: Teil 4 Schritt 15: In Second 74HC595: Teil 4 Schritt 16: Header Pins Schritt 17: Schließen Sie 74HC595, um Arduino Schritt 18: Test LEDs Schritt 19: Multiplexing mit Arduino und 74HC165 Schritt 20: 74HC165: Teil 1 Schritt 21: 74HC165: Part 2 Pull-Down-Widerstände Schritt 22: 74HC165: Part 3 Schritt 23: 74HC165: Teil 4 Schritt 24: Testknöpfe Schritt 25: Serielle Kommunikation Schritt 26: Batterie Schritt 27: Midi Out Schritt 28: Accerometer / Gyro Schritt 29: Töpfe Schritt 30: Gehäuse Schritt 31: Schluss Firmware Schritt 32: Zukunft der Arbeit Schritt 33: Anhang: Schneiden PCB für Steuertasten Schritt 34: Anhang: Steuertasten Verdrahtung Teil 1: PCB Schritt 35: Anhang: Steuertasten Verdrahtung Teil 2: Socket Schritt 36: Anhang: Steuertasten Verdrahtung Teil 3: Header Pins Schritt 37: Anhang: Steuertasten Wiring Teil 4: Anschlüsse an LEDs Schritt 38: Anhang: Steuertasten Wiring Teil 5: Anschlüsse an Buttons

            Dieses Projekt ist ein tragbares, Arduino-betrieben, Grid-basierten MIDI-Controller, der in eine Vielzahl von Anwendungen startet, um viele Dinge, mit Ton zu tun. Es verfügt über 16 beleuchtete Tasten, da beide Ein- und Ausgänge verwendet werden, um das Steuergerät eine visuelle Rückmeldung zu geben. 2 Potentiometer geben analoge Steuer, abhängig von der App die Töpfe an Tempo, MIDI-Velocity, Tonhöhe zugewiesen und das Scrollen (Herstellung der avaible Rasterabstand größer als 4x4). Ein x / y-Beschleunigungsmesser und ein x / y-Gyroskop fügen Sie etwas verspielt, gestische Steuerung an das Gerät; die meisten der Anwendungen implementieren eine "Shake zu löschen" Steuerung und mehrere reagieren auf verschiedene Weise zu kippen. Er startet in 7 apps (wie unten beschrieben), auch wenn sie das Potenzial, in insgesamt 16 hochfahren hat. Dieses Gerät ist in erster Linie ein MIDI-Controller, aber ich habe auch eine App, die Sie auf die Schaltfläche und Analogdaten in ziehen können geschrieben MaxMSP und Audio-Steuerung . Dieser Controller wurde sowohl von der inspiriert monome und TENORI-ON . Als ich im College war, baute ich einen großen Touchscreen-Display, auf der Grundlage der Arduinome monome-Arduino Klon Schaltpläne und Code, die mit allen Open-Source-Anwendungen in monome MaxMSP geschrieben gearbeitet. Es gibt eine Tonne von Menschen, den Aufbau ihrer eigenen monome-type-Geräte mit diesen Tasten von Sparkfun und Arduinome Code sowie einige Variationen über das Thema . Mit diesem Projekt, war ich daran interessiert, ein Gerät, das ein wenig mehr in sich geschlossene und relativ billig zu machen (viele Tasten = viel $) war. In dem Konzept des TENORI-ON halten mehr, dieser Controller nicht alle seine App Verarbeitung selbst, es nicht auf einen Computer angewiesen, um Tastendrücke / Analog-Kontrollen in MIDI zu bearbeiten. Das bedeutet, Sie können es direkt in einen Synthesizer oder ein anderes Gerät, das MIDI versteht stecken und Sie sind gut zu gehen, kein Computer erforderlich. Es läuft eine bullige LiPo Akku, der es hält läuft seit Tagen auf eine Ladung, also ist es ziemlich portable als auch. Im Einklang mit der monome Seite der Dinge, es ist völlig Open Source und kann auf Ihre speziellen Audio-Setup / Bedürfnisse angepasst werden. All das Arduino-Code ist auf Github (klicken Sie auf die Cloud-förmige Taste zum Download), zusammen mit einem MaxMSP Patch, der Daten aus der Steuerung in etwas Brauchbares in Max decodiert. Eine Übersicht über die apps, die ich bisher geschrieben: Pixel Tilt - Ein Pixel bewegt sich über eine 2D-Tastatur mit Neigungs auslöst MIDI wie es sich bewegt. Steuergeschwindigkeit und Basisnote mit Töpfen. Flin - Music Box app basierend auf monome . Drehzahl und Geschwindigkeit der Notizen, die von y Neigungs gesteuert. Paging über 16 "Bahnen" mit Topf. Schütteln, um zu löschen. Serielle Kommunikation mit MaxMSP - Ziehen von Daten aus Tasten und analoge Steuerungen in MaxMSP und verwenden Sie, um LED-Zustände Max senden. Unterstützt 5-Bit-Analog-Bedienelemente für x / y-Beschleunigungsmesser und 2 Töpfen. Das ist großartig, wenn Sie die Audioverarbeitung mit dem Controller ausgeführt werden soll. Laden Sie SerialDemo app ( SerialDemo.maxpat , mit den Arduino-Dateien enthalten, klicken Sie auf die Cloud-förmige Taste hier ), um Daten in Max analysieren. Beat Slicer (siehe oben) App ist im Preis inbegriffen mit der Arduino-Dateien sowie. Arpeggiator - Spielt eine zwei, drei, oder vier note Arpeggio, ähnlich wie diese App ich für monome schrieb. Ein Topf steuert die Geschwindigkeit des Arpeggios, anderen Steuerungen Geschwindigkeit. Hinweise im Arpeggio kann nach oben oder unten um einen Halbton über Tastensteuerung verschoben werden. Das gesamte Arpeggio wird über x Neige umgesetzt. Drücken Sie die Note ganz links in der Arpeggio die Noten in aufsteigender Reihenfolge zu spielen, drücken Sie die ganz rechts Note im Arpeggio die Noten in absteigender Reihenfolge zu spielen, und drücken Sie eine Herznote in der Arpeggio die Noten in zufälliger Reihenfolge abzuspielen. Schütteln, um zu löschen. Boiing - Bouncing Pixel, die Polyrhythmen zu erzeugen, basierend auf diesem TENORI-ON-App . Bounce Richtung basierend auf y Neigung. Geschwindigkeit und MIDI-Velocity (Lautstärke) von Töpfen gesteuert. Schütteln, um zu löschen. Step Sequencer - Vier note 16 Step-Sequenzer. Pots steuern Tempo und Paging in Folge. Schütteln, um zu löschen. MIDI Keyboard - Einfache MIDI-Tastatur. Steuergeschwindigkeit und Basisnote mit Töpfen, Pitchbend mit x kippen. Liste der Einzelteile: Sparkfun: (1x) Button-Pad 4x4 - LED Kompatibel Sparkfun COM-07835 (1x) Button-Pad 4x4 - Breakout PCB Sparkfun COM-08033 (1x) Arduino Uno Sparkfun DEV-11021 (1x) Accelerometer / Gyro 5 Freiheitsgraden Sparkfun SEN-11072 Ich habe einen 3-Achsen-Beschleunigungssensor und 2 Achsen-Gyroskop in diesem Controller es einige gestische Kontrolle zu geben, aber bisher habe ich noch nicht wirklich in allen apps verwendet werden, den Kreisel, und ich habe nur die x- und y-Achse des Beschleunigungsmessers bekam verdrahtet. Das bedeutet, dass Sie in einer einfacheren / billiger Teil wie sub könnte dies . DIGIKEY: (16x) Weiß 5mm LED (3mm ist auch in Ordnung) Digikey C513A-WSN-CV0Y0151-ND (2x) 74HC595 Schieberegister Digikey 296-1600-5-ND (1x) 74HC165 Schieberegister Digikey 296-8251-5-ND (3x) 16 pin IC-Sockel Digikey A100206-ND (16x) 1N4148 Diode Digikey 1N4148FS-ND (4x) Strombegrenzungswiderstände (Wert wird auf LEDs ab, die in Schritt 5 enthalten Beispielrechnung) (4x) 10 kOhm 1 / 4watt Widerstände Digikey CF14JT10K0CT-ND (1x) 220Ohm 1 / 4watt Widerstand Digikey CF14JT220RCT-ND (1x) 5-Pin MIDI Jack Digikey CP-2350-ND (optional - in Schritt 27 beschrieben) (1x) USB Typ B Buchse; Digikey 732-2734-ND (optional - in Schritt 27 beschrieben) (2x) 10kOhm lineare Verjüngung Potentiometer Digikey 987-1308-ND Jameco: (1x) 16 Leiterbandkabel Jameco 28RC16-10VP (1x) 16 pin Winkelkupplung Jameco 746285-3 (6x) Stiftleiste Stifte Jameco 103.393 Radioshack: (1x) Midikabel Radioshack 42-2149 (optional - in Schritt 27 beschrieben) (1x) Größe N LED-Einbau Coaxial Netzteilbuchse mit Schalter Radioshack 274-1576 (1x) Größe N Coaxial DC Power Plug Radioshack 274-1573 (1x) SPST Kippschalter Radioshack 275-634 AMAZON: (1x) Li-Ion 7.4V Tenergy 2200mAh Akku-Modul mit PCB Amazon (1x) Tenergy Universal Smart-Ladegerät für Li-Ion / Polymer-Akku (3,7 V-14.8V 1-4 Zellen) Amazon (1x) MIDI zum USB-Kabel Amazon (optional - in Schritt 27 beschrieben) NEWARK: (2x) Aluminum Knöpfe Newark 74M6717 Weitere Materialien: 22-Gauge-Kabel, verschiedene Farben Jameco # 9313-0-R Isolierband Radioshack 64-2373 Kabelschneider Abisolierzange Lot Holz / Acryl / Projekt Gehäuse (Ich habe diese 6 "x6" x2 "Bambus-Box The Container Store ) Kleber / Epoxy Doppelklebeband Amazon Schritt 1: Schematische und Übersicht Alle 7 Artikel anzeigen Alle Schaltpläne für dieses Projekt sind oben gezeigt. Detaillierte Übersichten über den 74HC595, 74HC165, und Stromanschlüsse werden später in diesem Instructable gegeben. Alle Arduino Pin-Anschlüsse sind nachfolgend aufgeführt: Analog 0 - Gyroskop Y (Y4.5) 1 - Potentiometer 1 2 - Gyroskop X (X4.5) 3 - Beschleunigungsmesser Y (yacc) 4 - Beschleunigungsmesser X (XAcc) 5 - Potentiometer 2 Digital 0 - Serien in - das muss frei bleiben 1 - Serien out - das ist bis zu den MIDI-Ausgang angeschlossen 2 - 74HC165 Datenstift (Q7) 3 - 74HC165 Taktpin (CP) 4 - 74HC165 Raststift (PL) 5 - 74HC595 Taktpin (SH_CP) 6 - 74HC595 Raststift (ST_CP) 7 - 74HC595 Datenstift (DS) keine Verbindungen zu digitalen Stifte 8-13Step 2: Solder LEDs zu Sparkfun PCB Alle 7 Artikel anzeigen Führen Sie die Leitungen der 16 LEDs (5 mm oder 3 mm sind in Ordnung, habe ich 5 mm) durch LED-Löcher in der Sparkfun PCB. Diese Platten sind mit 4-Kanal-RGB-LEDs kompatibel, so gibt es vier verfügbaren Löcher auf jeder Taste Pad. Sie können die beiden mittleren Löcher für einfarbige LEDs (siehe Abbildung 3) zu verwenden. Achten Sie darauf, dass die flache Kante des LED (die Kathode) einer Linie mit dem Flach Markierung auf der Leiterplatte. Löten Sie die LED-Leads und schneiden Sie das überschüssige wire.Step 3: Solder Diodes zu Sparkfun PCB Alle 7 Artikel anzeigen Löten Sie 16 Dioden Sparkfun PCB. Achten Sie darauf, die Linie bis schwarze Markierung auf Diode (Kathode) mit dem Streifen auf der PCB.Step 4: Flachbandkabel Schneiden Sie etwa 1 ft von 16 Leiterbandkabel. Separate und isolieren Sie die Enden alle 16 Drähte auf der einen Seite und Lot Sparkfun PCB. Die folgende Liste gibt alle farbigen Leitern, um mit dem Namen der Leiterplattenbohrung sollten verlötet, wenn Sie tun dies richtig keiner der Drähte sollten überqueren werden. Beachten Sie, dass da ich nur mit einer einzigen Farbe LED, werde ich verdrahten nur die "blue" Anode. Anschlüsse: einer Seite des Bandkabel Brown SWT-GND1 Rote LED-GND1 Orange SWT-GND2 Gelbe LED-GND2 Grün SWT-GND3 Blaue LED-GND3 Lila SWT-GND4 Grau LED-GND4 Weiß blue4 Schwarz Switch4 Brown Blue3 Red Switch3 Orange BLUE2 Yellow SWITCH2 Grün BLUE1 Blau SWITCH1 anderen Seite der Band cableStep 5: Clamp-Buchse Verwenden Sie einen Schraubstock, um den 16 poligen Buchse an der Flachbandkabel klemmen. Wenn Sie nicht über einen Schraubstock keine Zange dies tun, werden Sie die Buchse an der Seite und mess up die Verbindungen zu klemmen. Du bist besser dran mit einem Hammer, um die Klemme geschlossen tippen, so stellen Sie sicher, dass Sie immer die Anwendung den Druck gleichmäßig über die Steckdose. Achten Sie darauf, die Klemme die Buchse an der Flachbandkabel in der gleichen Orientierung in den Bildern angezeigt above.Step 6: Multiplexing mit Arduino und 74HC595 Zwei 74HC595s (parallel geschaltet) fahren wird alle LEDs im Projekt sowie die Bereitstellung von Energie, um alle Tasten. Die 74HC595 ist ein 8-Bit-Serien parallel Schieberegister. Ich habe ein ausführliches Tutorial über Multiplexing mit dem 74HC595 geschrieben, und Sie mehr Informationen über dieses auf dem Chip können Datenblatt . Bitte beachten Sie, dass die 74HC595 in der schematischen gezogen ist kein Pin-Diagramm, habe ich die Reihenfolge der Stifte der Schaltplan klarer zu machen neu geordnet. Die Pin-Diagramm für den Chip ist in Figur 4 dargestellt ist. Die 74HC595 hat folgende Stifte (der technische Name kann eine von mehreren Dinge je nachdem, welche Datenblatt Sie lesen sein): Position Common Name Technischer Name 1 Parallel-Ausgang 2 QB oder Q1 2 parallele Ausgabe 3 QC oder Q2 3 Parallelausgang 4 QD oder Q3 4 parallele Ausgabe 5 QE oder Q4 5 parallelen Ausgang QF 6 oder Q5 6 parallele Ausgabe 7 QG oder Q6 7 parallel Ausgang 8 QH oder Q7 8 Masse GND 9 seriellen Datenausgang QH 'oder Q7' oder Q7s 10 Master-Reset (active low) MR (mit einer Linie an der Spitze) oder SRCLR (mit einer Linie auf der Oberseite) 11 Uhr Stift SH_CP oder SRCLK 12 Raststift ST_CP oder RCLK 13 Ausgangsfreigabe (active low) OE (mit einer Linie auf der Oberseite) 14 Datenstift DS oder SER 15 Parallelausgang 1 QA oder Q0 16 5 Volt Versorgung VCC Die Verbindungen zwischen dem 74HC595 und Sparkfun Platte sind in der schematischen gezeigt und unten wiederholt: 74HC595 Sparkfun Breakout Board Q0 BLUE 4 und Schalter 4 Q1 BLUE 3 und SWITCH 3 Q2 BLUE 2 und SWITCH 2 Q3 BLUE 1 und SWITCH 1 Q4 (über Strombegrenzungswiderstand) LED GND 4 Q5 (über Strombegrenzungswiderstand) LED GND 3 Q6 (über Strombegrenzungswiderstand) LED GND 2 Q7 (über Strombegrenzungswiderstand) LED GND 1 Die restlichen Stifte haben die folgenden Verbindungen zu dem Arduino (auch in schematischer dargestellt): 74HC595 Arduino Vcc 5 V GND GND DS Digitale Pin 7 OE (Linie oben) GND ST_CP Digitale Pin 6 SH_CP Digitale Pin 5 MR (Linie oben) 5V Q7 'kein connectionStep 7: Header Pins Löten Sie zwei Reihen von acht Kopfstifte an die protoboard. Dies ist, wo das Flachbandkabel-Buchse wird auf die board.Step 8 befestigen: Strombegrenzungswiderstände Werden die 74HC595 werden Ansteuerung der LEDs in der Sparkfun Bord. Doch dieser Chip nur Ausgänge 0 oder 5 V und es ausgeben kann so viel wie 70 mA. Das bedeutet, wir müssen Strombegrenzungswiderstände verwenden Beschädigung der LEDs zu verhindern. Aus den Angaben der LEDs I verwendet: max Vorwärtsstrom: 30mA Vorwärtsspannung: 3.2V Berechnen Sie die benötigt wird, um diese max Bewertungen V = IR erreichen Widerstand: Widerstand = (5V-3,2V) / (0,03 A) = 60 Ohm Ich habe 68 Ohm-Widerstände, so dass ich war nicht auf das absolute Maximum Laufen, sondern auch um sicherzustellen, dass ich zu viel Helligkeit nicht zu verlieren. (Ich habe einen Fehler ein packte die 100KOhm Widerstände, wenn ich dieses Projekt gemacht, ich regelte es später, aber die Streifen von 100Ohm Widerstände sollte blau, grau, schwarz, gold, ignorieren Sie die Farben in den Bildern). Dies sind die Beispielrechnungen für die einzelnen LEDs I verwendet, Sie tun Sie Berechnungen auf der Grundlage der Spezifikationen Ihres LEDs besitzen müssen. Wenn Sie unsicher sind, was zu tun haben, nutzen 220ohm oder höher Widerstände; zu viel Widerstand machen die LEDs weniger hell, aber sie werden nicht beschädigt. Löten Sie vier Widerstände auf die protoboard, wie in den Bildern gezeigt. Schließen Sie die Leitungen der Widerstände mit ihren benachbarten Kopfstifte mit Lot (Abbildung 2) .Schritt 9: 74HC595 Buchse Löten Sie einen 8-poligen Buchse auf der Lochrasterplatinen, wie gezeigt in die Bilder above.Step 10: Anschlüsse an LEDs Wie in 6 gezeigt, sind die Ausgangspins (Q0-Q7) auf den Pins 1-7 und 15. Dieses Bild wurde von der genommen befindet Datenblatt des 74HC595. Schließen Sie die Widerstände auf die Stifte 4-7 mit Drahtbrücken wie in den Abbildungen 1 und 2 Connect Stifte 1-3 und 15, um den Kopfstiften gezeigt nach dem Schema (beachten Sie die Verkabelung in das Bild nicht korrekt ist, aber die schematische korrekt ist) . Die Stifte Verbindungen zum 74HC595 sollte wie folgt sein: Pin 15 - Blue 4 Pin 1 - Blue 3 Pin 2 - Blue 2 Pin 3 - Blue 1 Pin 4 - LED GND 4 Pin 5 - LED GND 3 Pin 6 - LED GND 2 Pin 7 - LED GND 1 Führen Sie die Stiftverbindungen erhalten Richtigkeit dieser Teil langsam tun und verweisen auf die schematische oft. Stellen Sie sicher, alle diese Verbindungen mit Lot elektrisch verbinden auf der Unterseite der Platine (2 und 4) Schritt 11: In Second 74HC595: Part 1 Jedes 74HC595 nur kann Quelle 70mA zu einer Zeit, für alle seine Stifte. Mit der 100-Ohm Strombegrenzungswiderstände, wenn alle 4 LEDs in einer Reihe stehen auf zur gleichen Zeit (mit Multiplex das ist die maximale Anzahl der LEDs, die möglicherweise auf zur gleichen Zeit sein kann), werden sie jeder Ziehung über 18mA, welche das setzt Stromanforderungen leicht über dem 70mA maximale Bewertung. Ich werde Zeichnung zusätzlicher Strom von den Stiften Q0-Q7, um die Tasten zu multiplexen (in späteren Schritten). Eine einfache Lösung für dieses Problem ist, eine andere 74HC595, um die Schaltung hinzuzufügen, wird es parallel zur Strom 74HC595 verdrahtet werden (siehe Schema). Dies wird uns zusätzliche 70mA aus auf alle 8 Pins zu ziehen. Fügen Sie ein weiteres 16-poligen Buchse auf der Lochrasterplatinen, wie in der 12 gezeigt images.Step: In Second 74HC595: Part 2 Drahtstifte 1-7 und 15 der Buchsen untereinander (siehe Hinweis auf schematisch). Diese Stifte entsprechen allen acht Ausgängen des 74HC595s.Step 13: In Second 74HC595: Teil 3 Verbinden Sie Pin 8 (Masse) und Pin 16 (5 V) der Buchsen zusammen (siehe Bild Anmerkung über schematisch) .Schritt 14: In Second 74HC595: Teil 4 Verbindung der Stifte 11, 12 und 14 der Buchsen zueinander. Diese entsprechen den Taktgeber, verriegeln und Daten-Pins des 74HC595s.Step 15: In Second 74HC595: Part 4 Drahtstift 10 auf 5 V (Pin 16) und Pin 13 auf Masse (Pin 8). Header-Pins: Pin 10 (MR) sollte hoch und Pin 13 (OE) sollte, um Daten an die Ausgangsstifte (Q0-Q7) .Schritt 16 senden niedrig sein Solder Kopfstifte an den perfboard so dass ein Arduino Uno kann passen auf sie einrasten. Achten Sie auf die ungeraden Pin Abstand zwischen digitalen Stiften 7 und 8, habe ich dieses Projekt so konzipiert, dass eine Verbindung zu Pin 8-13 ist nicht notwendig, ist es wahrscheinlich am besten, für Arduino Pins Kopfstiften 0-13 weglassen, so dass die Dinge zusammenschnappen einfacher (siehe Bild Hinweis) .Schritt 17: Schließen Sie 74HC595, um Arduino Schließen Sie drei 74HC595 Datenpins, digitale Stifte 5, 6 und 7. Verbinden Sie Masse und 5V Arduino Arduino zu entsprechenden Leistungs Pins. Steckerbelegung: 74HC595 Arduino Datenstift (Pin 14) Digitalstift 7 Raststift (Pin 12) Digitalstift 6 Uhr (Pin 11) Digitalstift 5Step 18: Test LEDs Laden Sie den Code unten auf die Arduino und testen, ob LEDs korrekt verdrahtet. Legen Sie zwei 74HC595s in die leeren Sockel, schließen Sie das Button PCB in die Fassung, und schließen Sie das Arduino auf die protoboard (Bild 1). Sie sollten jedes LED-Licht bis ein zu einer Zeit zu sehen, diese Schleife weiterhin zu wiederholen immer (siehe Video unten). Wenn dies nicht funktioniert, überprüfen Sie die Anschlüsse in den vorherigen Schritten und lassen Sie Ihre Verbindungen nach Kontinuität. Nicht auf den nächsten Schritten fortfahren, bis Sie die LEDs zum Laufen zu bringen. Weitere Informationen zu den 74HC595 und shiftOut, siehe Abb 2, das Datenblatt und die Arduino Referenzseite . // LED TEST w / 74HC595 // Von Amanda Ghassaei 2012 / * * Dieses Programm ist freie Software; es darf weitergegeben und / oder zu modifizieren * Es unter den Bedingungen der GNU General Public License, wie von veröffentlicht * Die Free Software Foundation; entweder Version 2 der Lizenz oder * (Nach Ihrer Option) jeder späteren Version. * * / // Diese Firmware leuchtet die jeweils von einem LED ein // Stiftverbindungen int Verriegelungsstift = 6; int clockPin = 5; int dataPin = 7; // Schleife Variablen Byte-i; Byte-j; // Speichervariable Byte dataToSend; Leere setup () { pinMode (Verriegelungsstift, OUTPUT); pinMode (clockPin, OUTPUT); pinMode (dataPin, OUTPUT); } Leere Schleife () { for (i = 0; i <4; i ++) { for (j = 0; j <4; j ++) { dataToSend = (1 << (i + 4)) | (15 & ~ (1 << j)); // preprare Byte bis zu 74HC595 senden // Setlatch Pin niedrig, so dass die LEDs nicht beim Versenden in Bits ändern digital (Verriegelungsstift, LOW); // Am dataToSend verschieben sich die Bits shiftOut (dataPin, clockPin, LSBFIRST, dataToSend); // Setze Raststift hoch, so dass die LEDs leuchten digital (Verriegelungsstift, HIGH); Verzögerung (500); // warten } } } Schritt 19: Multiplexing mit Arduino und 74HC165 Die 74HC595 kann nur tun, parallel ausgegeben, so habe ich ein 74HC165, um den Zustand der Tasten über 4 Strombegrenzungswiderstände messen und senden diese Information an den Arduino. Mehr Infos über den Chip kann für sich finden Datenblatt . Beachten Sie in Figur 2, dass die 595 Chips aus den vorherigen Schritten wird Energie an den Tasten (wie sie es tun für die LEDs). Die 74HC165 hat folgende Stifte (der technische Name können etwas unterschiedlich je nachdem, welche Datenblatt Sie gerade lesen): Position / Common Name / Technischer Name 1 Raststift (active low) PL (mit einer Linie auf der Oberseite) 2 Taktpin CP 3 parallelen Eingang 4 D4 4 parallele Eingangs 5 ​​D5 5 parallelen Eingangs 6 D6 6 parallele Eingangs 7 D7 7 inverse seriellen Ausgang Q7 (mit einer Linie auf der Oberseite) 8 Masse GND 9 seriellen Ausgang (Datenanschluss) Q7 10 seriellen Eingang DS 11 parallele Eingangs 0 D0 12 parallele Eingangs 1 D1 13 parallele Eingangs 2 D2 14 parallele Eingangs 3 D3 15 Taktfreigabeeingang (active low) CE (mit einer Linie auf der Oberseite) 16 5 Volt Versorgung VCC Die Verbindungen zwischen dem 74HC165 und Sparkfun Platte sind in der schematischen gezeigt und unten wiederholt: 74HC165 -> Sparkfun Breakout Board D0 SWITCH GND 4 D1 SWITCH GND 3 D2 SWITCH GND 2 D3 SWITCH GND 1 (Beachten Sie, dass die 165 Pins sollten auch eine Verbindung über einen Widerstand an Masse haben - siehe Schema) Die restlichen Stifte haben die folgenden Verbindungen zu dem Arduino (auch in schematischer dargestellt): 74HC165 -> Arduino Vcc 5 V GND GND CE (Linie oben) GND DS GND Q7 Digitale Pin 2 Q7 (Linie oben) keine Verbindung PL (Linie oben) Digitale Pin 4 CP Digitale Pin 3Schritt 20: 74HC165: Part 1 Löten Sie ein drittes 16-poligen Buchse auf der Lochrasterplatinen, wird diese für den 74HC165 sein. Schließen Sie 5V an Pin 16 und Masse zu 8.Step 21-polig: 74HC165: Part 2 Pull Down Widerstände Früher habe ich die Widerstände in Reihe mit den Tasten D0-D3 des 165-Chip nach unten ziehen, um Boden, während die Tasten nicht gedrückt werden - dies ist ein "Pull-Down-Widerstand" bezeichnet. Löten Sie vier 10kOhm Widerstände zu den Pins neben den Kopfstiften (siehe Bild 1). Verbinden vier Drähte von den 74HC165 Eingänge D0-3 (Pins 11-14) in den Raum zwischen der männlichen Kopfstiften und den 10k Widerstände wie in Figur 3 und in der schematischen angedeutet (siehe auch gelbe Drähte in Figur 2). Drag Lot zwischen den Kopfstiften, die Drähte an die 165-Chip, und die Widerstände um sie zu verbinden (siehe Bild 3). Schließen Sie die andere Seite der vier Widerstände zueinander und zur Erde Arduino (siehe wieder FIG 3 und die schematisch). Wir werden die Versorgung der Tasten mit dem gleichen Versorgung, die Stromversorgung ist der LEDs - die 595 Chips. Drag Lot zwischen den Kopfstiften, die an die LED-BLUE (1-4) auf der Sparkfun Bord der Kopfstiften, die auf dem Board Sparkfun Schalter (1-4) anschließen anschließen (siehe Hinweis auf Figur 3 und 5) .Schritt 22: 74HC165: Teil 3 Schließen Sie die Datenstifte des 74HC165 in die Arduino (braunes Kabel) Pin-Anschlüsse (ebenfalls in schematischer dargestellt): 74HC165 Arduino PL (Linie oben) (Pin 1) Digitalstift D4 CP (Pin 2) Digitalstift D3 Q7 (Pin 9) Digitalstift D2Step 23: 74HC165: Teil 4 Verbinden Sie die Masse an Pin 15 (CE mit der Linie auf der Oberseite) und 10 (DS) des 74HC165.Step 24: Test Buttons Laden Sie den folgenden Code auf das Arduino. Wenn alles richtig verkabelt wird jede Taste leuchtet, während gedrückt. Wenn Sie bemerken, dass einige Tasten sind nicht so reagieren, reinigen Sie die leitenden Ringe und die Spuren auf der Leiterplatte mit Wasser und Trocknen gründlich, diese zu lösen einige Probleme Antwort für mich. // TASTE TEST w / 74HC595 und 74HC165 // Von Amanda Ghassaei 2012 / * * Dieses Programm ist freie Software; es darf weitergegeben und / oder zu modifizieren * Es unter den Bedingungen der GNU General Public License, wie von veröffentlicht * Die Free Software Foundation; entweder Version 2 der Lizenz oder * (Nach Ihrer Option) jeder späteren Version. * * / // Diese Firmware verursacht die Tasten zu leuchten kurzzeitig während sie gedrückt werden. // Stiftverbindungen int ledLatchPin = 6; int ledClockPin = 5; int ledDataPin = 7; int buttonLatchPin = 4; int buttonClockPin = 3; int buttonDataPin = 2; // Schleife Variablen Byte-i; Byte-j; Byte k; // Speicher für LED-Zustände, 4 Byte Byte ledData [] = {0, 0, 0, 0}; // Speicher für Tasten, 4 Byte Byte buttonCurrent [] = {0,0,0,0}; Byte buttonLast [] = {0,0,0,0}; Byte Button [] = {0,0,0,0}; Byte Button [] = {0,0,0,0}; // Button debounce Gegen 16 Bytes Byte buttonDebounceCounter [4] [4]; Leere setup () { DDRD = 0xFA; // Satz Stifte D7-D4 als Ausgabe, D2 als Eingangs } // ButtonCheck - überprüft den Zustand einer bestimmten Taste. // Dies buttoncheck Funktion weitgehend aus dem monome 40h Firmware von Brian Crabtree und joe See kopiert Leere buttonCheck (byte Reihe, Byte-Index) { if (((buttonCurrent [row] ^ buttonLast [Reihe]) & (1 << index)) && // wenn die aktuelle physische Taste Zustand, die von der ist ((ButtonCurrent [row] ^ Button [Reihe]) & (1 << index))) {// letzten physischen Schaltzustand und der aktuelle Zustand entprellt if (buttonCurrent [Zeile] & (1 << index)) {// wenn die aktuelle körperliche Zustand Taste gedrückt wird Button [row] = 1 << index; // Sofort Warteschlange eine neue Schaltfläche Ereignis Button [Zeile] | = (1 << index); // Und den entprellt Zustand nach unten. } else { buttonDebounceCounter [Zeile] [index] = 12; } // Andernfalls die Taste zuvor gedrückt und jetzt // Freigegeben wurde, so wir unsere Entprellzähler. } else if (((buttonCurrent [row] ^ buttonLast [Reihe]) & (1 << index)) == 0 && // wenn die aktuelle physische Taste Zustand ist die gleiche wie (ButtonCurrent [row] ^ Button [Reihe]) & (1 << index)) {// die letzte physische Taste Staat, sondern der aktuelle physikalische // Button Zustand, die von der aktuellen debounce ist // Stand ... if (buttonDebounceCounter [row] [Index]> 0 && --buttonDebounceCounter [row] [Index] == 0) {// wenn das die Entprellzähler hat // Auf 0 heruntergezählt worden ist (was bedeutet, die // Die Taste hat für gewesen // KButtonUpDefaultDebounceCount // Iterationen /// Button [row] = 1 << index; // Schlange eine Schaltfläche Zustandsänderungsereignis if (buttonCurrent [Zeile] & (1 << index)) {// und drücken Sie die Tasten debounce Zustand. Button [Zeile] | = (1 << index); } else { Button [row] und = ~ (1 << index); } } } } Leere shift () { for (i = 0; i <4; i ++) { buttonLast [i] = buttonCurrent [i]; Byte dataToSend = (1 << (i + 4)) | (15 & ~ ledData [i]); // Setze Raststift niedrig, so dass die LEDs nicht beim Versenden in Bits ändern digital (ledLatchPin, LOW); // Verschieben sich die Bits dataToSend shiftOut (ledDataPin, ledClockPin, LSBFIRST, dataToSend); // Setze Raststift hoch, so dass die LEDs werden neue Daten zu empfangen digital (ledLatchPin, HIGH); // Einmal eine Zeile wurde hoch eingestellt ist, empfangen Daten von Tasten // Setze Raststift hoch digital (buttonLatchPin, HIGH); // Verschiebung der Daten buttonCurrent [i] = Shiftin (buttonDataPin, buttonClockPin, LSBFIRST) >> 3; // Verriegelungsstift niedrig digital (buttonLatchPin, LOW); for (k = 0; k <4; k ++) { buttonCheck (i, k); } } } Leere updateLEDs () {// Die LEDs zu aktualisieren, um hte Zustand der Tasten zu reflektieren for (j = 0; j <4; j ++) { ledData [j] = Button [j]; } } Leere Schleife () { verschieben (); updateLEDs (); } Schritt 25: Serielle Kommunikation An dieser Stelle in das Projekt habe ich ein wenig ungeduldig und wollte beginnen, einige Klänge, so dass ich noch ein paar Dinge, auf die Firmware, um die Arduino Senden und Empfangen von Daten seriell. Ich habe den Code unten geschrieben. Ich habe eine Timer-Interrupt, um den Arduino, die auf eingehenden seriellen Nachrichten halten, können Sie ein wenig mehr darüber, wie das hier funktioniert lesen. (Wenn Sie vorhaben, diesen Code zu testen, verwenden Sie die App angebracht ist, ist die neuere Version des Beat-Slicer-App auf Github ein wenig anders). // TASTE TEST w / 74HC595 und 74HC165 und serielle Kommunikation // Von Amanda Ghassaei // Juni 2012 / * * Dieses Programm ist freie Software; es darf weitergegeben und / oder zu modifizieren * Es unter den Bedingungen der GNU General Public License, wie von veröffentlicht * Die Free Software Foundation; entweder Version 2 der Lizenz oder * (Nach Ihrer Option) jeder späteren Version. * * / // Diese Firmware wird Daten hin und her mit dem MaxMSP Patch senden "Beat Slicer" // Stiftverbindungen int ledLatchPin = 6; int ledClockPin = 5; int ledDataPin = 7; int buttonLatchPin = 4; int buttonClockPin = 3; int buttonDataPin = 2; // Schleife Variablen Byte-i; Byte-j; Byte k; Byte ledByte; // Speicher für LED-Zustände, 4 Byte Byte ledData [] = {0, 0, 0, 0}; // Speicher für Tasten, 4 Byte Byte buttonCurrent [] = {0,0,0,0}; Byte buttonLast [] = {0,0,0,0}; Byte Button [] = {0,0,0,0}; Byte Button [] = {0,0,0,0}; // Button debounce Gegen 16 Bytes Byte buttonDebounceCounter [4] [4]; Leere setup () { DDRD = 0xFA; // Satz Stifte D7-D4 als Ausgabe, D2 als Eingangs Serial.begin (57600); cli (); // Stop-Interrupts // Setze timer2 alle 128us zu unterbrechen TCCR2A = 0; // gesetzt gesamten TCCR2A Register auf 0 TCCR2B = 0; // gleiche für TCCR2B TCNT2 = 0; // initialisieren Zählerwert auf 0 // Set vergleichen Einstimmungsregister für 7.8khz Schritten OCR2A = 255; // = (16 * 10 ^ 6) / (7812,5 * 8) - 1 (muss <256) // Auf CTC-Modus schalten TCCR2A | = (1 << WGM21); // Set CS11-Bit für 8 Vorteiler TCCR2B | = (1 << CS11); // Timer aktivieren vergleichen zu unterbrechen TIMSK2 | = (1 << OCIE2A); sei (); // ermöglichen Interrupts } // ButtonCheck - überprüft den Zustand einer bestimmten Taste. // Dies buttoncheck Funktion weitgehend aus dem monome 40h Firmware von Brian Crabtree und joe See kopiert Leere buttonCheck (byte Reihe, Byte-Index) { if (((buttonCurrent [row] ^ buttonLast [Reihe]) & (1 << index)) && // wenn die aktuelle physische Taste Zustand, die von der ist ((ButtonCurrent [row] ^ Button [Reihe]) & (1 << index))) {// letzten physischen Schaltzustand und der aktuelle Zustand entprellt if (buttonCurrent [Zeile] & (1 << index)) {// wenn die aktuelle körperliche Zustand Taste gedrückt wird Button [row] = 1 << index; // Sofort Warteschlange eine neue Schaltfläche Ereignis Button [Zeile] | = (1 << index); // Und den entprellt Zustand nach unten. } else { buttonDebounceCounter [Zeile] [index] = 12; } // Andernfalls die Taste zuvor gedrückt und jetzt // Freigegeben wurde, so wir unsere Entprellzähler. } else if (((buttonCurrent [row] ^ buttonLast [Reihe]) & (1 << index)) == 0 && // wenn die aktuelle physische Taste Zustand ist die gleiche wie (ButtonCurrent [row] ^ Button [Reihe]) & (1 << index)) {// die letzte physische Taste Staat, sondern der aktuelle physikalische // Button Zustand, die von der aktuellen debounce ist // Stand ... if (buttonDebounceCounter [row] [Index]> 0 && --buttonDebounceCounter [row] [Index] == 0) {// wenn das die Entprellzähler hat // Auf 0 heruntergezählt worden ist (was bedeutet, die // Die Taste hat für gewesen // KButtonUpDefaultDebounceCount // Iterationen /// Button [row] = 1 << index; // Schlange eine Schaltfläche Zustandsänderungsereignis if (buttonCurrent [Zeile] & (1 << index)) {// und drücken Sie die Tasten debounce Zustand. Button [Zeile] | = (1 << index); } else { Button [row] und = ~ (1 << index); } } } } Leere shift () { for (i = 0; i <4; i ++) { buttonLast [i] = buttonCurrent [i]; Byte dataToSend = (1 << (i + 4)) | (15 & ~ ledData [i]); // Setze Raststift niedrig, so dass die LEDs nicht beim Versenden in Bits ändern digital (ledLatchPin, LOW); // Verschieben sich die Bits dataToSend shiftOut (ledDataPin, ledClockPin, LSBFIRST, dataToSend); // Setze Raststift hoch, so dass die LEDs werden neue Daten zu empfangen digital (ledLatchPin, HIGH); // Einmal eine Zeile wurde hoch eingestellt ist, empfangen Daten von Tasten // Setze Raststift hoch digital (buttonLatchPin, HIGH); // Verschiebung der Daten buttonCurrent [i] = Shiftin (buttonDataPin, buttonClockPin, LSBFIRST) >> 3; // Verriegelungsstift niedrig digital (buttonLatchPin, LOW); for (k = 0; k <4; k ++) { buttonCheck (i, k); if (Button [i] <> 1) und 3; Byte LEDx = (ledByte >> 3) & 3; if (LED-Status) { ledData [ledy] | = 8 >> LEDx; } else { ledData [ledy] & = ~ (8 >> LEDx); } } // End if Serien verfügbar } // End tun while (Serial.available ()> 8); } Leere Schleife () { shift();//updates leds and receives data from buttons } I sent this serial data to an audio processing application I wrote in MaxMSP. You can download this application below (called beat slicer) and open it with MaxMSP or MaxRuntime (free version) here . I'm running Max 5, I assume it will work on Max 6 as well. It will prompt you to select an audio file (wav, mp3, aiff). Then you can manipulate this audio file using the button grid as shown in the video below: Step 26: Battery Alle 10 Artikel anzeigen One of my main objectives for this project was to make something portable, so the next step is to add portable power. I used a rechargeable Li-Po battery to minimize waste and provide enough power for hours of use. Additionally, I wanted a Li-Po battery that only had two leads coming out of it so that I could charge it using a regular barrel plug. Here are the parts for the power setup, taken from the parts list on the first page: Li-Ion 7.4V Tenergy 2200mAh Rechargeable Battery module with PCB Amazon Tenergy Universal Smart Charger for Li-Ion/Polymer battery Pack (3.7V-14.8V 1-4 cells) Amazon Size N Panel-Mount Coaxial DC Power Jack Radioshack 274-1576 Size N Coaxial DC Power Plug Radioshack 274-1573 SPST Toggle Switch Radioshack 275-634 Cut and strip the two leads from the battery (do not let them short out). Make connections between the battery, plug, switch and Arduino according to the schematic above. I like to always attach ground to the outside part of the coaxial jack, but you can wire it however you like (just make sure your wiring of the charger is consistent!). Cut and strip the two leads from the charger. Solder the n type barrel plug to these leads as shown in the image above. Make sure that the polarity of your charger's barrel plug matches the polarity of the jack. Again, I've chosen to connect ground to the outside part of the coaxial jack/plug in the images above. Now the switch acts as an on/off switch to the Arduino and the battery can be charged via the barrel plug. Charging Li-Po batteries is a somewhat complicated procedure that involves balancing the cells of the battery, I'm not sure if hooking up the Arduino in parallel with the battery during charging will interfere with this process. Just to be safe, I'm always sure to switch the power switch off during charging, thereby removing the Arduino from the circuit. Note- be careful when using Li-Po batteries, improper use can result in fire. Be careful not to short circuit the battery and always use the proper charger.Step 27: Midi Out Show All 13 Items This instrument is primarily a MIDI device, so we need to build a MIDI out. There are two ways to do this (and over the course of this project I did one and then switched to the other): output MIDI via a 5 pin DIN connector (see fig 1) output MIDI via USB (this is what I eventually settled on) Either of these options is fine, I chose USB because I didn't want to have to carry a special MIDI to USB cable all the time. If you have a lot of synthesizers that receive a 5 pin MIDI input, it might be more convenient for you to use the 5 pin jack (it's also a little easier). I'll go through both processes below: 5 pin connection: Solder a 220ohm resistor to pin 4 of the MIDI jack and connect to Arduino 5V. Solder a wire between MIDI pin 2 and ground. Solder a wire between MIDI pin 5 and digital pin 1 (TX). MIDI over USB: MIDI over USB is a little tricky. Ideally we'd be able to send MIDI out the USB port already connected to the Arduino, but this turns out to be more trouble than it's worth in my opinion. You can read a little bit about various solutions here . Instead, I found a really great tutorial that explains how you can take apart a cheap MIDI to USB cable , solder new connections to it, and tuck it inside your project enclosure with your Arduino, to create a secondary MIDI-USB output. The process is explained really well on the Shiftmore blog, but the MIDI to USB cable I received from amazon was a little different, so I'll describe the process again here. Remove the plastic casing from the MIDI to USB cable and unsolder the connections to the cables on either end (fig 8). The USB connections are shown here , make the following connections: 5V + DP D+ DM D- VSS - As you can see in figs 9 and 10, I used a pieced of perf board to make the connections to the USB jack. On the other side of the MIDI to USB board, make the following connections to the Ardunio: IN- Digital Pin 1 (TX) GND Arduino Ground Testing it out: Load the firmware below onto the Arduino (also in attached file), it will turn the keypad into a simple MIDI device: pressing each of the buttons will cause the button to light up and trigger a MIDI note. Disconnect the Arduino's serial connection and connect the MIDI output to a MIDI instrument or your computer to hear the MIDI notes. You should also see the yellow MIDI IN light on the MIDI to USB board turn on with each note. More info about programming the Arduino to send MIDI can be found here. //basic midi test //by Amanda Ghassaei 2012 / * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * / //this firmware will cause the buttons to light up momentarily while they are pressed. //pin connections int ledLatchPin = 6; int ledClockPin = 5; int ledDataPin = 7; int buttonLatchPin = 4; int buttonClockPin = 3; int buttonDataPin = 2; //looping variables byte i; byte j; byte k; //storage for led states, 4 bytes byte ledData[] = {0, 0, 0, 0}; //storage for buttons, 4 bytes byte buttonCurrent[] = {0,0,0,0}; byte buttonLast[] = {0,0,0,0}; byte buttonEvent[] = {0,0,0,0}; byte buttonState[] = {0,0,0,0}; //button debounce counter- 16 bytes byte buttonDebounceCounter[4][4]; //MIDI variables int velocity = 100; int noteON = 144; int MIDIoffset = 60; void setup() { DDRD = 0xFA;//set pins D7-D4 as output, D2 as input Serial.begin(31250);//set midi baud rate } // buttonCheck - checks the state of a given button. //this buttoncheck function is largely copied from the monome 40h firmware by brian crabtree and joe lake void buttonCheck(byte row, byte index) { if (((buttonCurrent[row] ^ buttonLast[row]) & (1 << index)) && // if the current physical button state is different from the ((buttonCurrent[row] ^ buttonState[row]) & (1 << index))) { // last physical button state AND the current debounced state if (buttonCurrent[row] & (1 << index)) { // if the current physical button state is depressed buttonEvent[row] = 1 << index; // queue up a new button event immediately buttonState[row] |= (1 << index); // and set the debounced state to down. } else{ buttonDebounceCounter[row][index] = 12; } // otherwise the button was previously depressed and now // has been released so we set our debounce counter. } else if (((buttonCurrent[row] ^ buttonLast[row]) & (1 << index)) == 0 && // if the current physical button state is the same as (buttonCurrent[row] ^ buttonState[row]) & (1 << index)) { // the last physical button state but the current physical // button state is different from the current debounce // state... if (buttonDebounceCounter[row][index] > 0 && --buttonDebounceCounter[row][index] == 0) { // if the the debounce counter has // been decremented to 0 (meaning the // the button has been up for // kButtonUpDefaultDebounceCount // iterations/// buttonEvent[row] = 1 << index; // queue up a button state change event if (buttonCurrent[row] & (1 << index)){ // and toggle the buttons debounce state. buttonState[row] |= (1 << index); } else{ buttonState[row] &= ~(1 << index); } } } } void shift(){ for (i=0;i<4;i++){ buttonLast[i] = buttonCurrent[i]; byte dataToSend = (1 << (i+4)) | (15 & ~ledData[i]); // set latch pin low so the LEDs don't change while sending in bits digitalWrite(ledLatchPin, LOW); // shift out the bits of dataToSend shiftOut(ledDataPin, ledClockPin, LSBFIRST, dataToSend); //set latch pin high so the LEDs will receive new data digitalWrite(ledLatchPin, HIGH); //once one row has been set high, receive data from buttons //set latch pin high digitalWrite(buttonLatchPin, HIGH); //shift in data buttonCurrent[i] = shiftIn(buttonDataPin, buttonClockPin, LSBFIRST) >> 3; //latchpin low digitalWrite(buttonLatchPin, LOW); for (k=0;k<4;k++){ buttonCheck(i,k); } } } void updateLEDs(){ //update the leds to reflect hte state of the buttons for (j=0;j<4;j++){ ledData[j] = buttonState[j]; } } void MIDImessage(int command, int MIDInote, int MIDIvelocity) {//send sa MIDI message Serial.write(command);//send note on or note off command Serial.write(MIDInote);//send pitch data Serial.write(MIDIvelocity);//send velocity data } void sendMIDI(){ for (byte a=0;a<4;a++){ for (byte b=0;b<4;b++){ if (buttonEvent[a]&(1<<b)){ buttonEvent[a]&=~(1<<b);//zero button event if (buttonState[a]&(1<<b)){ MIDImessage(noteON,(MIDIoffset+a*5+b),100); } else{ MIDImessage(noteON,(MIDIoffset+a*5+b),0); } } } } } Leere Schleife () { shift(); updateLEDs(); sendMIDI(); } Step 28: Accerometer/Gyro Alle 9 Artikel anzeigen I attached a 2 axis gyroscope and 3 axis accelerometer onto this project so that I could add some interesting control to the device. The 5 degrees of freedom board from Sparkfun outputs data from its gyroscope and accelerometer as analog voltages. I sent these to analog pin 0-4. You may notice that the Gyro has four outputs- I chose to use the X/Y4.5 out instead of the X/YRate out because the 4.5 has higher resolution. I wrote more about this board and explained some of the code I used to get it up and running here. Solder header pins on the gyro/accelerometer board. Solder on the perfboard, making sure to leave room for the Arduino to fit on top. Make the following pin connections: RAW - Arduino 5V GND- Arduino ground X4.5- A2 Y4.5- A0 XAcc- A4 YAcc- A3 ZAcc- A1 (I ended up disconnecting this later to free up an analog input for a second potentiometer) Upload the following code and check the serial monitor to make sure accelerometer/gyro is functioning properly. When the board is lying still and parallel to the ground the values of xGyro, yGyro, xAcc, and yAcc should all hover around 0. zAcc should output a value around -66 (see fig 8). Move the board around and see how the values change. In figure 9 you can see how rotation about the x axis changes xGyro and y and zAcc, but not yGyro or xAcc. //Analog Accerometer w Serial //by Amanda Ghassaei //instructables.com/amandaghassaei //August 2012 / * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * / //setup acceleration variables int xAcc; int yAcc; int zAcc; //setup gyre variables int xGyro; int yGyro; int zero = 282;//this was the zero point value for my accelerometer, your board may be slightly different. void setup(){ Serial.begin(9600);//set up serial } void loop(){ //read values xGyro = analogRead(A2); yGyro = analogRead(A0); xAcc = analogRead(A4); yAcc = analogRead(A3); zAcc = analogRead(A1); //print values Serial.print("xGyro "); Serial.println(317-xGyro); Serial.print("yGyro "); Serial.println(183-yGyro); Serial.print("xAcc "); Serial.println(zero-xAcc); Serial.print("yAcc "); Serial.println(zero-yAcc); Serial.print("zAcc "); Serial.println(zero-zAcc); Serial.println(" "); delay(500);//wait } The following pieces of firmware combine the hardware that I've set up in the preview steps with the accelerometer and gyroscope. Each of the programs functions are summarized in the video below: The code below lets you light up one pixel of the button pad and move the pixel around the 4x4 grid by tilting it in different directions. As the pixel moves across the grid it also triggers MIDI notes. //accelerometer test //by Amanda Ghassaei 2012 / * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * / //this firmware will cause the buttons to light up momentarily while they are pressed. //pin connections int ledLatchPin = 6; int ledClockPin = 5; int ledDataPin = 7; int buttonLatchPin = 4; int buttonClockPin = 3; int buttonDataPin = 2; //setup varibles for Gyroscope/Accelerometer int xGyroRAW; int yGyroRAW; int xAccRAW; int yAccRAW; int zAccRAW; byte xGyro; byte yGyro; byte xAcc; byte yAcc; byte zAcc; //looping variables byte i; byte j; byte k; //storage for led states, 4 bytes byte ledData[] = {0, 0, 0, 0}; //storage for buttons, 4 bytes byte buttonCurrent[] = {0,0,0,0}; byte buttonLast[] = {0,0,0,0}; byte buttonEvent[] = {0,0,0,0}; byte buttonState[] = {0,0,0,0}; //button debounce counter- 16 bytes byte buttonDebounceCounter[4][4]; //variables for accelerometer pixel movement boolean firstPress = 1; byte movingPixel[] = {0, 0, 0, 0}; byte yPosition; byte xPosition; int timeX = 0; int timeY = 0; boolean dirX = 0; boolean dirY = 0; byte lastX = 4; byte lastY = 4; //MIDI variables int velocity = 100; int noteON = 144; int MIDIoffset = 60; byte currentX; void setup() { DDRD = 0xFA;//set pins D7-D4 as output, D2 as input Serial.begin(31250);//MIDI baud rate // Serial.begin(9600); cli();//stop interrupts //set timer1 interrupt at 1kHz TCCR1A = 0;// set entire TCCR1A register to 0 TCCR1B = 0;// same for TCCR1B TCNT1 = 0;//initialize counter value to 0; // set timer count for 1khz increments OCR1A = 1999;// = (16*10^6) / (1000*8) - 1 // turn on CTC mode TCCR1B |= (1 << WGM12); // Set CS11 bit for 8 prescaler TCCR1B |= (1 << CS11); // enable timer compare interrupt TIMSK1 |= (1 << OCIE1A); sei();//allow interrupts } ISR(TIMER1_COMPA_vect) {//Interrupt at freq of 1kHz timeX++;//increment timeX timeY++;//increment timeY } // buttonCheck - checks the state of a given button. //this buttoncheck function is largely copied from the monome 40h firmware by brian crabtree and joe lake void buttonCheck(byte row, byte index) { if (((buttonCurrent[row] ^ buttonLast[row]) & (1 << index)) && // if the current physical button state is different from the ((buttonCurrent[row] ^ buttonState[row]) & (1 << index))) { // last physical button state AND the current debounced state if (buttonCurrent[row] & (1 << index)) { // if the current physical button state is depressed buttonEvent[row] = 1 << index; // queue up a new button event immediately buttonState[row] |= (1 << index); // and set the debounced state to down. } else{ buttonDebounceCounter[row][index] = 12; } // otherwise the button was previously depressed and now // has been released so we set our debounce counter. } else if (((buttonCurrent[row] ^ buttonLast[row]) & (1 << index)) == 0 && // if the current physical button state is the same as (buttonCurrent[row] ^ buttonState[row]) & (1 << index)) { // the last physical button state but the current physical // button state is different from the current debounce // state... if (buttonDebounceCounter[row][index] > 0 && --buttonDebounceCounter[row][index] == 0) { // if the the debounce counter has // been decremented to 0 (meaning the // the button has been up for // kButtonUpDefaultDebounceCount // iterations/// buttonEvent[row] = 1 << index; // queue up a button state change event if (buttonCurrent[row] & (1 << index)){ // and toggle the buttons debounce state. buttonState[row] |= (1 << index); } else{ buttonState[row] &= ~(1 << index); } } } } void shift(){ for (i=0;i<4;i++){ buttonLast[i] = buttonCurrent[i]; byte dataToSend = (1 << (i+4)) | (15 & ~ledData[i]); // set latch pin low so the LEDs don't change while sending in bits digitalWrite(ledLatchPin, LOW); // shift out the bits of dataToSend shiftOut(ledDataPin, ledClockPin, LSBFIRST, dataToSend); //set latch pin high so the LEDs will receive new data digitalWrite(ledLatchPin, HIGH); //once one row has been set high, receive data from buttons //set latch pin high digitalWrite(buttonLatchPin, HIGH); //shift in data buttonCurrent[i] = shiftIn(buttonDataPin, buttonClockPin, LSBFIRST) >> 3; //latchpin low digitalWrite(buttonLatchPin, LOW); for (k=0;k<4;k++){ buttonCheck(i,k); } } } void checkFirstButton(){ for (byte a=0;a<4;a++){ if (buttonEvent[a]){ for (byte b=0;b<4;b++){ if (buttonState[a]&(1<=-10){ return 5; } else if (RAW<-10){ if (RAW<-50){ return 0; } else if (RAW<-40){ return 1; } else if (RAW<-30){ return 2; } else if (RAW<-20){ return 3; } else{ return 4; } } else if (RAW>10){ if (RAW>50){ return 10; } else if (RAW>40){ return 9; } else if (RAW>30){ return 8; } else if (RAW>20){ return 7; } else{ return 6; } } } void checkAccelerometer(){ //read values xGyroRAW = analogRead(A1); yGyroRAW = analogRead(A0); xAccRAW = analogRead(A4); yAccRAW = analogRead(A3); zAccRAW = analogRead(A2); //offset data xGyroRAW = 317-xGyroRAW; yGyroRAW = 183-yGyroRAW; xAccRAW = 282-xAccRAW; yAccRAW = 282-yAccRAW; zAccRAW = 282-zAccRAW; if (xAccRAW>0){ dirX = 1; } else{ dirX = 0; } if (yAccRAW>0){ dirY = 1; } else{ dirY = 0; } //convert to 0-10 xAcc = scaleAcc(xAccRAW); yAcc = scaleAcc(yAccRAW); } int getTime(byte acceleration){ switch (acceleration){ case 0://max - acceleration return 25; Unterbrechung; case 1: return 25; Unterbrechung; case 2: return 50; Unterbrechung; case 3: return 100; Unterbrechung; case 4: return 150; Unterbrechung; case 5://lying flat return 0; Unterbrechung; case 6: return 150; Unterbrechung; case 7: return 100; Unterbrechung; case 8: return 50; Unterbrechung; case 9: return 25; Unterbrechung; case 10://max + acceleration return 25; Unterbrechung; } } void moveXPixel(int timeComp){ if (timeComp==0){ } else{ if (timeX>timeComp){ timeX = 0; if (dirX){ if (xPosition==8){ } else{ xPosition = xPosition<<1; } } else{ if (xPosition==1){ } else{ xPosition = xPosition>>1; } } } } } void moveYPixel(int timeComp){ if (timeComp==0){ } else{ if (timeY>timeComp){ timeY = 0; if (dirY){ if (yPosition==3){ } else{ yPosition = yPosition+=1; } } else{ if (yPosition==0){ } else{ yPosition = yPosition-=1; } } } } } void checkMIDI(){ //convert xPosition to decimal switch (xPosition){ case 1: currentX = 0; Unterbrechung; case 2: currentX = 1; Unterbrechung; case 4: currentX = 2; Unterbrechung; case 8: currentX = 3; Unterbrechung; } //if pixel has moved send midi if (lastX != currentX || lastY != yPosition){ MIDImessage(noteON,(lastX+5*lastY+MIDIoffset),0);//turn off last note MIDImessage(noteON,(currentX+5*yPosition+MIDIoffset),velocity);//turn on next note } lastX = currentX; lastY = yPosition; } void MIDImessage(int command, int MIDInote, int MIDIvelocity) {//send sa MIDI message Serial.write(command);//send note on or note off command Serial.write(MIDInote);//send pitch data Serial.write(MIDIvelocity);//send velocity data } Leere Schleife () { shift(); if (firstPress){ checkFirstButton(); } else{ for (byte pixel=0;pixel<4;pixel++){ if (pixel==yPosition){ ledData[pixel]=xPosition; } else{ ledData[pixel] = 0; } } checkAccelerometer(); moveXPixel(getTime(xAcc)); moveYPixel(getTime(yAcc)); checkMIDI(); } } The code below lets you light up one pixel in each column. As you tilt the gyroscope, the pixels bounce against the edge of the grid and trigger a MIDI note. //accelerometer test //by Amanda Ghassaei 2012 / * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * / //this firmware will cause the buttons to light up momentarily while they are pressed. //pin connections //#define ledLatchPin 6 //#define ledClockPin 5 //#define ledDataPin 7 //#define buttonLatchPin 4 //#define buttonClockPin 3 //#define buttonDataPin 2 //setup varibles for Gyroscope/Accelerometer int xGyroRAW; int yGyroRAW; int xAccRAW; int yAccRAW; int zAccRAW; byte xGyro; byte yGyro; byte xAcc; byte yAcc; byte zAcc; //looping variables byte i; byte j; byte k; //storage for led states, 4 bytes byte ledData[] = {0, 0, 0, 0}; //storage for buttons, 4 bytes byte buttonCurrent[] = {0,0,0,0}; byte buttonLast[] = {0,0,0,0}; byte buttonEvent[] = {0,0,0,0}; byte buttonState[] = {0,0,0,0}; //button debounce counter- 16 bytes byte buttonDebounceCounter[4][4]; //variables for accelerometer pixel movement boolean firstPress[] = {0, 0, 0, 0}; byte movingPixel[] = {0, 0, 0, 0}; byte xPosition[4]; int timeX[] = {0, 0, 0, 0}; boolean dirX; boolean dirY; boolean prevDirX = 0; boolean bounceDirection[]= {0, 0, 0, 0}; boolean toggle[] = {1, 1, 1, 1}; byte peakHeight[4]; byte lastX = 4; byte lastY = 4; //MIDI variables int velocity = 100; int noteON = 144; int MIDIoffset = 60; byte currentX; byte note[] = {60, 64, 67, 72}; void setup() { DDRD = 0xFA;//set pins D7-D4 as output, D2 as input Serial.begin(31250);//MIDI baud rate cli();//stop interrupts //set timer1 interrupt at 1kHz TCCR1A = 0;// set entire TCCR1A register to 0 TCCR1B = 0;// same for TCCR1B TCNT1 = 0;//initialize counter value to 0; // set timer count for 1khz increments OCR1A = 1999;// = (16*10^6) / (1000*8) - 1 // turn on CTC mode TCCR1B |= (1 << WGM12); // Set CS11 bit for 8 prescaler TCCR1B |= (1 << CS11); // enable timer compare interrupt TIMSK1 |= (1 << OCIE1A); sei();//allow interrupts } ISR(TIMER1_COMPA_vect) {//Interrupt at freq of 1kHz for (byte a=0;a<4;a++){ timeX[a]++;//increment each element of timeX } shift(); } // buttonCheck - checks the state of a given button. //this buttoncheck function is largely copied from the monome 40h firmware by brian crabtree and joe lake void buttonCheck(byte row, byte index) { if (((buttonCurrent[row] ^ buttonLast[row]) & (1 << index)) && // if the current physical button state is different from the ((buttonCurrent[row] ^ buttonState[row]) & (1 << index))) { // last physical button state AND the current debounced state if (buttonCurrent[row] & (1 << index)) { // if the current physical button state is depressed buttonEvent[row] = 1 << index; // queue up a new button event immediately buttonState[row] |= (1 << index); // and set the debounced state to down. } else{ buttonDebounceCounter[row][index] = 12; } // otherwise the button was previously depressed and now // has been released so we set our debounce counter. } else if (((buttonCurrent[row] ^ buttonLast[row]) & (1 << index)) == 0 && // if the current physical button state is the same as (buttonCurrent[row] ^ buttonState[row]) & (1 << index)) { // the last physical button state but the current physical // button state is different from the current debounce // state... if (buttonDebounceCounter[row][index] > 0 && --buttonDebounceCounter[row][index] == 0) { // if the the debounce counter has // been decremented to 0 (meaning the // the button has been up for // kButtonUpDefaultDebounceCount // iterations/// buttonEvent[row] = 1 << index; // queue up a button state change event if (buttonCurrent[row] & (1 << index)){ // and toggle the buttons debounce state. buttonState[row] |= (1 << index); } else{ buttonState[row] &= ~(1 << index); } } } } void shift(){ for (i=0;i<4;i++){ buttonLast[i] = buttonCurrent[i]; byte dataToSend = (1 << (i+4)) | (15 & ~ledData[i]); // set latch pin low so the LEDs don't change while sending in bits PORTD&=B10111111;//digitalWrite(ledLatchPin, LOW); // shift out the bits of dataToSend //shiftOut(ledDataPin, ledClockPin, LSBFIRST, dataToSend); for (j=0;j<8;j++){ PORTD&=B11011111;//digitalWrite(ledClockPin,LOW); //digitalWrite(ledDataPin,((dataToSend>>j)&1)); if ((dataToSend>>j)&1){ PORTD|=B10000000; } else{ PORTD&=B01111111; } PORTD|=B00100000;//digitalWrite(ledClockPin,HIGH); } //set latch pin high so the LEDs will receive new data PORTD|=B01000000;//digitalWrite(ledLatchPin, HIGH); // SlowDown is put in here to waste a little time while we wait for the state of the output // pins to settle. Without this time wasting loop, a single button press would show up as // two presses (the button and its neighbour) volatile int SlowDown = 0; while (SlowDown < 15) { SlowDown++; } //once one row has been set high, receive data from buttons //set latch pin high PORTD|=B00010000;//digitalWrite(buttonLatchPin, HIGH); //shift in data //buttonCurrent[i] = shiftIn(buttonDataPin, buttonClockPin, LSBFIRST) >> 3; for (j=0;j<4;j++){ PORTD&=B11110111;//digitalWrite(buttonClockPin,LOW); PORTD|=B00001000;//digitalWrite(buttonClockPin,HIGH); } for (j=0;j<4;j++){ PORTD&=B11110111;//digitalWrite(buttonClockPin,LOW); if ((PIND>>2)&1){//digitalRead(buttonDataPin) buttonCurrent[i]|=1< Step 29: Pots Connect a black wire to the left lead of a 10K linear taper potentiometer. Connect a green wire to the middle lead. Connect a red wire to the remaining lead. Repeat this for the other potentiometer. Connect the other end of the red wires to 5V, the black wires to ground, and the green wires to Analog in Use pliers to remove the pin on the side of the pots, so that you can mount it more easily in your project enclosure.Step 30: Enclosure I borrowed an idea from former Artist in Residence Mads Hobye for my enclosure. Mads founds these sleek boxes at the container store and used them to make project enclosures for the various musical instruments he built during his stay. These boxes are particularly convenient because they have a bevel around the top that allows you to easily mount a 5mm acrylic front panel. I used a laser cutter to cut out two USB ports (one for the Arduino and one for MIDI out) in the bottom of the enclosure. Then I used a drill to make holes for two pots, a power switch, and a charging jack. The vector files are attached. I laser cut a front panel from translucent white 5mm acrylic so that it would snap fit into the wood box. the eps file for the front panel is attached below.Step 31: Final Firmware For the final firmware, I've extracted all the code that controls the buttons and leds into a library to make it more tidy, all of this is in a class called SugarCube . I was inspired by the work I've been doing on the Instructables iOS app, and wrote the event handling pieces of the code so that they work in a similar way that an iPhone deals with touch and other gestural events. Basically I created a set of methods that each app can subscribe to, things like "deviceWasShaken" or "buttonPressed". When the SugarCube class detects one of these events, it tells the current app to execute the corresponding method. If you're interested in seeing an example of this structure in action, check out SimpleMIDIKeyboard.cpp , it shows how few lines of code are needed to wire up all the button and analog controls to MIDI outputs. I hope to eventually write out a little more complete documentation for how to write your own apps based on this framework, please let me know if there is interest. This is by far my biggest piece of C++ code, and I am by no means an expert in C++, I'd love to hear an expert's thoughts on how I did! Step for running the code: Download the zip file from github unzip rename the folder to "SugarCubeLibraryFiles" open the file SugarCubeLibraryFiles.ino in Arduino connect your Arduino and uploadStep 32: Future Work This project has the potential to be expanded upon quite a bit. Unfortunately, I just don't have the time to invest in exploring all the possibilities, but here's some ideas I had for things to look into: More apps: The current implementation of this device allows you to boot into 16 different applications, but I've only written seven so far. There's a ton of great ideas over on the monome website for grid based controllers, it'd be great to see some of that translated into Arduino. Gyro Control: As I mentioned earlier, I threw an x/y gyroscope in the controller, but I've yet to write an app that actually uses it. I'd love to hear if someone has an idea for how this could work with MIDI. Wireless : When I started this project, my major design objectives were portability and plug and play ease of use. I wanted to try to break away from the model of the electronic controller that necessitates a computer to run, in an effort to bring electronic music out of the traditional studio environment. In keeping with that idea, I'd like to eventually get this controller to wirelessly send MIDI to my phone to make it totally portable. I have one of these bluetooth boards from Red Bear Labs , and I think there might be some way to send the data to my phone, translate it into CoreMIDI and run it though a MIDI synth, but I just haven't explored the idea enough yet. If anyone has any insight, I'd love to hear your thoughts.Step 33: Appendix: Cut PCB for Control Buttons Originally, I planned to have four extra "control" buttons on the side of the controller that I was going to use in various applications. I started wiring it up, but eventually scrapped it. I haven't written any code for these buttons, and they are in no way integrated into the apps I've written, but I figured I'd still include the images that I took during that process in this Instructable in case it's useful to anyone. Cut the 2x2 sparkfun pcb as shown in the pictures above. Solder white LEDs and diodes on the pcb as in steps 2 and 3.Step 34: Appendix: Control Buttons Wiring Part 1: PCB Alle 8 Artikel anzeigen Cut a piece of ribbon cable and solder 8 wires to the sparkfun PCB holes labelled "switch gnd" and "led gnd". Solder four more wires to the holes labelled "switch" and "blue." See the images for more info. On one half of the PCB (the one labelled "green" and "blue") you will have to rewire some of the traces that were broken when the PCB was cut. Both connections to the positive switch rail will need to be connected to each other and then connected to the "green" led trace as shown in fig 4. I did this by removing one strand of a piece of stranded wire and poking it through the vias on the PCB. Use a dab of solder to secure the electrical connection between the copper strand and the PCB (fig 7). You will also have to solder a wire between the two "blue" positive rails (also shown in fig 4). Once this is done, test for continuity and cover the exposed copper with electrical tape to prevent short circuits (fig 6). On the other half of the PCB, use a jumper wire to connect the "red" and "blue" sockets of one of the LEDs together (see fig 7). This will connect the anode of your white LEDs to the ribbon cable.Step 35: Appendix: Control Buttons Wiring Part 2: Socket Clamp a 16 pin socket onto the ribbon cable as shown in fig 1. Solder two rows of male header pins to the protoboard so that the control buttons fit onto the board as shown in fig 3. Trim any excess ribbon cable.Step 36: Appendix: Control Buttons Wiring Part 3: Header Pins Solder 3 more male header pins to snap to digital pins 11-13. Since the spacing between Arduino digital pins 0-7 and pin 8-13, I had to drill holes in my perfboard and scrape off some of the copper traces. See the images above for more information.Step 37: Appendix: Control Buttons Wiring Part 4: Connections to LEDs Solder four 68ohm resistors to the pins which connect to the LED cathodes. Connect the other end of these resistors to pins 4-7 of the 74HC595 with jumper wires (yellow). We'll be using pin 11 of the Arduino to supply positive voltage to the LEDs, but one Arduino pin cannot source enough current to drive the LEDs by itself. I used a 222 NPN transistor in an emitter-follower configuration to boost the power of pin 11's signal. Connect pin 11 to the base (middle pin) of the transistor. Connect the collector to the Arduino's 5V supply and the emitter to the header pins which connect to the LED anodes (fig 5).Step 38: Appendix: Control Buttons Wiring Part 5: Connections to Buttons Solder a jumper wire between pin 13 of the Arduino and the header pins which attach to the button anodes. On the reverse side of the perfboard I soldered four jumper wires from the button cathode pins to 10k resistors connected to ground (fig 4). I did this to save space on my PCB so that it would fit in an enclosure better. I also soldered four jumper wires from the non grounded side of the 10k resistors to 165 pins 3-6.

              5 Schritt:Schritt 1: Was Sie benötigen Schritt 2: Draht Ihre Schaltung Schritt 3: Installieren Sie die Software Schritt 4: Brennen Sie die Firmware Schritt 5: Laden Sie Arduino

              Wenn Sie Custom Firmware auf Ihren Arduino verbrennen wollen, müssen Sie einen Internetdienstanbieter benötigen, oder In-System Programmer. Aber warum, Geld für eine Marken-ISP, wenn ein Arduino kann das gleiche tun? Dieses Tutorial zeigt Ihnen, wie Sie benutzerdefinierte Firmware auf Ihrem Arduino installieren mit einem zweiten als ISP.

                4 Schritt:Schritt 1: Die schematische Schritt 2: Brett Layout, Stücklisten usw. Schritt 3: Herstellung Schritt 4: Programmieren

                Diese instructable zeigt, wie ein Schutzschild zu bauen, um Geräte, die MIDI-Signale (zB ein Masterkeyboard) zu einem Arduino senden zu verbinden. Das Grundschema ergibt sich aus: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1187962258/

                  16 Schritt:Schritt 1: Seriell-zu-MIDI-Konverter Schritt 2: MIDI-Protokoll Schritt 3: Erstellen von MIDI mit Arduino Schritt 4: Arduino analoge Eingänge und MIDI- Schritt 5: Lösen Sie eine MIDI-Note mit einem Knopf Schritt 6: Arduino und Tilt Switch Schritt 7: Arduino und Light Sensitive Widerstände Schritt 8: Arduino und Drucksensor Schritt 9: Arduino und Flex-Sensor Schritt 10: Arduino und Piezo Sensor Schritt 11: Pitchbend MIDI-Befehle mit Arduino Schritt 12: Arduino und Proximity (Ping) Sensor Schritt 13: Arduino und Touch-Screen- Schritt 14: Sensoren zum Selberbauen Schritt 15: Sonstige Sensoren für Arduino und Projektideen Schritt 16: Arduino MIDI IN

                  Nun, da Sie sich auf die Beschleunigung mit Ein- und Ausgängen Arduino sind, wird diese Instructable geben Ihnen alles, was Sie brauchen, um mit Hilfe von Sensoren auslösen MIDI-Noten von Arduino loszulegen. Dieser Beitrag ist die letzte Rate in einer Reihe von Workshops ich führte Frauen-Audio Mission . Die ersten beiden Klassen sind Intro zu Arduino und Arduino Arbeiten mit Ein- und Ausgänge. Liste der Einzelteile: (1x) Arduino Uno Amazon oder Sie können eine bis auf lokaler abholen Radioshack (1x) USB-Kabel Amazon (1x) Steckbrett Amazon (1x) Schaltdrähte Amazon (1x) 220Ohm-Widerstände Digikey CF14JT220RCT-ND (1x) geleitet Digikey C503B-RCN-CW0Z0AA1-ND (1x) 10kOhm Widerstand Digikey CF14JT10K0CT-ND (1x) Takt-Taste Digikey 450-1650-ND (1x) Neigungsschalter Adafruit 173 (1x) 10kOhm Potentiometer Digikey PDB181-K420K-103B-ND (1x) lichtempfindlichen Widerstand Digikey PDV-P8103-ND (1x) 33kOhm-Widerstand Digikey 33KQBK-ND (1x) 1MOhm Widerstand Digikey 1.0MQBK-ND (1x) Piezosensor Sparkfun SEN-10293

                    11 Schritt:Schritt 1: Ersatzteile Schritt 2: Entfernen Keyboard Keys Schritt 3: Suchen PCB Schritt 4: Solder in LEDs Schritt 5: Schnitt auf LEDs Reveal Schritt 6: Schneiden Sie das Front Panel Schritt 7: Heißklebe Foamboard Backing Schritt 8: Farbe Frontplatte Schritt 9: Schraube in Strap Schritt 10: Aktivieren Sie Computertastatur als MIDI Schritt 11: Spielen Sie einige Melodien!

                    Haben Sie überhaupt eine zusätzliche Synth für ein Konzert benötigt? Oder Sie genießen Hantieren mit Musikproduktions-Software und Sie einen MIDI-Controller benötigen? Nun suchen Sie nicht weiter als Ihre eigenen Computer-Tastatur! Nein, das ist nicht eine andere wie-Artikel über die Aktivierung MIDI-Steuerung über die Computertastatur. Wir werden über das gehen, aber wir werden über die Schaffung eines stilvollen, spielbare Instrument zu konzentrieren. Diese Tastatur "Hack" wurde von einer Situation, inspiriert, wenn meine Band spielte ein Konzert, aber wir brauchten eine sekundäre synth. Ich wusste, dass Computer-Tastaturen verwendet werden, um MIDI-Befehle an Musikproduktions-Software (wie zB Ableton, Pro Tools, FL Studio, etc) zu senden, sondern halten eine Computer-Tastatur auf der Bühne wäre ein Dorn im Auge sein. So natürlich, nahm ich einen Computer-Tastatur auseinander und versucht, es ein wenig leichter auf die Augen, und der Finger. Hier sind einige der Funktionen dieser midi "Schlüssel-tar": -Resistive-Touch-Tasten aktiviert -LED Hinterleuchtete Tasten -Gitarre Band freundlich! Wir werden in das, was wir für dieses Projekt in unserer nächsten Schritt brauchen! Vergessen Sie nicht, die beigefügte Video unten zu sehen, wenn Sie sich nicht sicher, was genau werden wir machen es!

                      16 Schritt:Schritt 1: Case Construction - Front Panel / Schneiden der Rechtssache Schritt 2: Hardware Schritt 3: Hardware - Launchpad-Konfiguration Schritt 4: Hardware - Bauen Sie den Schirmstecker Schritt 5: Hardware - Bauen Sie die Tastatur Platine und Stecker Schritt 6: Hardware - Bauen Sie die Taste / Slider / Knob Boards Schritt 7: Firmware Schritt 8: Firmware - Secondary Mikrocontroller Schritt 9: Firmware - Primär Mikrocontroller Schritt 10: Hardware - Erstellen Sie das Main Board Schritt 11: Case Construction Schritt 12: Software Schritt 13: Software - Virtuelle MIDI-Treiber Schritt 14: Software - Verarbeitungsprogramm Schritt 15: Software - DJing Programm Schritt 16: Finishing Up - Hinweise für die Zukunft

                      Viele Menschen sind immer in DJing in diesen Tagen, ob als Mittel der Selbstdarstellung oder ein Weg, um mehr Geld zu machen. Ich genieße DJing, weil es eine interessante, beteiligt, und interaktive Musik-Hörerlebnis, ob in Gesellschaft von Freunden oder während in privaten. Hardware DJ Controller sind traditionell der nächste Schritt nach dem Aufstehen die Füße nass mit Hilfe eines Software-basierten DJ Controller. Und sie sind auch traditionell teuer. Ich bin nur ein Hobby-DJ und nicht wirklich wollen, eine Menge Geld auf mein erstes DJ Controller zu verbringen. Sie sind da draußen für rund € 100 USD, aber ich bin auch in DIY! Ich habe eine Leidenschaft für die Musik und Elektronik und wollte einen Weg, beides zu verbinden, so dass ich beschloss, eine benutzerdefinierte DJ-Controller mit kostengünstiger und schneller Aufbau im Auge zu bauen. Der DJ-Controller ich in diesem Instructable konstruieren Sie mit nur ein Beispiel dafür, was man bauen konnte mit dem Code, Struktur und Prozess, die ich hier zeigen werden. Wenn Sie diese Idee übernehmen und ausbauen und polieren es war, könnten Sie am Ende mit einem wirklich schönen und / oder ganz anderen MIDI-Gerät. Meine Lieblings-Aspekt dieses Projekts ist es, wie offen ist und Änderungen vorbehalten. Das Endprodukt ist nur etwas, das analoge und digitale Eingänge annimmt und liefert eine einzigartige und einfache Methode, um sie in MIDI Ausgänge einzuschalten. Siehe den Abschnitt über das, was Ich mag zu "quasi-MIDI" später in diesem Einführung nennen. I modelliert mein Controller nach dem Numark Mixtrack II . Meine konkrete DJ Controller nutzt eine frühe Revision des TI MSP430 Launchpad, einem Mikrocontroller Entwicklungsplattform für seinen niedrigen Preis (10 €) und Bastler folgenden bekannt. Der Microcontroller-Code meine Daten mit Energia geschrieben und kann übertragen, um mit wenig Aufwand Arduino, müssen andere Microcontroller, um den Code, um sie speziell portiert, das nicht zu hart sein würde. Eine bessere Mikrocontroller mit mehr Pins der Lage wäre, unterstützt mehrere Eingänge, etwas im Auge zu behalten, wenn Sie vorhaben, dieses Projekt anders bauen. Ich werde später in der Instructable umfassen eine umfangreiche Liste der benötigten Materialien, Fähigkeiten und Software. Was ist ein DJ-Controller? Seltsam, dass Sie fragen. Ein DJ Controller ist ein physikalisches Gerät, die Sie auf einem Computer, der mit einer Software-basierten Musik-Mischprogramm ausgestattet ist, zu verbinden. Ein Musik-Mischprogramm ermöglicht es einem DJ, Songs zu spielen und Effekte hinzufügen, "scratch" die Spur, Steuerung Audio Equalizer, Lautstärke, Play Loops und Samples, und am wichtigsten, mischen mehrere Songs zusammen, um nahtlos von einem Song zum anderen. Das alles geschieht Live und ist ziemlich beeindruckend, wenn der DJ ist gut ( Sehen Sie dieses Video ,. WARNUNG: Enthält explizite Sprache Sie ist mit mehreren DJ-Controller in diesem Video zu vier Spuren gleichzeitig mischen), manchmal ähnlich wie ein Instrument zu spielen! Der DJ-Controller gibt dem DJ eine physikalische Schnittstelle, um alle diese Maßnahmen schnell durchzuführen. Mit einer Maus und Tastatur, um schnell DJ limitierend wird nach einiger Zeit, wenn Sie eine Software-basierte DJ Controller für einige Zeit verwendet haben, wissen Sie, was ich meine. Auf Hardware-Ebene, Entry-Level-DJ-Controller sind sehr einfache Geräte. Sie lesen eine Eingabe von einem Bündel von Sensoren (Tasten, Schieberegler, Knöpfe, usw.) und wandeln den Input in Steuernachrichten für die DJ-Software. Ein beliebtes Format für diese Meldungen ist MIDI, die ziemlich viel, was wir hier zu verwenden ist. Allerdings ist dieses Projekt nicht vergleichbar mit High-End-professionellen Niveau DJ-Controller, die viel komplexer sind und andere Funktionen (Pre-Cueing, integrierte Soundkarten, etc). Dieses Projekt hat auch nicht Jogwheels (Ich weiß nicht wissen, wo, um die Teile zu bekommen, weiß ich nicht persönlich benutze sie, und sie würde dieses Projekt kosten viel mehr). Geben Sie dieses Projekt Dieses Projekt stellt eine relativ einfache und kostengünstige benutzerdefinierte Schnittstelle, die grundlegenden Aufgaben des DJing zu erreichen. Es macht Spaß,, kundengerecht, erweiterbar und ein Einstiegs-DJ-Controller für Hobby-DJs zu bauen! Überlegen Sie, wie cool es wäre, eine eigene, handgemachte DJ-Controller auf den Tisch Parteien auf, und wissen, dass es tatsächlich funktioniert! Eigenschaften: Low-Cost (ca. € 75 gesamt) Gestaltbar (vor allem mit einem 3D-Drucker;)) und Extensible Reconfigurable USB Connected (benötigt keine externe MIDI-Kabel / Konverter) Coole Laser cut Fall! Relativ einfach und leicht zu Kreuz-Plattform auf Windows, Mac und Linux zu machen (nicht getestet, aber mehr dazu später) kann mit vielen der beliebtesten professionellen DJ-Software-Programme (mehr dazu später) Die Art, wie ich es zu bauen, es verwendet werden, sind mehr als 80 möglichen Eingaben! Wie viele und welche Kontrollen bedeutet das DJ Controller haben? Dieser Controller hat einige Kontrollen auf sie. Da ich nur mit einem 20-Pin-Mikrocontroller, beschloss ich, zwei gleiche Mikrocontroller und auch eine zusätzliche 8-Kanal-Analog-zu-Digital-Wandler, um das Beste aus meinem kleinen MSP430G2553s bekommen. Meine Permutation dieser Controller verfügt über: 11 Knöpfe 3 Sliders 5 Tasten A Drehgeber w / integrierten Taste A 12-stellige Tastatur, die 3 verschiedenen Modi hat und kann entweder Deck (12 X 3 x 2 = 72 verschiedene Funktionen!) Das Deck Switch sendet auch Befehle wirken, so dass sie wählen Sie den aktiven Deck / PFL Diese Kontrollen können so programmiert werden, zu tun, was Sie wollen! Meine Konfiguration wird später gezeigt, aber es ist im Grunde: Knöpfe - Bass / Mitten / Höhen / FX 1 / FX 2 für jedes Deck und dann ein "Master etwas" Sliders - Crossfader, Deck 1 Volume und Deck 2 Volume Buttons - "!" Play / Pause und Sync für jedes Deck, und dann ein Taste (was immer du willst) Drehgeber / Button - Wird verwendet, um Musik-Sammlung und wählen Songs durchsuchen Keypad - Modus 1 ist für Schleifen, ist für Effekte Modus 2 ist für Proben Mode 3 Was dies Instructable deckt In diesem Instructable, werde ich Sie ganz wenigen Elektronik Lektionen, vereinen wird, um das Endprodukt zu erstellen vorstellen! Eine grobe Liste einiger Dinge, die Sie lernen / Praxis durch den Bau dieses: Verfahren zur raschen Entwerfen eines Projekts mit einem Mikrocontroller und serieller Kommunikation Mit Energia, eine integrierte Entwicklungsumgebung (IDE) für den TI Launchpad, und das Hochladen Code an einen Mikrocontroller verwenden Verarbeitung , eine Programmiersprache und IDE, die perfekt ist für die schnelle Einrichtung der seriellen Kommunikation mit einem Projekt wie diesem Anschluss und Interpretation digital (Tasten) und analogen (Dreh- und Schieberegler namens Potentiometer ) Eingangs Lesen eines 12-stellige Tastatur (nützlich bei anderen Projekten auch!) Leseeingang von einem Drehgeber Raw binäre serielle Kommunikation zwischen einem Computer und ein Mikrocontroller und zwischen zwei Mikrocontrollern Erstellen einer benutzerdefinierten Low-Datenkommunikationsprotokoll (starke Nutzung von bitweise Mathematik, gute Praxis für die digitale Logik Studien!) SPI-Kommunikation zwischen zwei ICs (nämlich eine MSP430G2553 und der MCP3008 Analog-Digital-Wandler) Bau von Schaltungen auf perfboard Und möglicherweise noch mehr! Bitte beachten Sie, dieses Projekt war sehr schwierig zu montieren, so dass nur versuchen, wenn Sie gut mit einem Lötkolben oder können es sich leisten, ein paar Fehler zu machen! Übersicht Benötigte Materialien Diese Liste wird je nachdem, wie Sie gezielt dieses Projekts zu ändern, aber es gibt einen allgemeinen Überblick von dem, was Sie erwarten sollten, benötigen. Bestimmte Listen von Teilen für jeden Schritt wird mit den folgenden Schritten enthalten sein. Links dienen zur Verfügung gestellt. Für die Elektronik: Drehpotentiometer (x11, 10 kOhm, lineare Verjüngung, variabler Widerstände) Knöpfe für Potentiometer (x11, ich habe 7 rote , 2 blaue und weiße 2 ) Schiebepotentiometer (Ich habe eine x-large und zwei mittel ) Tops für Schiebepotentiometer ( x3) ​​Tastenschalter (x5) Schalter (1x Zweiwege , 1x Dreiwege [aus alten Wecker sourced]) Eine 12-stellige Tastatur (x1) Drehgeber (x1) TI Launchpad oder vergleichbare Mikrocontroller-Entwicklungsplattform MSP430G2553 oder vergleichbare Mikrocontroller (zwei von ihnen, können Sie sie von TI als kostenlose Proben zu erhalten! Achten Sie auf die Verpackung als "PDIP" bestellen oder aber es wird nicht in Ihr Launchpad! passen) MCP3008 (x1), ein 10-bit, 8-Kanal-Analog-Digital-Wandler Viele 22ga Schaltdraht (solid core, nicht stranden!) Ein paar Protoboards zu zerschneiden und die Verwendung bestimmter female / male -Header (das Klebeband von Elektronik, abholen eine Menge auf ebay! ) Ein paar Widerstände (brauchen Sie nicht 500) Sie können LEDs im fertigen Projekt gesteckt, um es aussehen super cool, versuchen diese ( Video ) Für den Fall: Sie haben Zugang zu einem Laserschneider muss mein Design zu verwenden. Für den oberen und unteren Platten haben wir 1/8 "Sperrholz und für die Seitenteile und Einlegearbeiten verwendeten wir 1/8" Plexiglas. Dies sollte in der Lage, an der Laser-Cut-Shop bezogen werden können. Sie müssen auch Sekundenkleber (ich empfehle sowohl Gel Kontrolle und Flüssigkeit Loctite). Sie können Plexiglas Kleber versuchen so es kommt klar, aber ich fand es war nicht stark genug. Und das ist es! Überblick über Tools / Benötigte Ausrüstung: Einige Werkzeuge sind nicht völlig notwendig, aber sie machen die Konstruktion gehen viel schneller. Ich benutzte: Zugang zu Laserschneider Verschiedene Handwerkzeuge (Spitzzange, Drahtschneider bündig, Rasierklingen, Schraubendreher, etc.) Drahtabisolierer Drehwerkzeug (IE: Dremel kann eine geeignete für € 20 oder weniger zu haben Mein Lieblingswerkzeug.! ) Lötkolben ( passende für 20 € ) Rosin Core-Electronics Solder Various löten supplies (Ablötgeflecht, Flussmittel, etc) Helping Hands (Ich habe meine Mitbewohner) Schleifpapier (600 / feine Körnung, 100 / grobe Körnung) Schutzbrille :) Überblick über Fähigkeiten, Ich werde versuchen, dieses Projekt so einfach wie möglich zu folgen, um zu machen, aber einige Dinge sollten Sie ein grundlegendes Verständnis umfassen müssen: Löten Fähigkeiten ( Tutorial hier ) Kompilieren und Hochladen der Software auf Ihre speziellen Mikrocontroller-Plattform ( Tutorials für Energia kann hier gefunden werden , sollten Sie ein paar einfacher Projekte zuerst, wenn Sie nicht vertraut sind) Mit Hilfe eines Software-DJ-Programm, wie das, was ich in der Verwendung: Virtuelle DJ Programmierkenntnisse sind von Vorteil, da mein Code kann nicht direkt mit Ihrer Konfiguration arbeiten, das Verständnis der bitweise Mathematik Was ist "Quasi-MIDI"? Quasi-MIDI, wie Ich mag es nennen, ist etwas, was ich für dieses Projekt. Als ich zum ersten Mal wieder mit, wie die Hardware in die DJing-Software in der schnellste und einfachste Weg, zu verknüpfen, dachte ich sofort von MIDI. Fast jede größere DJing-Programm unterstützt, kann es für andere Projekte verwendet werden, und es ist ein ziemlich einfaches Protokoll in seinem eigenen Recht. Allerdings ist die archaische Stecker ist, dass es nicht mehr auf modernen Computern gefunden, und Sie müssen oft einen MIDI zum USB-Konverter, der zusätzliche Kosten und mögliche Unvereinbarkeit mit dem Projekt hinzufügt. MIDI-Geräte, die tatsächlich auf dem Industriestandard entsprechen erfordern auch eine zusätzliche Schaltung (Optokoppler usw. komplizierter!) Und gerade im Allgemeinen schwieriger zu schnell mit Prototypenfertigung. So kam ich auf die Idee, ein paar zwischengeschalteten Programme. Eine Übersicht, wie es funktioniert, ist dies: 1. Haupt Mikrocontroller empfängt Hardware-Eingang 2. Haupt Mikrocontroller sendet eine spezielle Nachricht an den Computer über ein USB serielle Verbindung 3. Host-Programm auf dem Computer geschrieben mit Verarbeitung lauscht auf diesem Port und die Nachricht empfängt 4. Das Verarbeitungsprogramm wandelt diese Nachricht in eine MIDI-Nachricht und sendet diese Meldung über eine virtuelle MIDI-Anschluss (dazu später mehr). Die virtuelle MIDI-Verbindung je nach Plattform, aber unter Windows Ich habe loopMIDI von Tobias Erichsen. Unter Mac und Linux diese Funktion eingebauter ... 5. Die DJing Programm erhält den MIDI-Nachricht über die virtuelle MIDI-Verbindung und eine bestimmte Funktion zu diesem MIDI-Nachricht abgebildet. Ich werde mein Bestes tun, um auf die spezifischen Schritte in diesem Prozess später im Instructable beteiligt zu erarbeiten. Dies ist weit von robusten, aber es funktioniert, ohne dass zusätzliche Hardware, ein definitives Plus unter Berücksichtigung der ursprünglichen Ziele von meinem Projekt. Sie können diesen Datenfluss zu nehmen und ändern Sie es, jede MIDI-basierte Projekt, das Sie mit oben kommen zu passen! Möchten Sie Ihre eigenen kundenspezifischen digitalen MIDI-Drumset zu machen? Oder etwas noch seltsamer, wie , was Purity Ring verwendet ? Sie können ganz einfach tun, dass mit dieser Methode! Credits: Electronics and Code - Me! Fall-Entwurf, die meisten von der Konstruktion, und halten alles, während ich es gelötet - Mein Mitbewohner Eric Rocket Ship Logo - Mein Freund Philip DJ Demo - Mein Freund Kyle Musik im Video: . Merce ft Farisha - Regen-Stadt Attak (Feat Danny Brown.) - Rustie Roller - Herr Carmack Machen Sie es Bun Dem - Skrillex Tell Me (feat. Was so nicht) - RL Grime Last Year - Borgore Sleepless - Flume Ausrufe und Zeug Ich möchte ein paar Ausrufe auf alle Richter, die Auswertung werden diese Instructable mehrere Wettbewerbe Ich möchte geben :) enthalten. Formlabs Contest: Machen Sie den Fall für ein Elektronik-Projekt ist immer der schwierigste Teil für mich. Wie wird alles zusammen? Wie werde ich die Kabel? Wie wird sich die Schnittstelle Look und fit mit der Elektronik? Das endgültige Projekt wollte nur ein breadboarded Schaltung auf einem Stück Pappe, aber meine Mitbewohner erzählte mir, er einen Laser geschnitten Fall entwerfen könnte also ging ich alle aus. Der schwierigste Teil war noch legt es in dem Fall, während es gleichzeitig gut aussehen. Ein Laser-Cutter kann nur erhalten Sie so weit ... 2 Abmessungen. Ein 3D-Drucker eröffnet eine ganz neue Ebene der Anpassung. Ich mag es Elektronik mit Musik zu tun, und sie sollten so gut, wie sie klingen zu suchen. Mein Partner an diesem Projekt ist auch ein Architekt und könnte sich stark von einem 3D-Drucker zu profitieren. Seine Modelle würde das Leben von hoher Qualität aus einer Harz 3D-Drucker erhalten 3D-Drucke gebracht werden. Ich bin auch in der Wiederherstellung Autos (insbesondere eine 1980 MGB im Moment) und ich denke, dass Ihre 3D-Drucker würde mir erlauben, hochwertige Reproduktion von Kunststoffteilen für Oldtimer, die sonst sehr teuer oder nicht verfügbar sind neu zu machen. Die Online-Community MGB Ich bin Auseinander würde auf jeden Fall von den Reproduktions Teile, die ich produzieren könnte profitieren. Ich könnte auch eine Menge coole Upgrades / Klammern und so für Autos. Außerdem habe ich immer wollte CAD zu lernen, und ein 3D-Drucker würde mir etwas Motivation zu geben :) Mikrocontroller Contest Gesponsert von Radioshack: Dieses Projekt beinhaltet nicht nur einen Mikrocontroller, aber es hat zwei! Das Zweifache der erforderlichen Anzahl von Mikro! Ich möchte auch darauf hinweisen, dass ich eine unterrepräsentiert Mikrocontroller-Plattform (TI MSP430), vor allem wegen der niedrigen Anschaffungskosten und Vielseitigkeit. Dieses Projekt zeigt wirklich, wie Sie die begrenzte Stifte dieser Plattform, eine ganze Menge zu tun dehnen. Es ist auch erwähnenswert, dass der Datenfluss in diesem Projekt verwendet kann jeder serielle fähigen Mikrocontroller, um die Gehirne von einem MIDI-Instrument, werden nicht nur MCUs mit in HID / USB-Hardware gebaut. Tech Contest Gesponsert von littleBits: Dieses Projekt und littleBits haben ein gemeinsames Ziel: Rapid Prototyping. Einfallsreichtum und die richtigen Werkzeuge gehen einen langen Weg bei der Arbeit hin zu einer funktionsfähigen Prototypen, wodurch die "quasi-MIDI" Methode, die ich kam mit. Ich habe auch versucht, um Leser zu Rapid Prototyping mit einer meiner Lieblings-Programmierwerkzeuge, Herstellung einzuführen. Auch hier ist es erwähnenswert, dass der Datenfluss in diesem Projekt verwendet kann jeder serielle fähigen Mikrocontroller, um die Gehirne von einem MIDI-Instrument, werden nicht nur MCUs mit in HID / USB-Hardware gebaut. Vielen Dank für Ihre Überlegungen!

                        3 Schritt:Schritt 1: Anforderungen Schritt 2: The Script Schritt 3: Wie Sie das Skript verwenden

                        Vor einiger Zeit gab ich eine Ubuntu MIDI zu WAVE Converter. Endlich habe ich hier saß und schrieb eine Batch-Skript (Windows), die das gleiche tun. Es war nicht einfach, wie BATCH ist seltsam. Aber ich habe es endlich getan. So hier gehen wir.

                          6 Schritt:Schritt 1: Was wir brauchen Schritt 2: Einrichten des Intel Edison Board und der Installation der erforderlichen zusätzlichen Pakete Schritt 3: Einrichten des Sound-Adapter Schritt 4: Download, kompilieren und installieren CSound Schritt 5: Konfigurieren Csound Schritt 6: Genießen Sie Ihren Synth!

                          Ein MIDI-Controller ist wie Tastatur eines Computers, aber anstatt das Senden Zeichen an den Computer an, es Notizen (und eine Menge weitere Informationen über die Note gespielt wird) zu senden. Sie können mehr über MIDI Controller erfahren Sie hier . In der Regel ist ein MIDI-Controller sehr preiswert, wenn zu einer kompletten Synthesizer-Vergleich, aber die MIDI-Controller erfordert einen PC (oder Mac) und eine Menge zusätzlicher Software zu arbeiten. Nur um einen Vergleich, den MIDI Synthesizer, die bauen mit diesem Tutorial erzeugt eine Klangfarbe sehr ähnlich zu einer der durch den erzeugten Klangfarben ist zu geben Roland Jupiter 8 Analog Synth , dass ist für einen Preis um US verkauft € 12 ( hier ). Wenn Sie nicht haben, US € 12k sich jetzt investieren, um die Axel Foley's spielen Thema , haben aber einen MIDI-Controller, ein USB-Audio-Karte und einen Intel Edison, sollten Sie diese Anleitung versuchen (und ja, auch spielen können, einige Krafwerk, Van Halen und viele andere coole Sachen mit ihm). Wir verwenden Csound auf diesem Lernprogramm und auf den Punkt gebracht, können Sie, was Sie wollen mit ihm zu generieren. Von Hammond Orgeln zu Moog, Ihre Kreativität und Csound Fähigkeiten sind alles was Sie brauchen, um diese wunderbare Audio-Programmiersprache zu erkunden. Am Ende dieses Instructable, gibt es ein Video mit der Demo-Synth.

                            7 Schritt:Schritt 1: Was Sie brauchen Schritt 2: Download Software Schritt 3: Midi Brücke Schritt 4: Hochladen Arduino Programm Schritt 5: Hardware Schritt 6: Holen Spielen! Schritt 7: Weitere

                            Willst du in der Lage, Ihren DIY Synth mit MIDI steuern zu können? Spielen Sie es mit einer Tastatur oder einer Sequenz in Ihrem Lieblings-Audio-Editing-Software?

                              9 Schritt:Schritt 1: Ersatzteile, Quellen und Werkzeuge Schritt 2: Analysieren Sie den Midi-Controller Schritt 3: Reverse Engineering der Computer Schritt 4: Montage des Display und einige Layout Auswahl Schritt 5: Bereitstellung von Netz Schritt 6: Erstellen der Steuerelemente hinzugefügt Schritt 7: Coding es Schritt 8: Um es zusammen Schritt 9: Schließen Sie es auf und Abschluss.

                              Für eine lange Zeit habe ich gesucht, um eine benutzerdefinierte MIDI-Controller zu bauen, und während das ist nicht gerade eine neue Controller habe ich den Atem neues Leben in einem alten Hardware. Verwertung einiger Teile, die ich angesammelt hatte und die Ausgaben minimal Geld für neue, die ich geschafft, eine ... eine ... DJ Computerlaptop-Ding zu bauen? ... Das ist, warum es heißt BeatSauce. Es ist wie die Beats der Musik nur mit Technologie zerschlagen.

                                11 Schritt:Schritt 1: Was brauchen wir? Schritt 2: Warum OSC? Warum nicht eine direkte Verbindung? Schritt 3: Anschließen des Arduino Schritt 4: Die Elektronik hinter dem, was hier geschieht. Schritt 5: Installieren Sie die CNMAT OSC-Bibliothek Schritt 6: Finde heraus, die lokale IP-Adresse Ihres Computers mit OSX Schritt 7: Arduino Code Schritt 8: Schließen Sie Ihr Arduino Uno und Ethernet-Schild mit dem Heimnetz Schritt 9: Lassen Max eingehende OSC Nachrichten abzuhören und senden Sie sie ab Schritt 10: OSCulator Schritt 11: MIDI Learn einen Knopf in Ableton Live

                                In diesem instructable werden wir ein Potentiometer auf einem Arduino Uno verwenden, um eine MIDI CC in Ableton Live steuern. Ein MIDI CC steht für Continuous Controller, dh eine Zahl im Bereich von 0 bis 127 einschließlich, etwas mit zu modulieren. Im youtube ich für dieses Intro Sie sehen und hören, dass wir die Filterfrequenz mit dem Potentiometer modulieren kann gemacht. Ein Potentiometer ist ein Elektronik-Komponente, die Sie in einem Widerstandswert wählen können. Diese instructable beschäftigt sich mit dem Apple OSX-Betriebssystem, aber Sie können hoffentlich zwischen den Zeilen lesen und Umsetzung einer modifizierten Version für Ihr Betriebssystem der Wahl.

                                  6 Schritt:Schritt 1: Was wir brauchen Schritt 2: Einrichten des Intel Edison Pension, die Installation zusätzlicher Pakete und Konfiguration von Audio Schritt 3: Download, kompilieren und installieren Fluidsynth Schritt 4: Laden Sie eine Soundfont, eine MIDI-Song und testen Sie Ihre Installation FluidSynth Schritt 5: Ausführen Fluidsynth und verbindet sie mit der MIDI-Controller Schritt 6: Genießen Sie Ihren Soundfont Synth!

                                  Auf dieser Instructable werde ich zeigen, wie Sie Ihre eigenen MIDI bauen Soundfont Synthesizer mit Intel Edison und Fluidsynth . Indem Sie die hier beschriebenen Schritte, werden Sie ein Synthesizer, der über das Internet fast jeder Soundfont erhältlich spielen können, so dass im Grunde ist dies wahrscheinlich die neuesten Synth du wirst Notwendigkeit für den Rest Ihres Lebens :) Dies ist der zweite Schritt eines größeren Projektes begann mit dieser ersten Instructable. Am Ende des Instructable besteht ein Video mit dem Font Synth Demo.

                                    9 Schritt:Schritt 1: Sehen Sie das Video! Schritt 2: Was Sie brauchen Schritt 3: Was werde ich mit Schritt 4: Öffnen Sie den Controller Schritt 5: Erstellen Sie ein Schild für den Arduino Schritt 6: Rückseite Modifikation (Guitar Hero-Controller) Schritt 7: Installieren Sie die Arduino-Code Schritt 8: einsetzen und schließen Sie es auf! Schritt 9: Geben Sie ihm einen Test!

                                    Hey! Heute werde ich Ihnen zeigen, wie man eine Rock-Band oder Guitar Hero Drum-Controller in einen echten MIDI Drum-Set, die mit digitaler Audio-Workstations wie Ableton Live, FL Studio, Pro Tools, usw. Schnittstelle kann konvertieren Oder Sie können einfach verwenden, um DTXMania (DrumMania) zu spielen!

                                      4 Schritt:Schritt 1: Stellen Sie den Stecker Schritt 2: PWM Filterschaltung Schritt 3: Arduino Software Schritt 4: Gehen!

                                      Meine schöne Frau kaufte mir die littleBits Synth Kit für Weihnachten, und ich verbrachte mehrere Tage ärgerlich jeder mit kreischende Geräusche. Nach einer Weile wollte ich mehr Kontrolle über sie, um sie mit anderen Dingen zu synchronisieren, oder, um es von einer richtigen Tastatur spielen. Diese instructable zeigen Ihnen, wie man all diese Dinge zu tun, überprüfen Sie das Video für ein Beispiel. Einkaufszettel Sie benötigen die folgenden Sachen - LittleBits Synth Kit ENTWEDER 2x JST SH Jumper 3 Elektroinstallationsanlage (verfügbar unter Sparkfun ) oder 2x JST-SH 3-Pin-1 mm-Anschlüsse (bei ​​Sparkfun in den USA oder Protopic in Großbritannien) Materialien eigene, kleine, einfache PCB ätzen ( sofern Sie sie nicht von einem Leiterplatten-Hersteller bestellen) Ich werde nicht in diesem instructable in die Details gehen, aber es gibt viele andere Führer auf, wie um sie zu machen - http: //www.instructables.com/id/How-to-Etch-a-PCB / ... http: //www.instructables.com/id/Cheap-and-Easy-Ton ... Ein Arduino Leonardo, müssen Leonardo sein, wenn Sie USB-MIDI tun wollen, werden andere Arduinos anders zu arbeiten. Ein Brotschneidebrett Einige feste Kerndraht, die richtige Größe, um in dem Steckbrett (ca. 1 mm) passt so zu jeder Elektronik-Shop, zur Verfügung. MIDI Sequencing Software, ich Ableton Live , sondern Garageband , FL Studio oder Reaper (kostenlosen) funktioniert

                                      Seiten: