สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: ทฤษฎีการดำเนินงาน
- ขั้นตอนที่ 2: ถอด Dial
- ขั้นตอนที่ 3: พิมพ์สิ่งที่ส่งมาด้วย
- ขั้นตอนที่ 4: ตั้งโปรแกรม Arduino. ของคุณ
- ขั้นตอนที่ 5: วางสายทุกอย่างขึ้น
- ขั้นตอนที่ 6: การประกอบ
- ขั้นตอนที่ 7: ตั้งค่า Python Script
วีดีโอ: Vintage Rotary Phone Dial PC Volume Control: 7 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
หากคุณเป็นเหมือนฉัน คุณพบว่าตัวเองเปลี่ยนระดับเสียงบนคอมพิวเตอร์ของคุณค่อนข้างบ่อย วิดีโอบางรายการดังกว่าวิดีโออื่นๆ ในบางครั้งคุณต้องการปิดเสียงบนคอมพิวเตอร์ของคุณในขณะที่คุณฟังพ็อดคาสท์หรือเพลง และคุณอาจต้องลดระดับเสียงอย่างรวดเร็วหากคุณรับสาย หากคุณไม่มีตัวควบคุมสื่อในคอมพิวเตอร์ของคุณ คุณสามารถเปลี่ยนแป้นหมุนโทรศัพท์แบบหมุนโบราณเป็นตัวควบคุมระดับเสียงสำหรับพีซี Windows ของคุณได้
อุปกรณ์ควบคุมระดับเสียงนี้เสียบเข้ากับคอมพิวเตอร์ของคุณผ่าน USB และจะตั้งค่าระดับเสียงของโปรแกรมที่เปิดอยู่ทุกรายการโดยอัตโนมัติเป็นหมายเลขใดก็ตามที่คุณหมุน หากคุณกด "2 " ระดับเสียงจะถูกตั้งไว้ที่ 20% กด "8" และจะถูกตั้งค่าเป็น 80% การหมุนหมายเลข "0" จะเป็นการตั้งค่า 0% และทำหน้าที่เหมือนปิดเสียง รวดเร็ว น่าพอใจ และสนุกมากกว่าการคลิกตัวควบคุมระดับเสียงในแถบงานของคุณ
เสบียง
- Vintage Bell Systems โทรศัพท์โรตารี่ Trimline
- Arduino นาโน
- เม็ดมีดชุดความร้อนเกลียว M3
- สกรูเครื่อง M3
- ตัวต้านทาน (470 โอห์มและ 10k โอห์ม)
- ลวด
- เข้าถึงเครื่องพิมพ์ 3 มิติ
ขั้นตอนที่ 1: ทฤษฎีการดำเนินงาน
โทรศัพท์แบบหมุน รวมทั้ง Bell Systems Trimline ที่ใช้ในโครงการนี้ เป็นอุปกรณ์ไฟฟ้าแบบแอนะล็อกล้วนๆ เมื่อคุณหมุนแป้นหมุน สปริงจะหมุนแป้นหมุนกลับไปที่ตำแหน่งเดิม เมื่อส่งผ่านแต่ละหมายเลข สวิตช์จะถูกตัดการเชื่อมต่อ (หรือเชื่อมต่อ) ชั่วขณะหนึ่ง ทำให้เกิดพัลส์ สิ่งที่เราต้องทำคือนับพัลส์เหล่านั้นเพื่อกำหนดว่าโทรออกหมายเลขใด
guidomax มีบทช่วยสอน Instructables ที่ยอดเยี่ยม ซึ่งจะเจาะลึกถึงวิธีการทำงาน และคุณสามารถหารายละเอียดเพิ่มเติมได้ที่นั่น
สำหรับโครงงานนี้ เราใช้ Arduino Nano เพื่อนับพัลส์ Arduino จะส่งหมายเลขไปยังพีซีผ่านการเชื่อมต่อแบบอนุกรม ฉันเขียนสคริปต์ Python พื้นฐานที่ทำงานในพื้นหลังและตรวจสอบการเชื่อมต่อแบบอนุกรมนั้น เมื่อได้รับบิต จะใช้ตัวเลขและใช้ไลบรารี Python Core Audio Windows เพื่อตั้งค่าระดับเสียงที่เหมาะสม
เนื่องจากข้อจำกัดของ Windows และไลบรารีนั้น สคริปต์ไม่ได้ตั้งค่าไดรฟ์ข้อมูลระบบโดยรวม (ตัวเลื่อนหลักในแถบงานของคุณ) แต่จะกำหนดระดับเสียงแต่ละรายการสำหรับทุกโปรแกรมที่กำลังทำงานอยู่ เอฟเฟกต์จะเหมือนกัน ยกเว้นว่าคุณไม่สามารถรักษาระดับเสียงที่สัมพันธ์กันระหว่างโปรแกรมต่างๆ ได้
ขั้นตอนที่ 2: ถอด Dial
ขั้นตอนนี้ตรงไปตรงมา: เพียงถอดแยกชิ้นส่วนโทรศัพท์ Trimline ของคุณเพื่อถอดกลไกการโทรออก โดยพื้นฐานแล้วมันเป็นโมดูลในตัวเอง คุณเพียงแค่ต้องคลายเกลียวออกจากโทรศัพท์
ฉันเลือกรุ่น Trimline สำหรับโปรเจ็กต์นี้ เนื่องจากโมดูลหน้าปัดนั้นกะทัดรัดกว่ารุ่นที่คุณพบในโทรศัพท์แบบโรตารี่รุ่นอื่นๆ ส่วนใหญ่
หากคุณลองทดสอบสปินสักสองสามรอบ คุณจะได้ยินสวิตช์คลิกหายไปเมื่อกลับมาที่ตำแหน่งเริ่มต้น
ขั้นตอนที่ 3: พิมพ์สิ่งที่ส่งมาด้วย
ใช้ไฟล์ STL สองไฟล์ที่ให้มาเพื่อพิมพ์ส่วนกล่องหุ้ม คุณสามารถใช้วัสดุเส้นใยใดก็ได้ที่คุณต้องการ (ฉันใช้ PLA) การตั้งค่าเฉพาะที่คุณใช้ไม่สำคัญ แต่ฉันแนะนำให้ใช้การรองรับสำหรับส่วน "Rotary_Top" คุณสามารถพิมพ์สองส่วนนี้ในขณะที่คุณทำงานส่วนที่เหลือของโครงการ
ขั้นตอนที่ 4: ตั้งโปรแกรม Arduino. ของคุณ
รหัสที่คุณจะอัปโหลดไปยัง Arduino Nano นั้นนำมาจากบทช่วยสอนของ guidomax โดยตรง เนื่องจากมันทำงานได้อย่างสมบูรณ์แบบสำหรับโครงการนี้:
int needToPrint = 0; จำนวน int; int ใน = 2;
int lastState = ต่ำ;
int trueState = ต่ำ;
LastStateChangeTime ยาว = 0;
ล้าง int = 0;
// ค่าคงที่
int dialHasFinishedRotatingAfterMs = 100;
int debounceDelay = 10;
การตั้งค่าเป็นโมฆะ () {
Serial.begin(9600);
pinMode(ใน, INPUT); }
วงเป็นโมฆะ () {
การอ่าน int = digitalRead (ใน);
if ((millis() - lastStateChangeTime) > dialHasFinishedRotatingAfterMs) { // ไม่ได้หมุนหมายเลข หรือเพิ่งจะหมุนเสร็จ
if (needToPrint) { // หากเพิ่งโทรออก เราจำเป็นต้องส่งหมายเลขลงบรรทัดซีเรียล // และรีเซ็ตการนับใหม่ เราปรับการนับด้วย 10 เพราะ '0' จะส่ง 10 พัลส์
Serial.print (นับ 10%, ธ.ค.);
needToPrint = 0;
นับ = 0;
เคลียร์ = 0; } }
ถ้า (อ่าน != lastState) { lastStateChangeTime = millis();
}
if ((millis() - lastStateChangeTime) > debounceDelay) { // debounce - สิ่งนี้จะเกิดขึ้นเมื่อเสถียร
if (reading != trueState) { // หมายความว่าสวิตช์เพิ่งหายไปจาก closed->open หรือกลับกัน trueState = การอ่าน; if (trueState == HIGH) { // เพิ่มจำนวนพัลส์ถ้ามันสูง
นับ++;
needToPrint = 1; // เราจะต้องพิมพ์หมายเลขนี้ (เมื่อหมุนเสร็จแล้ว)
}
}
}
LastState = การอ่าน; }
ขั้นตอนที่ 5: วางสายทุกอย่างขึ้น
การเดินสายสำหรับโครงการนี้ง่ายมาก โมดูลหน้าปัดควรมีเสาหกเหลี่ยมสองเสาที่ด้านหลังพร้อมสกรู นั่นคือการเชื่อมต่อสวิตช์ ขั้วไม่สำคัญ
หมายเหตุ: ละเว้นสีของสายไฟของฉันในรูปถ่าย ฉันผสมกราวด์กับ 5V ดังนั้นสิ่งเหล่านี้จึงกลับกัน
ต่อสายหนึ่งเส้นจาก Post A (GND) และเชื่อมต่อกับขากราวด์บน Arduino Nano ของคุณ ใช้ลวดเส้นที่สองแล้วบัดกรีและลวดที่สามไปทางด้านหนึ่งของตัวต้านทาน 470 โอห์ม สายที่สองจะไปที่ Post B (+) บนหน้าปัด สายที่สามจะถูกบัดกรีที่ด้านหนึ่งของตัวต้านทาน 10k ohm ใช้ลวดเส้นที่สี่แล้วบัดกรีจากอีกด้านหนึ่งของตัวต้านทาน 470 โอห์มไปที่ Pin 2 บน Arduino Nano ในที่สุด สายที่ห้าควรเชื่อมต่ออีกด้านหนึ่งของตัวต้านทาน 10k ohm กับพิน 5V บน Arduino Nano
เราใช้ตัวต้านทานและพิน 5V เพื่อดึงพินให้สูงเมื่อเปิดสวิตช์
ขั้นตอนที่ 6: การประกอบ
คุณควรสังเกตว่าส่วน Rotary_Top ของกล่องหุ้มมีรูเล็กๆ หกรู สิ่งเหล่านี้มีไว้สำหรับเม็ดมีดชุดความร้อนแบบเกลียวของคุณ ด้านบนสาม (ด้านล่างของพื้นผิวด้านบน) จะติดตั้งแป้นหมุน สามด้านล่างคือการขัน Rotary_Base กับ Rotary_Top
เม็ดมีดชุดความร้อนสามารถทำให้ร้อนด้วยหัวแร้ง (หรือเครื่องมือเฉพาะ) แล้วดันเข้าไปในรู ความร้อนจะทำให้พลาสติกละลาย ซึ่งจะแข็งตัวหลังจากนำความร้อนออกเพื่อยึดเม็ดมีดให้เข้าที่ การใช้เม็ดมีดชุดความร้อนทำได้ดีกว่าการขันเกลียวเข้ากับพลาสติกโดยตรง
ใส่เม็ดมีดชุดความร้อนหกชิ้น จากนั้นใช้สกรูเครื่อง M3 แบบสั้น (10 มม. หรือมากกว่านั้น) เพื่อยึดแป้นหมุน สังเกตรอยบากในคัตเอาท์ ซึ่งเป็นตำแหน่งที่นิ้วโลหะจะหยุด จากนั้นวางสาย Arduino Nano-with USB อย่างระมัดระวังภายในกล่องหุ้ม (หลวม ไม่ได้ติดตั้ง) แล้วขันฐานให้เข้าที่
คุณอาจต้องการใช้เทปสองหน้าหรือแถบคำสั่ง 3M เพื่อติดโครงเข้ากับโต๊ะทำงานของคุณ ดังนั้นจึงไม่เคลื่อนที่ไปมาเมื่อคุณหมุนแป้นหมุน
ขั้นตอนที่ 7: ตั้งค่า Python Script
ขั้นแรก ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Python แล้ว (ใช้ Python 3 เนื่องจาก Python 2 กำลังจะเลิกใช้)
จากนั้น คุณจะต้องติดตั้งไลบรารีที่จำเป็นสองไลบรารี: PyCAW และ PySerial
ใช้:
"pip ติดตั้ง pycaw" และ "pip ติดตั้ง 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
แนะนำ:
LED Volume Bar: 9 ขั้นตอน (พร้อมรูปภาพ)
LED Volume Bar: เวิร์กชอปของฉันดูจืดชืดเกินไป แม้จะเคลือบเงาแล้ว แผ่นไม้สไตล์ 80s-Esque ที่ครอบคลุมผนังของฉัน แต่ก็ขาดทั้งสีและแน่นอน: ไฟ LED ในทำนองเดียวกัน ฉันมักจะเล่นเพลงขณะบัดกรีอุปกรณ์อิเล็กทรอนิกส์ สิ่งนี้ทำให้ฉันคิดว่าฉันจะรวมเพลงและไฟ LED เข้าด้วยกันได้ไหม
สร้าง Tank Volume Reader ในราคาต่ำกว่า 30 ดอลลาร์ โดยใช้ ESP32: 5 ขั้นตอน (พร้อมรูปภาพ)
สร้างเครื่องอ่านปริมาณถังน้ำมันในราคาต่ำกว่า 30 เหรียญโดยใช้ ESP32: Internet of Things ได้นำแอพพลิเคชั่นอุปกรณ์ที่ซับซ้อนก่อนหน้านี้มาสู่บ้านของผู้ผลิตคราฟต์เบียร์และผู้ผลิตไวน์จำนวนมาก การประยุกต์ใช้งานกับเซ็นเซอร์ระดับถูกใช้มาเป็นเวลาหลายทศวรรษในโรงกลั่นขนาดใหญ่ โรงบำบัดน้ำ และเคมี
3D Printed Flashing LED Dial Clock: 7 ขั้นตอน (พร้อมรูปภาพ)
นาฬิกาหน้าปัด LED กระพริบ 3D ที่พิมพ์: ยินดีต้อนรับสู่คำสั่งของ Yantrah! พวกเราที่ Yantrah มุ่งเน้นไปที่การศึกษาภาคปฏิบัติ เราสอนการออกแบบ 3D CAD การเขียนโปรแกรม STEAM และหุ่นยนต์ นี่คือนาฬิกาที่พิมพ์ 3 มิติแบบง่ายโดยใช้ Arduino พร้อมไฟ LED กะพริบเพื่อแสดงชั่วโมง , นาทีและวินาทีที่ผ่านไป
Desktop Scroll Wheel และ Volume Control!: 8 ขั้นตอน (พร้อมรูปภาพ)
Desktop Scroll Wheel และ Volume Control!: สร้างโปรเจ็กต์สุดสัปดาห์ของนิตยสาร 3/4/09 พื้นหลังบางส่วนเมื่อเร็วๆ นี้ ฉันได้อ่านบล็อกต่างๆ มากมาย ในแต่ละวัน ฉันจะอ่านโพสต์ล่าสุดเกี่ยวกับ engadget, lifehacker, hackaday, BBG และบล็อก MAKE: ปัญหาสำหรับฉันเกิดขึ้นเมื่อฉันรู้ว่าโอ
Universal Earbud/Headphone Volume Control: 8 ขั้นตอน (พร้อมรูปภาพ)
Universal Earbud/Headphone Volume Control: ดังนั้นฉันจึงซื้อ PMP (Portable Media Player) จากฮ่องกงเพื่อที่ฉันจะได้เล่นเกม NES ของฉันด้วยโปรแกรมจำลองออนบอร์ดได้ทุกที่ที่สะดวก การเดินทางไกล เที่ยวบิน ห้องรอ ฯลฯ เป็นสถานที่ที่ฉันชอบฆ่าเวลาด้วยสื่อพกพา แต่