Inhaltsverzeichnis:

Mikrocontroller Fabric Tone Generator in C-Code - Gunook
Mikrocontroller Fabric Tone Generator in C-Code - Gunook

Video: Mikrocontroller Fabric Tone Generator in C-Code - Gunook

Video: Mikrocontroller Fabric Tone Generator in C-Code - Gunook
Video: Can chatGPT Program an ESP32? 2024, Juli
Anonim
Mikrocontroller Fabric Tone Generator in C-Code
Mikrocontroller Fabric Tone Generator in C-Code

Ende Oktober letzten Jahres schickte mir der Instructables-Benutzer Carmitsu eine Nachricht, nachdem er meinen Lunchbox-Synth gesehen hatte. Aus seiner Botschaft: Ich unterrichte Musik in der Grundschule. Wir spielen viel Blockflötenmusik. d.h. die Kinder spielen kleine Flöten…… Ich habe mehrere Kinder mit besonderen Bedürfnissen, die diese schwarzen Postertafeln mit Kreisen verwenden können, auf denen der Name der Notiz steht. Diese Schüler drücken auf die Kreise mit den Notennamen, während der Rest der Schüler ein Lied spielt….. Die meisten Kinder mit besonderen Bedürfnissen können dies ziemlich gut und im Einklang mit der Musik. Ich möchte einen sehr einfachen Klanggenerator bauen, damit diese Kinder die gleiche Tonhöhe spielen können, die von den Schülern auf ihren Blockflöten gespielt wird. Ich wäre nur ein paar Stellplätze. Ich dachte, ich könnte unten an ihren runden Kreisen einen kleinen Knopf anbringen, damit der Ton aus einem kleinen Lautsprecher kommt, der laut genug ist, damit sie ihn hören können, wenn sie darauf drücken. Wie könnte ich widerstehen, eine Mutter zu haben, die Lehrerin ist und die Schule mochte? Ehrlich gesagt konnte ich es nicht. Dies ist so ziemlich eine Chronik des Projekts und eine Anleitung, wie Sie Ihr eigenes bauen können.

Schritt 1: Der Anfang oder warum ich nicht bei Analog bleiben konnte

Der Anfang oder warum ich nicht beim Analogen bleiben konnte
Der Anfang oder warum ich nicht beim Analogen bleiben konnte

Das Gute beginnt auf der nächsten Seite. Wenn Sie wissen möchten, wie ich die von mir erstellten Teile verwendet habe, lesen Sie weiter. Der veritable Timer: Nachdem ich über das Projekt nachgedacht hatte, dachte ich sofort an den Piezo-Tongenerator aus meinem Buch über Operationsverstärker Forest Mims III. Scheint ein guter Weg zu sein, es ist nur ein Piezo, ein 741 IC und ein paar passive Komponenten. Keine große Sache, oder? Nun, es hat 2 Probleme, 1) wenn Sie den Schalter drücken, ist es möglich, die Tonhöhe zu ändern 2) es ist fast unmöglich zu stimmen. Der erste könnte wahrscheinlich mit einer Entprellungstechnologie überwunden werden, obwohl ich nicht wusste, wie das geht, ohne einen weiteren Zähler hinzuzufügen. Es könnte auch ein Problem mit der Verwendung eines Piezos sein. Das zweite Problem wurde gerade unhandlich, als Sie anfingen, eine bestimmte Tonhöhe zu treffen. Was ist mit dem 555? Das Datenblatt zeigt eine Zeitverzögerungsfunktion basierend auf Widerständen und Kondensatoren. Das ist großartig, bis Sie anfangen, tatsächliche Werte von Teilen aus der realen Welt einzugeben. Dann werden Sie feststellen, dass es ein wenig schwierig wird, eine Tonhöhe von 440 Hz zu treffen. Sie können Trimmtöpfe verwenden, um es abzustimmen, aber im Laufe der Zeit neigen sie dazu, sich zu bewegen. Ständiges Stimmen des Instruments, kompiliert über die schnelle Zunahme von Kosten und Anzahl der Teile, und meine Frau, die die Tonhöhe änderte, als sie den Knopf drückte, tötete den 555 für dieses Projekt Operationsverstärker seit meiner Geburt. Wie schwer könnte es sein, ein wirklich einfaches Werk mit wenigen Teilen und bestimmten Anmerkungen zu erstellen? Schwerer als ich dachte. Die meisten Designs da draußen sind für dieses Projekt sehr kompliziert. Synth-Designer sind auf der Suche nach der perfekten Wellenform/dem perfekten Ton. Dies steht direkt im Widerspruch zu einem Projekt, das für das Budget von Schulen oder Lehrern billig genug sein soll. Eine Tastatur zu bauen ist einfach genug, es ist nur ein Haufen Widerstände und Strom oder ein Haufen Dioden und Strom. Es ist der Rest des Schaltungsdesigns und die Kosten für kundenspezifische Leiterplatten, die für jemanden auf einem beginnenden Elektronikniveau aus dem Ruder laufen. Projekt-Neudefinition: Das Projekt wurde also neu definiert, bevor ich überhaupt richtig losgelegt habe. Ich brauchte etwas, das einen Lautsprecher-Pin rechtzeitig mit einem Knopfdruck umschalten konnte. Ich wollte keine Leiterplatte entwerfen und kaufen müssen. Dieser musste möglichst wenige Bauteile verwenden und als Einsteigerbausatz zusammengebaut werden. Es starrte mir die ganze Zeit ins Gesicht. Äh!! Mikrocontroller! Mikrocontroller: Nachdem ich also sowohl ein Modern Devices Bare Bones Arduino-Kit als auch ein Evil Mad Scientist Simple Target Board gekauft und sie monatelang ungenutzt auf meinem Schreibtisch sitzen ließ, hatte ich das perfekte Einführungsprojekt. Ich fing an, mir die Zeit anzusehen, die es braucht, um beides zusammenzustellen, die Lernkurve für den Code, die Kosten, die zusätzlichen Teile, die benötigt werden, damit es das macht, was ich will, und entschied mich für das Zielboard. Die Kosten waren ziemlich gleichmäßig, 15 US-Dollar plus ein FTDI-Kabel für den Arduino für 20 US-Dollar, 12 US-Dollar plus ein USBtinyISP-Programmierer für 22 US-Dollar. Ich kannte C++ bereits von dem kleinen College, das ich aushalten konnte, und dachte, dass C für Mikrocontroller nicht so schlecht wäre, während ich außer dem Blinken eines Lichts, um sicherzustellen, dass ich mein Kit richtig zusammenbaue, keine Arduino-Erfahrung hatte. Beides konnte montiert werden. Es war so ziemlich ein Wurf, also entschied ich mich für die weniger Teile der beiden, das Zielbrett.

Schritt 2: Was Sie brauchen Rev 1

Was Sie brauchen Rev 1
Was Sie brauchen Rev 1

TeilekostenUSBtinyISP AVR Programmer Kit (USB SpokePOV Dongle)v2.0 22,00 $https://www.adafruit.com/index.php?main_page=product_info&cPath=16&products_id=46Evil Mad Scientist Labs ATmegaXX8 Mini Dev Kits 12$Headers, 6-Pin DIP, 5-pk 2,75 $https://evilmadscience.com/tinykitlist/74-atmegaxx8Speaker (8-Ohm-Mini) 2,79 $https://www.radioshack.com/product/index.jsp?productId=2062406SPST Normally Open Momentary Switches (wir verwendeten 5) 3,49 $ (4er Pack) https://www.radioshack.com/product/index.jsp?productId=2062539"AAA" Batteriehalter 1,79$https://www.radioshack.com/product/index.jsp?productId=2102735SPST Submini-Schiebeschalter (optional für Netzschalter) 2,69 USD (2er-Pack) https://www.radioshack.com/product/index.jsp?productId=2062490LED und Widerstand (optional, wenn Sie ein Netzlicht wünschen) $ sollte kostenlos sein wenn sie herumliegenDraht $sollte auch herumliegenSilberlot (wenn das in die Nähe von Kindern geht, sollten Sie wahrscheinlich kein Blei verwenden, Eltern werden bei so etwas ziemlich seltsam;)) Alkohol einreiben (um es zu re move flux) Wenn Sie an einigen Stellen Geld sparen möchten, müssen Sie keine Teile von RadioShack beziehen. Ich tat es, weil sie nah und vorhersehbar sind.

Schritt 3: Montage Rev 1

Montage Rev. 1
Montage Rev. 1
Montage Rev. 1
Montage Rev. 1

Setzen Sie Ihre Teile wie abgebildet zusammen. Achten Sie darauf, Alkohol und eine Flussmittelbürste zu verwenden, wenn Sie fertig sind, um das Flussmittel vom Löten zu entfernen. Das Schema ist unten für diejenigen, die es bevorzugen. D1 und R1 können alles sein, was Sie wollen, es ist nur ein Power-Licht. C1 soll nur helfen, die Leistung etwas konstanter zu machen. Ich habe 10uF verwendet. Dieses Schema ist das gleiche für die späteren Versionen, tauschen Sie einfach die Drucktasten gegen Fabric-Schalter aus. in der letzten Überarbeitung habe ich Schalter zu PC4 und PC5 oder Pins 27 und 28 hinzugefügt.

Schritt 4: Was Sie brauchen Rev 2

Was Sie brauchen Rev 2
Was Sie brauchen Rev 2

Im Grunde tauscht man also die Radio Shack-Knöpfe gegen handgemachte Stoffknöpfe aus. Sie benötigen: Mehrere Stofffarben oder eine Farbe, wenn jede Note die gleiche Farbe haben soll. Die Quiltabteilung Ihres nächstgelegenen Stoffladens ist der beste Ort, um dies günstig zu bekommen. Quiltviertel kosten 1,50 US-Dollar und Sie können eine Menge Schalter aus einem herausholen. Leitfähiges Gewebe, ich schlage vor, das Flectron-Gewebe von LessEMF kostet 20 US-Dollar für ein 12 "x 54" Stück Ösen zum Befestigen des Drahtes am Stoff. Du bekommst sie in den meisten Stoffgeschäften günstig. JoAnn hat das Werkzeug und 25 für 2 $ Sie benötigen dafür einen Hammer. Draht, ich habe 22 AWG verwendet, ich schlage kleiner vor, wenn Sie es haben. Verschmelzen, um das farbige und leitfähige Gewebe zusammenzuhalten. Fragen Sie im Laden nach und Sie können es wahrscheinlich Meterware kaufen. Dies würde wahrscheinlich gut funktionieren, obwohl ich vorschlage, dass Sie jemanden fragen. Batting, ich habe zuerst ein wirklich lockeres Zeug verwendet und dann zu etwas engerem Material gewechselt. Ich schlage vor, Sie probieren einfach ein paar verschiedene aus, bis Sie gefunden haben, was am besten funktioniert. Schrumpfschlauch, dies machte das Ganze viel handlicher. Schrumpfdrähte zusammen, wenn sie aneinander vorbeilaufen, und sie bleiben viel besser.

Schritt 5: Montage Rev 2

Montage Rev. 2
Montage Rev. 2
Montage Rev. 2
Montage Rev. 2
Montage Rev. 2
Montage Rev. 2

Den bunten Stoff übereinander legen und ein Quadrat ausschneiden, es muss nicht perfekt sein. Bügeln Sie den Stoff, um Falten zu bekommen, legen Sie sie wieder übereinander und stellen Sie sicher, dass die Kanten alle übereinstimmen. Schneiden Sie alle Kanten ab, die dies nicht tun. Schneiden Sie die Ober- und Unterseite rund und lassen Sie die linke und rechte Seite gerade. Sie werden den Schalter nach dem Nähen umdrehen, also machen Sie die abgerundeten Seiten nicht zu rund und lassen Sie an den flachen Seiten genug Höhe, um den Schalter leicht durchzuschieben, wenn Sie fertig sind. Runden Sie die flache Seite des ersten und letzten Schalters ab. Gehen Sie zu Ihrer Nähmaschine und legen Sie zwei der Runden so zusammen, dass die gute Seite zueinander zeigt und nähen Sie eine Naht an den flachen Teilen genäht, Quadrate aus dem leitfähigen Gewebe ausschneiden und eine Seite verschweißen. Draht auf Länge schneiden und ein Ende abisolieren. Löten Sie den Draht um eine der Ösen. (Das Lot wird wahrscheinlich nicht an der Öse kleben) Schneiden Sie einen kleinen Schlitz in den Stoff an einer Ecke und hämmern Sie die Öse, um den Stoff und den Draht zu befestigen. Entfernen Sie den Träger von der Fixierung und schweißen Sie den leitfähigen Stoff auf die Rückseite des farbigen Stoffes. Wiederholen Sie dies für alle Schalter. Um es einfacher zu machen, können Sie die Drähte zusammenschrumpfen, wenn ein Draht den Draht für den nächsten Schalter passiert. Holen oder machen Sie ein Stück Stoff in der Länge des Schaltersatzes und schneiden Sie einen Streifen leitfähigen Stoffs in der Länge davon. Im Gegensatz zu den farbigen Schaltern ist dies ein langes Stück. Dies ist das, was die Tasten berühren, um die Verbindung herzustellen. Schneiden Sie einen kleinen Schlitz und befestigen Sie einen Draht mit einer Öse daran, wie die farbigen Schalteroberteile. Verschmelzen Sie es mit der Rückseite des unteren Stoffes. Nähen Sie die Ober- und Unterseite mit dem leitfähigen Stoff nach außen, verwenden Sie einen Meterstab, um das Set nach dem Nähen umzudrehen. Schneiden Sie ein paar kleine Löcher in die Watte, ich habe ein Essstäbchen verwendet, um einen Kreis, dann entfernen Sie einfach das Essstäbchen und machen Sie den Schnitt. Schneiden Sie sie in Form und stecken Sie sie in die Schalter. Dies hält das leitfähige Gewebe auseinander. Es kann einfacher sein, die Watte einzulegen, während Sie die Schalter umdrehen, anstatt danach. Das Zeug, das ich benutzt habe, ist beim Einsetzen ziemlich zerrissen und ich musste verschiedene Schläge bekommen. Schließlich die Drähte an das Zielbrett haken und Sie sind fertig. Der lange untere Streifen wird geschliffen.

Schritt 6: Was Sie brauchen Rev 3

Was Sie brauchen Rev 3
Was Sie brauchen Rev 3

In Rev 3 habe ich die Schalter unabhängig von der Verkabelung gemacht. Dies hat eine Menge Zeit gespart. Auch das Aussehen des fertigen Ergebnisses gefällt mir viel besser. Also, hier sind die neuen Teile, die du brauchst: Snaps, habe sie gerade von JoAnn's bekommen. Sie kamen mit einem Installationstool, das für 7 US-Dollar nicht schlecht war. Ich würde stattdessen eines der Zangenwerkzeuge vorschlagen, da ich mein Werkzeug auseinandernehmen musste, um die Druckknöpfe in der Mitte zu installieren. Aufnähen wären eine gute Alternative, obwohl sie länger brauchen, um sie zu kleben. Leitfäden, Spark Fun hat Sachen, die in Ihre Nähmaschine passen. Ich musste in meiner Maschine sehr langsam vorgehen, sonst würde der Faden reißen. Ihr Kilometerstand kann variieren

Schritt 7: Montage Rev 3

Montage Rev. 3
Montage Rev. 3
Montage Rev. 3
Montage Rev. 3
Montage Rev. 3
Montage Rev. 3
Montage Rev. 3
Montage Rev. 3

