Indholdsfortegnelse:

Vintage Rotary Phone Dial PC Volume Control: 7 trin (med billeder)
Vintage Rotary Phone Dial PC Volume Control: 7 trin (med billeder)

Video: Vintage Rotary Phone Dial PC Volume Control: 7 trin (med billeder)

Video: Vintage Rotary Phone Dial PC Volume Control: 7 trin (med billeder)
Video: Ineos Grenadier: 10 FACTS learned from a (passenger) ride 2024, Juli
Anonim
Image
Image
Fjern skiven
Fjern skiven

Hvis du ligner mig, ændrer du ofte volumen på din computer. Nogle videoer er højere end andre, nogle gange vil du have lydstyrken slået fra på din computer, mens du lytter til podcasts eller musik, og du skal muligvis hurtigt skrue ned for lydstyrken, hvis du modtager et telefonopkald. Hvis du ikke har mediekontroller indbygget i din computer, kan du gøre en vintage roterende telefonskive til en lydstyrkekontrol til din Windows -pc.

Denne volumenkontrolenhed tilsluttes din computer via USB og indstiller automatisk hvert åbent programs lydstyrke til det nummer, du ringer til. Hvis du ringer til "2", sættes lydstyrken til 20%. Tast en "8", og den indstilles til 80%. Opkald "0" sætter det til 0% og fungerer som lydløs. Det er hurtigt, tilfredsstillende og sjovere end at klikke rundt på lydstyrkekontrollen i din proceslinje.

Forbrugsvarer

  • Vintage Bell Systems Trimline roterende telefon
  • Arduino Nano
  • M3 gevindindsats med gevind
  • M3 maskinskruer
  • Modstande (470 ohm og 10k ohm)
  • Tråd
  • Adgang til en 3D -printer

Trin 1: Teori om drift

Roterende telefoner, herunder Bell Systems Trimline, der blev brugt i dette projekt, er rent analoge elektromekaniske enheder. Når du drejer skiven, drejer en fjeder drejeknappen tilbage til den oprindelige position. Når det passerer hvert nummer, afbrydes (eller tilsluttes) en switch for et kort øjeblik, hvilket skaber en puls. Alt vi skal gøre er at tælle disse pulser for at afgøre hvilket nummer der blev ringet op.

guidomax har en fantastisk Instructables -vejledning, der går i dybden med, hvordan det præcist fungerer, og du kan finde flere detaljer der.

Til dette projekt bruger vi Arduino Nano til at tælle pulserne. Arduino sender derefter nummeret til pc'en via den serielle forbindelse. Jeg skrev et grundlæggende Python -script, der kører i baggrunden og overvåger den serielle forbindelse. Når den modtager bits, tager den nummeret og bruger Python Core Audio Windows -biblioteket til at indstille den passende lydstyrke.

På grund af begrænsninger med Windows og det bibliotek indstiller scriptet ikke den samlede systemvolumen (hovedskyderen i din proceslinje). I stedet indstiller den den individuelle lydstyrke for hvert program, der kører i øjeblikket. Effekten er den samme, bortset fra at du ikke kan opretholde forskellige relative lydstyrkeniveauer mellem programmer.

Trin 2: Fjern skiven

Fjern skiven
Fjern skiven

Dette trin er ligetil: bare adskil dit Trimline -telefonrør for at fjerne opkaldsmekanismen. Det er i det væsentlige et selvstændigt modul, så du skal bare skrue det af håndsættet.

Jeg valgte Trimline -modellen til dette projekt, fordi dette opkaldsmodul er mere kompakt end dem, du finder på de fleste andre roterende telefoner.

Hvis du giver det et par testspins, skal du høre kontakten klikke væk, når den vender tilbage til udgangspositionen.

Trin 3: Udskriv kabinettet

Udskriv kabinettet
Udskriv kabinettet

Brug de to medfølgende STL -filer til at udskrive kabinettets dele. Du kan bruge det filamentmateriale, du foretrækker (jeg brugte PLA). De særlige indstillinger, du bruger, er ikke så vigtige, men jeg anbefalede at bruge understøttelser til delen "Rotary_Top". Du kan udskrive disse to dele, mens du arbejder på resten af projektet.

Trin 4: Programmer din Arduino

Programmer din Arduino
Programmer din Arduino

Koden, du uploader til din Arduino Nano, er taget direkte fra guidomax's tutorial, da den fungerer perfekt til dette projekt:

int needToPrint = 0; int count; int in = 2;

int lastState = LAV;

int trueState = LAV;

lang lastStateChangeTime = 0;

int clearet = 0;

// konstanter

int dialHasFinishedRotatingAfterMs = 100;

int debounceDelay = 10;

ugyldig opsætning () {

Serial.begin (9600);

pinMode (i, INPUT); }

