Мазмуну:

Vintage Rotary Phone Dial PC Volume Control: 7 кадам (Сүрөттөр менен)
Vintage Rotary Phone Dial PC Volume Control: 7 кадам (Сүрөттөр менен)

Video: Vintage Rotary Phone Dial PC Volume Control: 7 кадам (Сүрөттөр менен)

Video: Vintage Rotary Phone Dial PC Volume Control: 7 кадам (Сүрөттөр менен)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Ноябрь
Anonim
Image
Image
Терүүнү алып салуу
Терүүнү алып салуу

Эгерде сиз мага окшош болсоңуз, анда сиз компьютериңиздин үнүн тез -тез өзгөртүп турасыз. Кээ бир видеолор башкаларга караганда катуураак болот, кээде подкасттарды же музыканы угуп жатканда компьютериңиздин үнүн баскыңыз келет, эгер сизге телефон чалуу келсе, анын үнүн тез эле азайтып коюңуз. Эгерде сизде компьютериңизде медиа көзөмөл жок болсо, анда винтаждык телефондук тергичти Windows компьютериңиздин үнүн башкарууга айландырсаңыз болот.

Бул үндү көзөмөлдөөчү түзүлүш USB аркылуу компьютериңизге туташат жана ар бир ачык программанын үнүн сиз каалаган номерге автоматтык түрдө коет. Эгер "2" терсеңиз, анда үн 20%га коюлат. "8" териңиз, ал 80%га коюлат. "0" терүү аны 0% га коёт жана үнсүз сыяктуу иштейт. Бул тез, канааттандырарлык жана тапшырма тилкесиндеги үндү көзөмөлдөөнү чыкылдатууга караганда кызыктуу.

Жабдуулар

  • Vintage Bell Systems Trimline айлануучу телефону
  • Arduino Nano
  • М3 жип менен жылытылган
  • M3 машина бурамалары
  • Резисторлор (470 Ом жана 10k Ом)
  • Зым
  • 3D принтерге кирүү

1 -кадам: Иштөө теориясы

Ротари телефондор, анын ичинде Bell Systems Trimline бул долбоордо колдонулган, аналогдук электромеханикалык түзүлүштөр. Сиз тергичти бурганда, пружина тергичти баштапкы абалына кайтарат. Ал ар бир номерди өткөрүп жатканда, которгуч кыска убакытка ажыратылат (же туташат), импульс жаратат. Биз эмне кылышыбыз керек, бул импульстарды санап, кайсы номер терилгенин аныктоо.

Гидомакстын фантастикалык Instructables окуу куралы бар, ал мунун кандайча иштээрин тереңирээк түшүндүрөт жана сиз ал жерден кененирээк маалымат таба аласыз.

Бул долбоор үчүн биз импульстарды эсептөө үчүн Arduino Nano колдонобуз. Андан кийин Arduino номерди сериялык туташуу аркылуу ЖКга жөнөтөт. Мен фондо иштеген жана ошол сериялык байланышты көзөмөлдөгөн негизги Python скриптин жаздым. Ал бит алганда, ал номерди алат жана тиешелүү көлөмдү коюу үчүн Python Core Audio Windows китепканасын колдонот.

Windows жана ошол китепкана менен чектелгендиктен, скрипт системанын жалпы көлөмүн (тапшырмалар панелиндеги башкы сыдырма) орнотпойт. Анын ордуна, ал учурда иштеп жаткан ар бир программанын жеке көлөмүн белгилейт. Эффект бирдей, бирок сиз программалардын ортосундагы ар кандай салыштырмалуу көлөмдөрдү сактай албайсыз.

2 -кадам: Терүүнү алып салуу

Терүүнү алып салуу
Терүүнү алып салуу

Бул кадам жөнөкөй: терүү механизмин алып салуу үчүн Trimline телефонуңузду бөлүп алыңыз. Бул негизи өзүнчө модуль, андыктан аны жөн гана трубкадан чечип алуу керек.

Мен бул долбоор үчүн Trimline моделин тандап алгам, анткени ал терүү модулу башка ротациялык телефондордо кездешкендерге караганда компактыраак.

Эгер сиз ага бир нече сыноолорду берсеңиз, анда үй позициясына кайтып келгенде, которгучтун басылганын угушуңуз керек.

3 -кадам: Корпусту басып чыгаруу

Тиркемени басып чыгаруу
Тиркемени басып чыгаруу

Корпустун бөлүктөрүн басып чыгаруу үчүн берилген эки STL файлын колдонуңуз. Сиз каалаган жип материалын колдоно аласыз (мен PLA колдондум). Сиз колдонгон өзгөчө жөндөөлөр анча деле маанилүү эмес, бирок мен "Rotary_Top" бөлүгү үчүн колдоолорду колдонууну сунуштадым. Долбоордун калган бөлүгүндө иштеп жатканда бул эки бөлүктү басып чыгара аласыз.

4 -кадам: Сиздин Arduino программаңыз

Сиздин Arduino программаңыз
Сиздин Arduino программаңыз

Ардуино Наноңузга жүктөй турган код түз гидомакстын окуу куралынан алынат, анткени бул долбоор үчүн эң сонун иштейт:

int needToPrint = 0; int саны; int in = 2;

int lastState = LOW;

int trueState = LOW;

long lastStateChangeTime = 0;

int cleared = 0;

// константалар

int dialHasFinishedRotatingAfterMs = 100;

int debounceDelay = 10;

жараксыз орнотуу () {

Serial.begin (9600);

pinMode (Киргизүү, Киргизүү); }

void loop () {

int read = digitalRead (in);

if ((millis () - lastStateChangeTime)> dialHasFinishedRotatingAfterMs) {// терүү терилбей жатат, же жаңы эле терилип бүттү.

if (needToPrint) {// эгерде ал жөн гана терилип бүтсө, биз номерди сериялык // линиясына жөнөтүп, санды баштапкы абалга келтиришибиз керек. Биз эсепти 10го өзгөртөбүз, анткени "0" 10 импульсту жөнөтөт.

Serial.print (эсептөө % 10, DEC);

needToPrint = 0;

count = 0;

тазаланган = 0; }}

if (reading! = lastState) {lastStateChangeTime = millis ();

}

if ((millis () - lastStateChangeTime)> debounceDelay) {// debounce - бул стабилдештирилгенден кийин болот

if (reading! = trueState) {// бул которгуч жабык-> ачыктан же тескерисинче жөнөдү дегенди билдирет. trueState = окуу; if (trueState == HIGH) {// эгер ал жогорулап кетсе, импульстардын санын көбөйтүү.

count ++;

needToPrint = 1; // биз бул номерди басып чыгарышыбыз керек (тергич айланып бүткөндөн кийин)

}

}

}

lastState = окуу; }

5 -кадам: Баарын жипке байлаңыз

Wire Up Up
Wire Up Up
Wire Up Up
Wire Up Up
Wire Up Up
Wire Up Up

Бул долбоордун зымдары чынында эле жөнөкөй. Терүү модулунун артында бурамалары бар эки алты бурчтуу посттор болушу керек. Бул которуштуруучу туташуулар. Полярдуулуктун мааниси жок.

Эскертүү: сүрөттөрдөгү зымдарымдын түстөрүнө көңүл бурбаңыз. Мен жер менен 5В аралаштырдым, андыктан булар тескерисинче.

Post Aдан (GND) бир зымды туташтырып, аны Arduino Nanoдогу жерге туташтыргычка туташтырыңыз. Экинчи зымды алып, аны жана үчүнчү зымды 470 Ом каршылыгынын бир жагына кошуңуз. Экинчи зым терүүдө B (+) постуна барат. Үчүнчү зым 10к Ом резистордун бир жагына ширетилет. Төртүнчү зымды алып, аны 470 омдук резистордун экинчи тарабынан Arduino Nano'го 2 -пинге чейин кошуңуз. Акырында, бешинчи зым 10k ohm резисторунун экинчи тарабын Arduino Nanoдогу 5V пинке туташтырышы керек.

Биз резисторлорду жана 5В пинди колдонуп, которгуч ачык болгондо пинди жогору көтөрөбүз (бул ар бир "импульс" учурунда).

6 -кадам: Ассамблея

Ассамблея
Ассамблея
Ассамблея
Ассамблея

Сиз корпустун Rotary_Top бөлүгүндө алты кичинекей тешик бар экенин байкашыңыз керек. Булар сиздин жылуу орнотулган оюктарыңыз үчүн. Үчөө (үстүңкү бетинин асты жагында) айлануучу дөңгөлөктү орнотушу керек. Төмөнкү үчөө Rotary_Base'ди Rotary_Topко буроо.

Жылуулук орнотулган кыстармаларды ширетүүчү темир (же атайын шайман) менен ысытып, анан тешиктерге түртсө болот. Жылуулук пластмассаны эритип жиберет, ал жылууларды алып салгандан кийин катууларын бекем кармап турат. Жылуулукту орнотуу үчүн пластинкага бурамаларды сайгандан алда канча жагымдуу.

Алты жылуулук орнотулган кыстарманы салыңыз. Андан кийин терүүнү орнотуу үчүн бир нече кыска (10 мм же андан көп) M3 машинанын бурамаларын колдонуңуз. Металлдын манжасы токтой турган жерде оюктун оюкчасына көңүл буруңуз. Андан кийин этияттык менен Arduino Nano кабелин туташтырылган USB кабели менен корпустун ичине салыңыз (ал бош, орнотулган эмес) жана базаны ордуна сайыңыз.

Сиз, балким, эки жактуу скотч же 3M буйрук тилкелерин коргоону столго жабыштыргыңыз келет, андыктан тергичти бурганда ал жылбайт.

7 -кадам: Python скриптин орнотуу

Python скриптин орнотуу
Python скриптин орнотуу

Биринчиден, Python орнотулгандыгын текшериңиз (Python 2 колдонулуп жатат, анткени Python 3 колдонуңуз).

Андан кийин эки керектүү китепкананы орнотушуңуз керек: 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дон сериялык туташууну көзөмөлдөйт жана программанын бардык көлөмүн сиз терген нерсеге орнотот!

Ардуино сынагы 2020
Ардуино сынагы 2020
Ардуино сынагы 2020
Ардуино сынагы 2020

Ардуино 2020 конкурсунда экинчи орун

Сунушталууда: