Բովանդակություն:
- Պարագաներ
- Քայլ 1. Գործողության տեսություն
- Քայլ 2: Հեռացրեք հավաքիչը
- Քայլ 3: Տպեք պատյանը
- Քայլ 4. Programրագրեք ձեր Arduino- ն
- Քայլ 5: Ամրացրեք ամեն ինչ
- Քայլ 6: Հավաքում
- Քայլ 7: Կարգավորեք Python Script- ը
Video: Vintage Rotary Phone Dial PC ձայնի կառավարում. 7 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Եթե դուք ինձ նման եք, ապա ինքներդ ձեզ հաճախ եք փոխում ձայնը ձեր համակարգչի վրա: Որոշ տեսահոլովակներ ավելի բարձր են, քան մյուսները, երբեմն ուզում եք, որ ձայնը ձեր համակարգչում անջատվի, մինչդեռ փոդքաստեր կամ երաժշտություն եք լսում, և գուցե ձեզ անհրաժեշտ լինի արագ իջեցնել ձայնը, եթե հեռախոսազանգ եք ստանում: Եթե ձեր համակարգչում տեղադրված չեն մեդիա կառավարման տարրեր, ապա կարող եք խաղողի բերքահավաքի պտտվող հավաքիչը վերածել ձեր Windows ԱՀ -ի ձայնի կառավարման:
Ձայնի կառավարման այս սարքը միանում է ձեր համակարգչին USB- ի միջոցով և ավտոմատ կերպով յուրաքանչյուր բաց ծրագրի ծավալը կհամապատասխանի այն համարին, որը դուք հավաքում եք: Եթե հավաքեք «2», ձայնը կկարգավորվի 20%: Հավաքեք «8» և այն կսահմանվի 80%-ի: «0» հավաքելով այն սահմանվում է 0% և գործում է համր: Դա արագ, գոհացուցիչ և ավելի զվարճալի է, քան ձեր առաջադրանքի տողում ձայնի կարգավորիչի վրա սեղմելը:
Պարագաներ
- Vintage Bell Systems Trimline պտտվող հեռախոս
- Արդուինո Նանո
- M3 ակոսավոր ջերմակայման ներդիրներ
- M3 մեքենայի պտուտակներ
- Ռեզիստորներ (470 ohm և 10k ohm)
- Մետաղալար
- Մատչելիություն 3D տպիչին
Քայլ 1. Գործողության տեսություն
Պտտվող հեռախոսները, ներառյալ այս նախագծում օգտագործվող Bell Systems Trimline- ը, զուտ անալոգային էլեկտրամեխանիկական սարքեր են: Երբ պտտեք հավաքիչը, մի զսպանակ պտտեցրեք հավաքիչը ետ դեպի սկզբնական դիրքը: Յուրաքանչյուր թիվ անցնելիս անջատիչը կարճ ժամանակով անջատված է (կամ միացված) ՝ ստեղծելով զարկերակ: Մեզ մնում է հաշվել այդ զարկերակները, որպեսզի որոշենք, թե ինչ թիվ է հավաքվել:
guidomax- ն ունի ֆանտաստիկ Instructables ձեռնարկ, որը մանրամասնորեն ներկայացնում է, թե ինչպես է դա աշխատում, և ավելի մանրամասն կարող եք գտնել այնտեղ:
Այս նախագծի համար մենք օգտագործում ենք Arduino Nano- ն ՝ իմպուլսները հաշվելու համար: Այնուհետև Arduino- ն համարը համակարգչին է ուղարկում սերիական միացման միջոցով: Ես գրեցի Python- ի հիմնական սցենարը, որն աշխատում է հետին պլանում և վերահսկում է այդ սերիական կապը: Երբ բիթեր է ստանում, վերցնում է համարը և օգտագործում է Python Core Audio Windows գրադարանը `համապատասխան ձայնը սահմանելու համար:
Windows- ի և այդ գրադարանի սահմանափակումների պատճառով սցենարը չի սահմանում համակարգի ընդհանուր ծավալը (ձեր առաջադրանքի հիմնական սահիչը): Փոխարենը, այն սահմանում է անհատական ձայնը յուրաքանչյուր ծրագրի համար, որն այժմ աշխատում է: Էֆեկտը նույնն է, միայն թե ծրագրերի միջև չես կարող պահպանել տարբեր հարաբերական ծավալի մակարդակներ:
Քայլ 2: Հեռացրեք հավաքիչը
Այս քայլը պարզ է. Պարզապես ապամոնտաժեք ձեր Trimline հեռախոսի հեռախոսը ՝ հեռախոսի հավաքման մեխանիզմը հեռացնելու համար: Դա ըստ էության ինքնամփոփ մոդուլ է, այնպես որ պարզապես անհրաժեշտ է այն հեռացնել հեռախոսից:
Այս նախագծի համար ես ընտրեցի Trimline մոդելը, քանի որ այդ հավաքման մոդուլն ավելի կոմպակտ է, քան այն, ինչ կգտնեք այլ պտտվող հեռախոսների մեծ մասում:
Եթե այն տալիս եք մի քանի փորձնական պտույտ, ապա պետք է լսեք, որ անջատիչը սեղմում է, երբ այն վերադառնում է հիմնական դիրքի:
Քայլ 3: Տպեք պատյանը
Օգտագործեք երկու տրամադրված STL ֆայլերը `պարիսպի մասերը տպելու համար: Դուք կարող եք օգտագործել թելերի ցանկացած նյութ, որը նախընտրում եք (ես օգտագործել եմ PLA): Ձեր օգտագործած որոշակի պարամետրերն այնքան էլ կարևոր չեն, բայց ես խորհուրդ տվեցի օգտագործել «Rotary_Top» մասի աջակցություններ: Նախագծի մնացած մասի վրա աշխատելիս կարող եք տպել այս երկու մասերը:
Քայլ 4. Programրագրեք ձեր Arduino- ն
Ձեր Arduino Nano- ում ձեր վերբեռնած կոդը վերցված է ուղիղ guidomax- ի ձեռնարկից, քանի որ այն հիանալի աշխատում է այս նախագծի համար.
int needToPrint = 0; int հաշվարկ; int = 2;
int lastState = LOW;
int trueState = OWԱOWՐ;
երկար lastStateChangeTime = 0;
int մաքրված = 0;
// հաստատուններ
int dialHasFinishedRotatingAfterMs = 100;
int debounceDelay = 10;
void setup () {
Serial.begin (9600);
pinMode (in, INPUT); }
դատարկ շրջան () {
int ընթերցում = digitalRead (in);
if ((millis () - lastStateChangeTime)> dialHasFinishedRotatingAfterMs) {// հավաքիչը չի հավաքվում, կամ նոր է ավարտվել:
if (needToPrint) {// եթե այն պարզապես հավաքված է, մենք պետք է համարը ուղարկենք սերիական // տողից ներքև և վերականգնենք հաշվարկը: Մենք հաշվում ենք 10 -ով, քանի որ «0» -ը կուղարկի 10 իմպուլս:
Serial.print (հաշվիչ % 10, DEC);
needToPrint = 0;
հաշվել = 0;
մաքրված = 0; }}
եթե (կարդում! = lastState) {lastStateChangeTime = millis ();
}
եթե ((millis () - lastStateChangeTime)> debounceDelay) {// debounce - դա տեղի է ունենում այն բանից հետո, երբ այն կայունանում է
եթե (կարդում! = trueState) {// սա նշանակում է, որ անջատիչը կամ պարզապես անցել է փակ-> բաց կամ հակառակը: trueState = ընթերցում; if (trueState == HIGH) {// ավելացրեք իմպուլսների քանակը, եթե այն բարձրացել է:
հաշվել ++;
needToPrint = 1; // մենք պետք է տպենք այս համարը (երբ հավաքիչը ավարտի պտտումը)
}
}
}
lastState = ընթերցում; }
Քայլ 5: Ամրացրեք ամեն ինչ
Այս նախագծի էլեկտրագծերը իսկապես պարզ են: Հավաքման մոդուլը պետք է ունենա երկու վեցանկյուն հենարան հետևի մասում, որոնցում պտուտակներ կան: Դրանք անջատիչի միացումներն են: Բևեռականությունը նշանակություն չունի:
Նշում. Անտեսեք իմ լարերի գույները լուսանկարներում: Ես խառնեցի գետնին և 5 Վ -ին, ուստի դրանք իրականում հակադարձվում են:
Միացրեք A մետաղալարից (GND) մեկ մետաղալար և միացրեք այն Arduino Nano- ի գրունտային քորոցին: Վերցրեք երկրորդ մետաղալարը և կպցրեք այն և երրորդ մետաղալարը 470 օմ դիմադրության մի կողմում: Երկրորդ մետաղալարն անցնելու է հավաքման վրա տեղադրված B (+): Երրորդ մետաղալարերը կպչվեն 10k ohm դիմադրության մի կողմում: Վերցրեք չորրորդ մետաղալարը և այն կպցրեք 470 օմ դիմադրության մյուս կողմից Arduino Nano- ի Pin 2 -ին: Վերջապես, հինգերորդ մետաղալարը պետք է միացնի 10k ohm դիմադրության մյուս կողմը Arduino Nano- ի 5V պինին:
Մենք օգտագործում ենք ռեզիստորները և 5 Վ -ի քորոցը, որպեսզի անջատիչը բաց լինի (այնպես, ինչպես յուրաքանչյուր «զարկերակի» ժամանակ):
Քայլ 6: Հավաքում
Դուք պետք է նկատեք, որ պարիսպի Rotary_Top հատվածն ունի վեց փոքր անցք: Դրանք ձեր ակոսավոր ջերմակայուն ներդիրների համար են: Առաջին երեքը (վերին մակերևույթի ներքևի մասում) պետք է ամրացնեն պտտվող հավաքիչը: Ներքևի երեքը պետք է պտտել Rotary_Base- ը Rotary_Top- ին:
Heatերմամեկուսիչ ներդիրները կարելի է տաքացնել եռակցման երկաթով (կամ հատուկ գործիքով), այնուհետև մղել անցքերի մեջ: Theերմությունը կհալեցնի պլաստիկը, որը ջերմության հեռացումից հետո կարծրանալու է, որպեսզի ներդիրներն ապահով պահվեն տեղում: Heatերմամեկուսիչ ներդիրների օգտագործումը շատ ավելի հաճելի է, քան պտուտակները ուղղակիորեն պլաստիկի մեջ ամրացնելը:
Տեղադրեք վեց ջերմակայուն ներդիր: Այնուհետև օգտագործեք մի քանի կարճ (մոտ 10 մմ) M3 մեքենայի պտուտակներ ՝ հավաքեք հավաքիչը: Ուշադրություն դարձրեք կտրվածքի հատվածին, որտեղից կգնա մետաղյա մատի կանգառը: Այնուհետև զգուշորեն տեղադրեք Arduino Nano- ն ՝ USB մալուխով միացված, պարիսպի ներսում (այն թուլացած է, տեղադրված չէ) և ամրացրեք հիմքը տեղում:
Հավանաբար, կցանկանաք օգտագործել երկկողմանի ժապավեն կամ 3M հրամանի ժապավեն ՝ պարիսպը ձեր գրասեղանին ամրացնելու համար, այնպես որ այն չի շարժվի, երբ պտտեք հավաքիչը:
Քայլ 7: Կարգավորեք Python Script- ը
Նախ, համոզվեք, որ Python- ը տեղադրված է (օգտագործեք Python 3 -ը, քանի որ Python 2 -ն աստիճանաբար հանվում է):
Այնուհետև ձեզ հարկավոր է տեղադրել երկու պահանջվող գրադարաններ ՝ PyCAW և PySerial:
Օգտագործել:
«pip install pycaw» և «pip install pyserial» (Python պատուհանից կամ Windows Powershell- ից)
Այնուհետև ստուգեք ՝ ձեր Arduino Nano- ի որ նավահանգստին է միացված: Դուք կարող եք դա ստուգել Arduino IDE- ի ներսում: Համոզվեք, որ ընտրել եք այդ նավահանգիստը, այնուհետև բացեք սերիական մոնիտորը: Համոզվեք, որ ձեր բաուդ արագությունը 9600 է, այնուհետև հավաքեք որոշ թվեր `համոզվելու համար, որ դրանք հայտնվում են սերիական մոնիտորում:
Եթե դա այդպես է, խմբագրեք «rotary.py» ծածկագիրը ձեր նավահանգստի համարով: Եթե դուք վարում եք սցենարը, ապա այժմ պետք է կարողանաք փոխել ձայնը ՝ հավաքելով համար:
Վերջնական քայլն այն է, որ համակարգիչը բեռնաթափելիս սցենարը կարգավորվի հետին պլանում:
Դա անելու համար փոխեք «rotary.py» - ն «rotary.pyw» - ով, ինչը թույլ կտա այն գործարկել հետին պլանում: Այնուհետև տեղադրեք այդ սցենարը հետևյալ թղթապանակում ՝ C: / Users / current_user / AppData / Roaming / Microsoft / Windows / Start Menu / Programs / Startup
Ակնհայտ է, որ դուք պետք է փոխեք «current_user» - ը ձեր իրական օգտվողի թղթապանակի անունով:
Վերջ! Երբ ձեր համակարգիչը գործարկվի, այդ Python սցենարը կսկսի գործել: Այն կհսկի Arduino- ի սերիական կապը և ծրագրի բոլոր ծավալը կկարգավորի այն, ինչ հավաքում եք:
Երկրորդ տեղը Arduino մրցույթում 2020 թ
Խորհուրդ ենք տալիս:
Ձայնի/ձայնի մակարդակի ցուցիչ `10 քայլ
Ձայնի/ձայնի մակարդակի ցուցիչ. Այս նախագծում ես ձեզ ցույց կտամ, թե ինչպես կարելի է կառուցել ձայնի մակարդակի պարզ ցուցիչ `օգտագործելով գործառնական ուժեղացուցիչներ: Նշում. Հարցեր տալու համար այցելեք իմ կայքը ՝ Հարցրեք փորձագետին: Օգտակար լրացուցիչ տեսանյութեր. Հացի տախտակի վրա տեղադրված մոդելավորված շրջան (Proto
Ձայնի կառավարում - Arduino + Ethernet Shield (մոդուլ) Wiznet ՝ 5 քայլ
Ձայնի կառավարում - Arduino + Ethernet Shield (մոդուլ) Wiznet. Բարի գալուստ: Այս ձեռնարկում ես ձեզ ցույց կտամ, թե ինչպես կառավարել Arduino- ն ձեր ձայնով ՝ ձեր դիտարկիչից ձեր ազգային լեզվով: Այս տեխնոլոգիան թույլ է տալիս օգտագործել աշխարհի յուրաքանչյուր լեզու տարածաշրջանի հետ: Օրինակ, այս ձեռնարկը կօգտագործի տեղայնացման
Տան ավտոմատացում Ձայնի կառավարում Arduino Uno- ի և Bluetooth- ի միջոցով. 4 քայլ
Տան ավտոմատացում Ձայնի կառավարում Arduino Uno- ի և Bluetooth- ի միջոցով. Այս նախագիծը վերաբերում է Arduino- ի և Android բջջայինի հետ Bluetooth մոդուլին միացնելուն ՝ ձայնի կառավարման միջոցով սենյակում լույսերն ու օդափոխիչը միացնելու համար:
Սեղանի ոլորման անիվ և ձայնի կառավարում. 8 քայլ (նկարներով)
Desktop Scroll Wheel and Volume Control. Ամեն օր ես կկարդամ engadget, lifehacker, hackaday, BBG և MAKE: բլոգի վերջին գրառումները: Ինձ համար խնդիրը ծագեց, երբ հասկացա, որ
Ունիվերսալ ականջակալ/ականջակալների ձայնի ձայնի կառավարում. 8 քայլ (նկարներով)
Ունիվերսալ ականջակալ/ականջակալների ձայնի ձայնի կառավարում. Այսպիսով, ես Հոնկոնգից գնեցի PMP (դյուրակիր մեդիա նվագարկիչ), որպեսզի կարողանամ խաղալ NES- ի խաղերը ինքնաթիռի էմուլյատորի հետ, որտեղ հարմար էր: Երկար ճանապարհորդությունները, թռիչքները, սպասասրահները և այլն այն վայրերն են, որոնք ես սիրում եմ ժամանակ սպանել շարժական միջոցներով, բայց