void loop () {

int læsning = digitalRead (in);

hvis ((millis () - lastStateChangeTime)> dialHasFinishedRotatingAfterMs) {// opkaldet ikke ringes op, eller lige er blevet færdigopkaldt.

hvis (needToPrint) {// hvis det først lige er færdig med at blive ringet op, skal vi sende nummeret ned på den serielle // linje og nulstille tællingen. Vi ændrer tællingen med 10, fordi '0' sender 10 pulser.

Serial.print (tæl % 10, DEC);

needToPrint = 0;

count = 0;

ryddet = 0; }}

hvis (læsning! = lastState) {lastStateChangeTime = millis ();

}

hvis ((millis () - lastStateChangeTime)> debounceDelay) {// debounce - sker dette, når det er stabiliseret

hvis (læsning! = trueState) {// betyder det, at kontakten enten lige er gået fra lukket-> åben eller omvendt. trueState = læsning; hvis (trueState == HIGH) {// øges antallet af pulser, hvis det er gået højt.

tæl ++;

needToPrint = 1; // vi bliver nødt til at udskrive dette nummer (når urskiven er færdig med at rotere)

}

}

}

lastState = læsning; }

Trin 5: Tråd alt op

Tråd alt op
Tråd alt op
Tråd alt op
Tråd alt op
Tråd alt op
Tråd alt op

Ledningerne til dette projekt er virkelig enkle. Skiven modulet skal have to sekskantede stolper på bagsiden med skruer i dem. Det er switchforbindelserne. Polaritet er ligegyldigt.

Bemærk: Ignorer farverne på mine ledninger på billederne. Jeg blandede jorden og 5V, så disse er faktisk vendt.

Tilslut en ledning fra stolpe A (GND), og slut den til en jordstift på din Arduino Nano. Tag en anden ledning og lod den og en tredje ledning til den ene side af 470 ohm modstanden. Den anden ledning går til Post B (+) på skiven. Den tredje ledning bliver loddet til den ene side af 10k ohm modstanden. Tag en fjerde ledning og lod den fra den anden side af 470 ohm modstanden til Pin 2 på Arduino Nano. Endelig skal en femte ledning forbinde den anden side af 10k ohm -modstanden med 5V -stiften på Arduino Nano.

Vi bruger modstandene og 5V -stiften til at trække stiften til højt, når kontakten er åben (som den er under hver "puls").

Trin 6: Montering

montage
montage
montage
montage

Du skal bemærke, at Rotary_Top -delen af kabinettet har seks små huller. Disse er til dine gevindskårne varmesæt. De tre øverste (på undersiden af den øverste overflade) er til at montere drejeknappen. De tre nederste er at skrue Rotary_Base til Rotary_Top.

De varmesatte indsatser kan opvarmes med et loddejern (eller et dedikeret værktøj) og derefter skubbes ind i hullerne. Varmen vil smelte plasten, som vil hærde efter fjernelse af varme for at holde indsatserne sikkert på plads. Det er meget mere behageligt at bruge varmesatte indsatser end at skrue skruer direkte i plasten.

Indsæt de seks varmesætindsatser. Brug derefter et par korte (10 mm eller deromkring) M3 maskinskruer til at montere skiven. Læg mærke til hakket i udskæringen, hvor metalfingerstoppet vil gå. Læg derefter forsigtigt Arduino Nano-med USB-kablet tilsluttet inde i kabinettet (det er løst, ikke monteret), og skru basen på plads.

Du vil sandsynligvis bruge dobbeltsidet tape eller 3M Command Strips til at fastgøre kabinettet på dit skrivebord, så det ikke bevæger sig rundt, når du drejer skiven.

Trin 7: Konfigurer Python Script

Opsæt Python Script
Opsæt Python Script

Sørg først for, at du har Python installeret (brug Python 3, da Python 2 udfases).

Du skal derefter installere de to nødvendige biblioteker: PyCAW og PySerial.

Brug:

"pip install pycaw" og "pip install pyserial" (fra Python -vinduet eller Windows Powershell)

Kontroller derefter, hvilken port din Arduino Nano er forbundet til. Du kan kontrollere det indefra Arduino IDE. Sørg for, at du har valgt den port, og åbn derefter den serielle skærm. Sørg for, at din baudhastighed er indstillet til 9600, og ring derefter til nogle numre for at sikre, at de vises på den serielle skærm.

Hvis de gør det, skal du redigere "rotary.py" -koden med dit portnummer. Hvis du kører scriptet, skal du nu kunne ændre lydstyrken ved at ringe til et nummer.

Det sidste trin er at konfigurere scriptet til automatisk at køre i baggrunden, når du starter din pc.

For at gøre det skal du ændre "rotary.py" til "rotary.pyw", som gør det muligt at køre det i baggrunden. Placer derefter dette script i følgende mappe: C: / Users / current_user / AppData / Roaming / Microsoft / Windows / Start Menu / Programs / Startup

Du skal naturligvis ændre "current_user" til dit faktiske brugermappens navn.

Det er det! Når din computer starter, begynder det Python -script at køre. Det overvåger den serielle forbindelse fra Arduino og indstiller alle programvolumener til det, du ringer til!

Arduino konkurrence 2020
Arduino konkurrence 2020
Arduino konkurrence 2020
Arduino konkurrence 2020

Runner Up i Arduino Contest 2020

Anbefalede: