Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Teori om drift
- Trinn 2: Fjern skiven
- Trinn 3: Skriv ut vedlegget
- Trinn 4: Programmer din Arduino
- Trinn 5: Koble alt opp
- Trinn 6: Montering
- Trinn 7: Sett opp Python Script
Video: Vintage Rotary Phone Dial PC Volumkontroll: 7 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
Hvis du er lik meg, finner du ut at du endrer volumet på datamaskinen din ganske ofte. Noen videoer er høyere enn andre, noen ganger vil du at lyden skal være dempet på datamaskinen mens du hører på podcaster eller musikk, og du må kanskje raskt skru ned volumet hvis du mottar en telefon. Hvis du ikke har mediekontroller innebygd i datamaskinen, kan du gjøre en vintage roterende telefonskive til en volumkontroll for Windows -PCen.
Denne volumkontrollenheten kobles til datamaskinen din via USB, og vil automatisk sette hvert åpent programs volum til det nummeret du ringer. Hvis du slår "2", settes volumet til 20%. Slå en "8", og den blir satt til 80%. Å ringe "0" setter den til 0% og fungerer som dempet. Det er raskt, tilfredsstillende og morsommere enn å klikke rundt på volumkontrollen på oppgavelinjen.
Rekvisita
- Vintage Bell Systems Trimline roterende telefon
- Arduino Nano
- M3 gjengede varmesettinnlegg
- M3 maskinskruer
- Motstander (470 ohm og 10k ohm)
- Metalltråd
- Tilgang til en 3D -skriver
Trinn 1: Teori om drift
Roterende telefoner, inkludert Bell Systems Trimline som ble brukt i dette prosjektet, er rent analoge elektromekaniske enheter. Når du roterer skiven, snur en fjær skiven tilbake til opprinnelig posisjon. Når det passerer hvert nummer, kobles en bryter (eller tilkoblet) et kort øyeblikk, og skaper en puls. Alt vi trenger å gjøre er å telle disse pulser for å finne ut hvilket nummer som ble slått.
guidomax har en fantastisk Instructables -opplæring som går i dybden på hvordan akkurat dette fungerer, og du kan finne flere detaljer der.
For dette prosjektet bruker vi Arduino Nano til å telle pulser. Arduino sender deretter nummeret til PC -en via den serielle tilkoblingen. Jeg skrev et grunnleggende Python -skript som kjører i bakgrunnen og overvåker den serielle tilkoblingen. Når den mottar biter, tar den nummeret og bruker Python Core Audio Windows -biblioteket til å angi riktig volum.
På grunn av begrensninger med Windows og det biblioteket, angir ikke skriptet det generelle systemvolumet (hovedglidebryteren på oppgavelinjen). I stedet setter det det individuelle volumet for hvert program som kjører. Effekten er den samme, bortsett fra at du ikke kan opprettholde forskjellige relative volumnivåer mellom programmer.
Trinn 2: Fjern skiven
Dette trinnet er enkelt: bare demonter Trimline -telefonrøret for å fjerne oppringningsmekanismen. Det er egentlig en selvstendig modul, så du trenger bare å skru den av håndsettet.
Jeg valgte Trimline -modellen for dette prosjektet, fordi den oppringningsmodulen er mer kompakt enn den du finner på de fleste andre roterende telefoner.
Hvis du gir den noen få testspinn, bør du høre bryteren klikke bort når den går tilbake til utgangsposisjonen.
Trinn 3: Skriv ut vedlegget
Bruk de to STL -filene som følger med til å skrive ut kabinettdelene. Du kan bruke det filamentmaterialet du foretrekker (jeg brukte PLA). De spesifikke innstillingene du bruker er ikke så viktige, men jeg anbefalte å bruke støtte for delen "Rotary_Top". Du kan skrive ut disse to delene mens du jobber med resten av prosjektet.
Trinn 4: Programmer din Arduino
Koden du laster opp til din Arduino Nano er hentet rett fra guidomax sin opplæring, siden den fungerer perfekt for dette prosjektet:
int needToPrint = 0; int count; int in = 2;
int lastState = LAV;
int trueState = LAV;
long lastStateChangeTime = 0;
int klarert = 0;
// konstanter
int dialHasFinishedRotatingAfterMs = 100;
int debounceDelay = 10;
ugyldig oppsett () {
Serial.begin (9600);
pinMode (i, INNGANG); }
void loop () {
int reading = digitalRead (in);
if ((millis () - lastStateChangeTime)> dialHasFinishedRotatingAfterMs) {// oppringningen ikke blir ringt, eller nettopp har blitt ringt opp.
if (needToPrint) {// hvis det bare er ferdig med å bli slått, må vi sende nummeret ned på serien // og nullstille antallet. Vi modifiserer tellingen med 10 fordi '0' sender 10 pulser.
Serial.print (telle % 10, DEC);
needToPrint = 0;
telle = 0;
slettet = 0; }}
if (reading! = lastState) {lastStateChangeTime = millis ();
}
hvis ((millis () - lastStateChangeTime)> debounceDelay) {// debounce - skjer dette når det er stabilisert
if (reading! = trueState) {// betyr dette at bryteren enten nettopp har gått fra lukket-> åpen eller omvendt. trueState = lesing; hvis (trueState == HIGH) {// øker antallet pulser hvis det har gått høyt.
telle ++;
needToPrint = 1; // vi må skrive ut dette nummeret (når skiven er ferdig rotert)
}
}
}
lastState = lesing; }
Trinn 5: Koble alt opp
Kablingene for dette prosjektet er veldig enkle. Skiven modulen skal ha to sekskantede stolper på baksiden med skruer i dem. Det er bryterforbindelsene. Polaritet spiller ingen rolle.
Merk: Ignorer fargene på ledningene mine på bildene. Jeg blandet bakken og 5V, så disse er faktisk reversert.
Koble en ledning fra stolpe A (GND) og koble den til en jordet pinne på Arduino Nano. Ta en andre ledning og lodd den og en tredje ledning til den ene siden av 470 ohm motstanden. Den andre ledningen går til Post B (+) på skiven. Den tredje ledningen blir loddet til den ene siden av 10k ohm motstanden. Ta en fjerde ledning og lodd den fra den andre siden av 470 ohm motstanden til Pin 2 på Arduino Nano. Til slutt bør en femte ledning koble den andre siden av 10k ohm -motstanden til 5V -pinnen på Arduino Nano.
Vi bruker motstandene og 5V -pinnen for å trekke pinnen til høyt når bryteren er åpen (slik den er under hver "puls").
Trinn 6: Montering
Du bør legge merke til at Rotary_Top -delen av kabinettet har seks små hull. Disse er for gjengede varmesettinnlegg. De tre øverste (på undersiden av den øvre overflaten) er for å montere dreieknappen. De tre nederste er å skru Rotary_Base til Rotary_Top.
De varmesettede innsatsene kan varmes opp med et loddejern (eller et dedikert verktøy) og deretter skyves inn i hullene. Varmen vil smelte plasten, som vil stivne etter at varmen er fjernet for å holde innsatsene godt på plass. Å bruke varmesett er mye hyggeligere enn å skru skruer direkte inn i plasten.
Sett inn de seks varmesettene. Bruk deretter noen korte (10 mm eller så) M3 maskinskruer for å montere skiven. Legg merke til hakket i utskjæringen, der metallfingerstoppet vil gå. Plasser deretter forsiktig Arduino Nano-med USB-kabel tilkoblet inne i kabinettet (den er løs, ikke montert), og skru basen på plass.
Du vil sannsynligvis bruke dobbeltsidig tape eller 3M Command Strips for å feste kabinettet på skrivebordet ditt, slik at det ikke beveger seg rundt når du roterer skiven.
Trinn 7: Sett opp Python Script
Først må du kontrollere at du har Python installert (bruk Python 3, ettersom Python 2 blir faset ut).
Du må deretter installere de to nødvendige bibliotekene: PyCAW og PySerial.
Bruk:
"pip install pycaw" og "pip install pyserial" (fra Python -vinduet eller Windows Powershell)
Sjekk deretter hvilken port Arduino Nano er koblet til. Du kan sjekke det fra Arduino IDE. Sørg for at du har valgt porten, og åpne den serielle skjermen. Kontroller at overføringshastigheten er satt til 9600, og slå deretter noen numre for å sikre at de vises på den serielle skjermen.
Hvis de gjør det, må du redigere "rotary.py" -koden med portnummeret ditt. Hvis du kjører skriptet, bør du nå kunne endre volumet ved å slå et nummer.
Det siste trinnet er å konfigurere skriptet til å kjøre i bakgrunnen automatisk når du starter PCen.
For å gjøre det, endre "rotary.py" til "rotary.pyw" som lar den kjøre i bakgrunnen. Plasser deretter skriptet i følgende mappe: C: / Users / current_user / AppData / Roaming / Microsoft / Windows / Start Menu / Programs / Startup
Tydeligvis må du endre "current_user" til ditt faktiske brukermappnavn.
Det er det! Når datamaskinen starter, starter det Python -skriptet. Den overvåker den serielle tilkoblingen fra Arduino, og setter alle programvolumene til det du ringer!
Runner Up i Arduino Contest 2020
Anbefalt:
USB volumkontroll: 9 trinn (med bilder)
USB Volumkontroll: I dette prosjektet bygger vi en USB -volumkontroll ved hjelp av en Arduino -kompatibel Trinket fra Adafruit, og en roterende encoder. Til slutt vil vi 3D -skrive ut et hus, fylle basen med blyskudd for å legge til vekt og stabilitet, og laserskjære en akrylbunn
Raspberry Pi Rotary Phone Case: 10 trinn (med bilder)
Raspberry Pi Rotary Phone Case: Jeg var på utkikk etter et morsomt prosjekt for Raspberry Pi, og bestemte meg for at et tilfelle ville være morsomt. Jeg fant en gammel roterende telefon og konverterte den til et etui for min Pi. Jeg trengte deler på rundt $ 40, du kan kanskje gjøre det for mindre. Hele prosjektet tok
Rullehjul og volumkontroll på skrivebordet: 8 trinn (med bilder)
Desktop Scroll Wheel and Volume Control !: Lag Magasinets helgeprosjekt, 3/4/09 Noen bakgrunner Nylig har jeg lest mange forskjellige blogger. Hver dag skal jeg lese de siste innleggene om engadget, lifehacker, hackaday, BBG og MAKE: bloggen. Problemet for meg kom da jeg skjønte at
Universal volumkontroll for ørepropper/hodetelefoner: 8 trinn (med bilder)
Universal volumkontroll for ørepropper/hodetelefoner: Så jeg kjøpte en PMP (Portable Media Player) fra Hong Kong, slik at jeg kunne spille mine NES-spill med innebygd emulator hvor det var praktisk. Lange bilturer, flyreiser, venterom osv. Er steder jeg liker å drepe tid med bærbare medier, men
PC -HØYTTALERE: Kablet volumkontroll med parfymehette: 19 trinn
PC -HØYTTALERE: Kablet volum fjernkontroll med parfymehette: (Før alt: beklager engelsk jeg fra Brasil …) Hei, min mor kjøpte en edifier 2.1 PC -høyttaler med kablet fjernkontroll. (Bilde 1) Det er veldig fint og enkelt å bruke … men dyrt, og knappevolumet er litt lite … Jeg liker store volumknapper, som