Inhoudsopgave:
- Stap 1: Achtergrond
- Stap 2: Origineel idee
- Stap 3: Ondervonden problemen
- Stap 4: Oplossing
- Stap 5: Randdetectie en Matlab-programma
- Stap 6: Voorbeeld: Instructables Robot
- Stap 7: Problemen oplossen/voorbeeldbestanden
Video: Oscilloscoopmuziek: 7 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Inleiding: deze Instructable moet voldoen aan een vereiste voor het documentatiegedeelte van het microcomputer-interfacing-project aan de Utah State University.
Stap 1: Achtergrond
Achtergrond:
Een oscilloscoop wordt gebruikt om een spanningssignaal weer te geven en te meten dat is uitgezet tegen de tijd. Een oscilloscoop in XY-modus zet een signaal uit tegen een ander signaal, vergelijkbaar met een parametrische vergelijking. Dit project gebruikt een oscilloscoop in XY-modus om beelden weer te geven die door een geluidsbestand zijn geproduceerd.
Stap 2: Origineel idee
Het oorspronkelijke idee voor het project was om een oude Cathode Ray Tube (CRT) televisie om te bouwen tot een XY-oscilloscoop en die te gebruiken om de beelden weer te geven. Dit kan door de afbuigspoelen los te koppelen. Wanneer u de horizontale spoelen loskoppelt, verschijnt er een verticale lijn en wanneer u de verticale spoel loskoppelt, verschijnt er een horizontale lijn. Ik hoefde alleen maar de audiobron aan te sluiten op de afbuigspoelen en ik had een XY-oscilloscoop. Helaas liep ik tegen verschillende problemen aan.
Stap 3: Ondervonden problemen
Een van de problemen die ik tegenkwam, waren de veiligheidsvoorzieningen. De tv kon detecteren dat de afbuigspoelen waren losgekoppeld en niet konden worden ingeschakeld. Dit om te voorkomen dat de elektronenstraal een gat in de fosfor op het scherm brandt. Ik heb de weerstand van de spoelen gemeten en er een weerstand overheen geplaatst. Door de hoge spanningen brandde de weerstand meteen doormidden. Ik probeerde het opnieuw met een hogere nominale weerstand, maar dat werkte ook niet. Ik heb op een aantal forums online gelezen over hoe een andere set afbuigspoelen op de originele tv kan worden aangesloten, dus ik vond een andere tv en sloot de afbuigspoel op de mijne aan. De impedantie was niet hetzelfde, dus hij ging niet aan. Na wat meer onderzoek ontdekte ik dat oudere tv's niet over de veiligheidsfunctie beschikten en het kon me niet schelen of de afbuigspoelen waren losgekoppeld. Ik heb een in 2000 geproduceerde tv kunnen vinden die leek te werken. Ik kon een paar eenvoudige vormen op het scherm krijgen, maar alles wat ingewikkelder was dan een cirkel zou zwaar vervormd zijn. Uiteindelijk stopte deze tv met werken en bleven de zekeringen doorslaan.
Ik heb een kleine tv kunnen vinden die in 1994 is gemaakt. Deze tv werkte redelijk goed, maar ik kon de juiste oriëntatie van het beeld niet krijgen, zelfs niet toen ik de signalen in elke combinatie verwisselde. Het had ook dezelfde problemen als de andere tv en zou geen ingewikkelde beelden produceren. Na veel onderzoek kwam ik erachter dat het probleem was dat ik een vectorafbeelding op een rasterweergave probeerde te produceren. Een rasterweergave is een scherm dat zeer snel horizontaal scant en dan verticaal langzamer. Een vectorweergave gebruikt lijnen om afbeeldingen te produceren. Ik heb tutorials gevonden over het converteren van een rasterweergave naar een vectorweergave, maar het proces was gevaarlijk en zou lang duren.
Stap 4: Oplossing
Na al deze problemen kon ik een vrij eenvoudige oplossing vinden; een XY-oscilloscoop-emulatorprogramma dat audio als invoer nam. Toen ik dit programma eenmaal had gevonden, schakelde ik over van focussen op het maken van een oscilloscoop naar het maken van een manier om een audiobestand van een afbeelding te produceren om op een oscilloscoop weer te geven.
Oscilloscoop-emulator
Stap 5: Randdetectie en Matlab-programma
Hier is een basisstroomschema van mijn programma. Het begint met een afbeelding die in het EdgeDetect.m MATLAB-programma wordt geladen. Dit programma converteert het naar een grijsschaalbeeld en detecteert vervolgens de randen in het beeld. De XY-coördinaten van de gedetecteerde randen worden in twee arrays geplaatst die worden omgezet in een geluidsbestand.
Stap 6: Voorbeeld: Instructables Robot
Hier is een voorbeeld van het proces met de instructables-robot. Download eerst een afbeelding van de instructables-robot en sla deze op als "image.png" in uw MATLAB-werkmap (dezelfde plaats als "EdgeDetect.m"). Zorg ervoor dat de afbeelding niets bevat dat u wilt detecteren, anders kan het een heleboel onnodige coördinaten aan uw geluidsbestand toevoegen. Voer het EdgeDetect-programma uit en de afbeelding wordt geconverteerd naar grijswaarden en de randen worden gedetecteerd en opgeslagen als een geluidsbestand met de naam "vector.wav". Open vervolgens het geluidsbestand in Audacity of een ander geluidsbewerkingsprogramma. Open uw oscilloscoop-emulatorprogramma (link in vorige stap), stel de samplefrequentie in op 192000 Hz, druk op start, klik op de microfoonknop en selecteer de optie line in. Druk in Audacity op "shift + spatiebalk" om het geluidsbestand in een lus af te spelen. Het beeld zou op de oscilloscoop-emulator moeten verschijnen.
Stap 7: Problemen oplossen/voorbeeldbestanden
Bij het ontwikkelen van dit programma moest ik een aantal instellingen in het programma aanpassen. Hier zijn enkele dingen om te controleren als het niet werkt:
- Zorg ervoor dat uw audio-uitgang wordt ingevoerd in uw line-in op uw computer en dat u 2 aparte (links en rechts) audiokanalen hebt
-Als de afbeelding niet wordt gelezen door het MATLAB-programma, moet u deze mogelijk in Paint bewerken en als een ander formaat opslaan.
- Zorg ervoor dat u op regel 61 van de code de nummers van het randdetectiescherm opneemt. Het programma plaatst meestal een rechthoek om het geheel die u kunt uitknippen door deze te wijzigen van "i=1:length(B)" in "i=2:length(B)". Als u specifieke nummers heeft die u wilt opnemen, maar niet allemaal wilt opnemen, kunt u vierkante haken gebruiken om specifieke nummers te krijgen: "[1 3 6 10 15 17]"
-Als de afbeelding er wankel uitziet en de onderdelen overal zitten, moet u mogelijk het aantal monsters verminderen door "N" op regel 76 aan te passen. Hoe eenvoudiger de afbeelding, hoe lager N kan zijn, maar het zou hoger moeten zijn als de afbeelding ingewikkeld is. Voor de robot heb ik N=5 gebruikt.
-Je kunt ook "Fs" aanpassen op regel 86. Hoe hoger de bemonsteringsfrequentie, hoe beter het beeld eruit zal zien, maar sommige geluidskaarten kunnen geen hogere bemonsteringsfrequenties aan. Moderne nummers hebben een bemonsteringsfrequentie van ongeveer 320000 Hz.
Aanbevolen:
Game Design in Flick in 5 stappen: 5 stappen
Game-ontwerp in Flick in 5 stappen: Flick is een heel eenvoudige manier om een game te maken, vooral zoiets als een puzzel, visuele roman of avonturengame
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: 3 stappen
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: In deze Instructable gaan we gezichtsdetectie uitvoeren op Raspberry Pi 4 met Shunya O/S met behulp van de Shunyaface-bibliotheek. Shunyaface is een bibliotheek voor gezichtsherkenning/detectie. Het project streeft naar de hoogste detectie- en herkenningssnelheid met
Doe-het-zelfspiegel in eenvoudige stappen (met LED-stripverlichting): 4 stappen
DIY make-upspiegel in eenvoudige stappen (met behulp van LED-stripverlichting): In dit bericht heb ik een doe-het-zelfspiegel gemaakt met behulp van de LED-strips. Het is echt gaaf en je moet ze ook proberen
Hoe plug-ins in WordPress te installeren in 3 stappen: 3 stappen
Hoe plug-ins in WordPress te installeren in 3 stappen: In deze tutorial laat ik je de essentiële stappen zien om de WordPress-plug-in op je website te installeren. In principe kunt u plug-ins op twee verschillende manieren installeren. De eerste methode is via ftp of via cpanel. Maar ik zal het niet opsommen, want het is echt compl
Akoestische levitatie met Arduino Uno stap voor stap (8 stappen): 8 stappen
Akoestische levitatie met Arduino Uno Stap voor stap (8-stappen): ultrasone geluidstransducers L298N Vrouwelijke DC-adapter voeding met een mannelijke DC-pin Arduino UNOBreadboardHoe dit werkt: eerst upload je code naar Arduino Uno (het is een microcontroller uitgerust met digitale en analoge poorten om code te converteren (C++)