INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
As u net soos ek is, verander u gereeld die volume op u rekenaar. Sommige video's is harder as ander, soms wil u hê dat die volume op u rekenaar gedemp moet word terwyl u na podcasts of musiek luister, en as u 'n telefoonoproep ontvang, moet u moontlik vinnig die volume verlaag. As u geen mediakontroles in u rekenaar het nie, kan u 'n vintage draaiknop in 'n volumeknop vir u Windows -rekenaar verander.
Hierdie volumebeheertoestel word via u USB by u rekenaar aangesluit en stel die volume van elke oop program outomaties in op die nommer wat u ook al skakel. As u '2' skakel, word die volume op 20%gestel. Skakel 'n "8" en dit sal op 80%gestel word. Deur "0" te skakel, word dit op 0% gestel en werk dit as stom. Dit is vinnig, bevredigend en lekkerder as om op die volumebeheer in u taakbalk te klik.
Voorrade
- Vintage Bell Systems Trimline roterende telefoon
- Arduino Nano
- M3 skroefdraad-hitte-insetsels
- M3 masjien skroewe
- Weerstande (470 ohm en 10k ohm)
- Draad
- Toegang tot 'n 3D -drukker
Stap 1: Teorie van werking
Roterende telefone, insluitend die Bell Systems Trimline wat in hierdie projek gebruik word, is suiwer analoog elektromeganiese toestelle. As u die draaiknop draai, draai 'n veer die draaiknop terug na die oorspronklike posisie. As dit elke nommer verbygaan, word 'n skakelaar vir 'n kort oomblik ontkoppel (of gekoppel), wat 'n polsslag veroorsaak. Al wat ons hoef te doen is om die pulse te tel om te bepaal watter nommer gebel is.
guidomax het 'n fantastiese Instructables -tutoriaal wat diepte bespreek oor hoe dit presies werk, en u kan daar meer inligting vind.
Vir hierdie projek gebruik ons die Arduino Nano om die polse te tel. Die Arduino stuur die nommer dan na die rekenaar via die seriële verbinding. Ek het 'n basiese Python -script geskryf wat op die agtergrond loop en die seriële verbinding monitor. As dit stukkies ontvang, neem dit die nommer en gebruik die Python Core Audio Windows -biblioteek om die toepaslike volume in te stel.
As gevolg van beperkings met Windows en die biblioteek, stel die script nie die algehele stelselvolume in nie (die belangrikste skuifbalk in u taakbalk). In plaas daarvan stel dit die individuele volume in vir elke program wat tans uitgevoer word. Die effek is dieselfde, behalwe dat u nie verskillende relatiewe volumevlakke tussen programme kan handhaaf nie.
Stap 2: Verwyder die draaiknop
Hierdie stap is eenvoudig: demonteer net u Trimline -selfoon om die skakelingsmeganisme te verwyder. Dit is eintlik 'n selfstandige module, dus u hoef dit net van die toestel af te skroef.
Ek het die Trimline -model vir hierdie projek gekies, want die skakelmodule is meer kompak as dié wat u op die meeste ander draaiende telefone sal vind.
As u 'n paar toetsdraaie gee, moet u die skakelaar hoor wegklik terwyl dit terugkeer na die tuisposisie.
Stap 3: Druk die bylaag af
Gebruik die twee meegeleverde STL -lêers om die omhulselonderdele te druk. U kan die filamentmateriaal gebruik wat u verkies (ek het PLA gebruik). Die spesifieke instellings wat u gebruik, is nie so belangrik nie, maar ek het aanbeveel dat u ondersteunings vir die gedeelte "Rotary_Top" gebruik. U kan hierdie twee dele druk terwyl u aan die res van die projek werk.
Stap 4: programmeer u Arduino
Die kode wat u na u Arduino Nano sal oplaai, word direk uit die handleiding van guidomax geneem, aangesien dit perfek vir hierdie projek werk:
int needToPrint = 0; int telling; int in = 2;
int lastState = LAAG;
int trueState = LAAG;
lang lastStateChangeTime = 0;
int skoongemaak = 0;
// konstantes
int dialHasFinishedRotatingAfterMs = 100;
int debounceDelay = 10;
ongeldige opstelling () {
Serial.begin (9600);
pinMode (in, INVOER); }
leemte -lus () {
int lees = digitalRead (in);
as ((millis () - lastStateChangeTime)> dialHasFinishedRotatingAfterMs) {// die skakelaar nie gebel word nie, of pas gebel is.
as (needToPrint) {// as die pas gebel het, moet ons die nommer langs die reël // stuur en die telling terugstel. Ons wys die telling met 10 omdat '0' 10 pulse stuur.
Serial.print (telling % 10, DEC);
needToPrint = 0;
telling = 0;
skoongemaak = 0; }}
as (lees! = lastState) {lastStateChangeTime = millis ();
}
as ((millis () - lastStateChangeTime)> debounceDelay) {// debounce - dit gebeur sodra dit gestabiliseer is
as (lees! = trueState) {// dit beteken dat die skakelaar net van geslote-> oop is of andersom. trueState = lees; as (trueState == HOOG) {// verhoog die aantal pulse as dit hoog is.
tel ++;
needToPrint = 1; // ons moet hierdie nommer druk (sodra die draaiknop klaar is gedraai)
}
}
}
lastState = lees; }
Stap 5: Sluit alles op
Die bedrading vir hierdie projek is regtig eenvoudig. Die draaiknopmodule moet twee seskantige pale op die agterkant hê met skroewe daarin. Dit is die skakelaarverbindings. Polariteit maak nie saak nie.
Nota: Ignoreer die kleure van my drade op die foto's. Ek het grond en 5V gemeng, sodat dit eintlik omgekeer word.
Koppel een draad van Post A (GND) en verbind dit met 'n grondpen op u Arduino Nano. Neem 'n tweede draad en soldeer dit en 'n derde draad aan die een kant van die weerstand van 470 ohm. Die tweede draad gaan na pos B (+) op die draaiknop. Die derde draad word aan die een kant van die 10k ohm weerstand gesoldeer. Neem 'n vierde draad en soldeer dit van die ander kant van die weerstand van 470 ohm tot pen 2 op die Arduino Nano. Laastens moet 'n vyfde draad die ander kant van die 10k ohm -weerstand met die 5V -pen op die Arduino Nano verbind.
Ons gebruik die weerstande en die 5V -pen om die pen te hoog te trek as die skakelaar oop is (soos tydens elke "polsslag").
Stap 6: Montering
U moet opmerk dat die Rotary_Top -deel van die omhulsel ses klein gaatjies het. Dit is vir u ingeslote hitte-insetsels. Die boonste drie (aan die onderkant van die boonste oppervlak) is om die draaiknop te monteer. Die onderste drie is om die Rotary_Base aan die Rotary_Top vas te skroef.
Die hitte-insetsels kan met 'n soldeerbout (of 'n spesiale gereedskap) verhit word en dan in die gate gestoot word. Die hitte smelt die plastiek, wat verhard word nadat die hitte verwyder is om die insetsels stewig vas te hou. Dit is baie aangenamer om insetsels met hitte te gebruik as om skroewe direk in die plastiek te skroef.
Plaas die ses hitte-insetsels. Gebruik dan 'n paar kort (10 mm) M3 -masjienskroewe om die draaiknop te monteer. Let op die kerf in die uitsparing, waarheen die metaalvinger stop. Plaas dan die Arduino Nano-met USB-kabel binne-in die omhulsel (dit is los, nie gemonteer nie) en skroef die basis vas.
U sal waarskynlik dubbelzijdige band of 3M-opdragstroke wil gebruik om die omhulsel op u lessenaar te plak, sodat dit nie kan beweeg as u die draaiknop draai nie.
Stap 7: Stel die Python Script op
Maak eers seker dat u Python geïnstalleer het (gebruik Python 3, aangesien Python 2 uitgefaseer word).
U moet dan die twee vereiste biblioteke installeer: PyCAW en PySerial.
Gebruik:
"pip install pycaw" en "pip install pyserial" (vanaf die Python -venster of Windows Powershell)
Kyk dan na die poort waarop u Arduino Nano gekoppel is. U kan dit vanuit die Arduino IDE nagaan. Maak seker dat die poort gekies is, en maak dan die seriële monitor oop. Maak seker dat u baud -tempo ingestel is op 9600, en skakel dan 'n paar nommers om seker te maak dat dit op die seriële monitor verskyn.
As dit die geval is, wysig u die "rotary.py" -kode met u poortnommer. As u die script gebruik, moet u die volume nou kan verander deur 'n nommer te skakel.
Die laaste stap is om die script op te stel om outomaties op die agtergrond te loop wanneer u u rekenaar opstart.
Om dit te doen, verander "rotary.py" na "rotary.pyw", sodat dit op die agtergrond kan loop. Plaas dan die skrif in die volgende gids: C: / Users / current_user / AppData / Roaming / Microsoft / Windows / Start Menu / Programs / Startup
Uiteraard moet u "current_user" verander na u werklike gebruikersmapnaam.
Dis dit! Elke keer as u rekenaar begin, begin die Python -script. Dit sal die reeksverbinding vanaf die Arduino monitor en al die programvolumes instel op wat u ook al skakel!
Naaswenner in die Arduino -wedstryd 2020