Diese Überarbeitung war in Bezug auf die Zeit bis zum Bau viel besser als die letzte. Außerdem haben abnehmbare Schalter mehr als einmal meine geistige Gesundheit gerettet. Beginnen Sie mit der Herstellung der Basis. Es ist nur ein Quiltviertel, das in zwei Hälften gefaltet ist. Legen Sie eine Schicht Vlies darauf und nähen Sie, wobei Sie ein Loch lassen, um es umzukehren. Schieben Sie das Ding durch das Loch und Sie haben im Grunde ein kissenartiges Ding. Ich habe es gesteppt, damit es einfacher zu arbeiten war. Verwenden Sie normales Gewinde und gehen Sie Nüsse. Ich habe hier Diamanten gemacht, aber beim nächsten Mal setze ich vielleicht einen Drachen oder etwas Cooles hinein. Nun zu den Schaltern. Ich mag dieses Design, weil Sie im Grunde genommen eine Menge davon im Voraus machen und einfach verwenden können, was Sie wollen. Beginnen Sie damit, ein Stück Pappe, Papier oder Stoff zu verwenden und eine Birnenform daraus zu schneiden. Verwenden Sie dies als Richtlinie, um für jeden Schalter eine Ober- und Unterseite zu schneiden. Ich schneide eine Farbe für jede Unterseite und eine andere Farbe für die Oberseiten, aber Sie können kreativ sein und tun, was Sie wollen. Schneiden Sie Ihre Anleitung auf eine Lutscherform, die leicht in den Schalter passt. Verlängern Sie den "Stick", damit er sich über den Rand der "Birne" wickeln kann. Schneiden Sie die Form aus dem schmelzenden und leitfähigen Gewebe und schmelzen Sie eine Seite des leitfähigen Gewebes. Entfernen Sie den Träger vom Fixiermaterial und verschmelzen Sie ihn mit der Oberseite des Stoffes, die sich auf der Unterseite befindet, und der Unterseite des Stoffes, die sich auf der Oberseite befinden wird. Wickeln Sie das zusätzliche Bit um die Oberseite. Gehen Sie zu Ihrer Nähmaschine und legen Sie Vliese mit Löchern zwischen den oberen und unteren Stoff. Nähen Sie außerhalb des leitfähigen Gewebes und überspringen Sie den "Stick" -Teil des Schalters. Ich fand, dass es möglich ist, das obere leitfähige Gewebe an die Unterseite zu nähen, wodurch ein Kurzschluss entsteht. Es ist besser, nicht durch das leitfähige Gewebe zu nähen. Druckknöpfe anbringen und der Schalter ist fertig. Ich fand es einfacher, den männlichen Snap für alle unteren / GND-Anschlüsse und den weiblichen Snap für alle Oberseiten zu verwenden. Dadurch sind alle Schalter austauschbar. Die Schaltung: Die Sache beim Runden ist, dass Sie viele zusätzliche Bits haben. Ich nahm meine Reste, verschmolz große Stücke der Fixierung zu großen Stücken aus leitfähigem Stoff und benutzte diese, um die kleineren Rechtecke auszuschneiden, die ich als Pads benutzte. Legen Sie Ihre Schalter grob aus und verschmelzen Sie die Pads mit der Basis mit genügend Platz, um eine Linie daran zu nähen und zu schnappen. Der Fuß der Nähmaschine, die ich benutzt habe, hat es nicht gut aufgenommen, wirklich nah am Druckknopf zu sein, also behalte das im Hinterkopf und gib dir etwas Platz. Da ich leitfähigen Faden habe, der in meine Nähmaschine gehen konnte, habe ich einfach eine Linie von Pad zu Pad und zurück genäht. Ich musste langsam vorgehen, sonst würde der Faden reißen, aber es war eine Tonne schneller als Handnähen. Auch mit leitfähigem Faden auf Spule und Nadel habe ich eine richtig gute feste Verbindung bekommen. Das Zeug franst wie verrückt aus, aber ein bisschen Bastelkleber oder Elmers klärt das auf. Versuchen Sie, die Linien weit voneinander entfernt zu halten, und Sie sollten keine Probleme haben. Endmontage: Alle Schalter einrasten, Platine anschließen, Code laden und fertig. Ich habe Draht verwendet, um von der Platine zum Pad zu gelangen, und dann den Draht einfach von Hand an die Basis genäht. Für die nächste Version werde ich die Platine in einer Plastikbox mit Druckknöpfen montieren, um sie an der Basis zu befestigen, damit Leerlauffinger sie nicht auseinander ziehen.

Schritt 8: Code

Code
Code

Wenn Sie noch nie einen Chip programmiert haben, ist dies eine etwas entmutigende Aufgabe. Es hilft nicht, dass die Werkzeuge flockig sind und Sie die gleiche Operation meistens mehrmals ausführen müssen. Die beiden besten Ressourcen, die ich gefunden habe, um zu verstehen, was vor sich geht, sind die Seite für den USBtinyISP, https://www.ladyada.net/make/usbtinyisp/ und der Crashkurs zum Programmieren des Geräuschspielzeugs, http:/ /blog.makezine.com/archive/2008/05/noise_toy_crashcourse_in.html Diese sollten Ihnen den Einstieg erleichtern.

Viele Leute mögen Arduino für diese Codierung und es ist nichts falsch daran, es zu verwenden, außer dass ich das Gefühl habe, dass es einem normalerweise einfachen Programm eine Menge Blähungen verleiht. Außerdem kannte ich C und kenne Arduino nicht. Vielleicht eines Tages, wenn Zeit ist.:) Code: {{{ #include //Verwenden Sie einen Pin, um das SPK einzuschalten /// Typedefs ////////// typedef unsigned char u8; int main (void) { u8 btnState0; u8 btnState1; u8 btnState2; u8 btnState3; u8 btnState4; u8 btnState5; u8 btnState6; DDRB = (1 << DDB6); //Setze SPK für Ausgang PORTD =(1 << PD0) | (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 << PD4); // Setze Taste hoch PORTC = (1 << PC4) | (1 << PC6); TCCR2B = (1 << CS21); // Timer einrichten während (1) { btnState0 = ~PINC & (1 << PC5); btnState1 = ~PINC & (1 << PC4); btnState2 = ~PIND & (1 << PD0); btnState3 = ~PIND & (1 << PD1); btnState4 = ~PIND & (1 << PD2); btnState5 = ~PIND & (1 << PD3); btnState6 = ~PIND & (1 << PD4); if (btnState0) { if (TCNT2 >= 190) { PORTB ^= (1 << PD6); // SPK-Pin umdrehen TCNT2 = 0; } } if (btnState1) { if (TCNT2 >= 179) { PORTB ^= (1 << PD6); // SPK-Pin umdrehen TCNT2 = 0; } } if (btnState2) { if (TCNT2 >= 159) { PORTB ^= (1 << PD6); // SPK-Pin umdrehen TCNT2 = 0; } } if (btnState3) { if (TCNT2 >= 142) { PORTB ^= (1 << PD6); // SPK-Pin umdrehen TCNT2 = 0; } } if (btnState4) { if (TCNT2 >= 126) { PORTB ^= (1 << PD6); // SPK-Pin umdrehen TCNT2 = 0; } } if (btnState5) { if (TCNT2 >= 119) { PORTB ^= (1 << PD6); // SPK-Pin umdrehen TCNT2 = 0; } } if (btnState6) { if (TCNT2 >= 106) { PORTB ^= (1 << PD6); // SPK-Pin umdrehen TCNT2 = 0; } } } } }}} Woher kommen die Tonhöhen? Ein bisschen Mathe war gefragt. Der Timer-Takt des atmega 168 läuft mit 1MHz. Das ist viel zu schnell für Audio, also müssen wir den Prescaler /8 verwenden. Da wir dann den Ausgangspin hoch und dann niedrig umdrehen müssen, um 1 Zyklus zu machen, müssen wir die Antwort durch 2 teilen, um die richtige Tonhöhe zu erhalten. Die Formel sieht so aus, Pitch to set in code= (1000000/8)/(Target frequency*2) Für A(440) wäre dies für unsere Zwecke 125000/880=142.045 oder 142, da der Wert eine ganze Zahl sein muss. Die Zielfrequenzen von Tönen sind fast überall im Internet zu finden und sind in der Regel alle gleich. Ich möchte immer noch eine Case-Anweisung hinzufügen, anstatt eine Reihe von Ifs zu verwenden, und PWM verwenden, um die Lautstärke und Tonhöhe des Lautsprechers besser zu steuern, aber im Moment funktioniert das.

Empfohlen: