สารบัญ:
- ขั้นตอนที่ 1: เครื่องมือและวัสดุ
- ขั้นตอนที่ 2: ติดกรอบไม้เข้าด้วยกัน
- ขั้นตอนที่ 3: ตัดเฟรมโดยใช้จิ๊กตัดวงกลม
- ขั้นตอนที่ 4: พิมพ์และประกอบ Gears
- ขั้นตอนที่ 5: ส่วน "กาว" เข้าด้วยกัน
- ขั้นตอนที่ 6: ตัดการบรรเทาในกรอบ
- ขั้นตอนที่ 7: ตัดระยะห่างสำหรับเซนเซอร์ Hall Effect
- ขั้นตอนที่ 8: กาววงแหวนรอบนอก
- ขั้นตอนที่ 9: ตัดสกรูปรับเซนเซอร์ Hall Effect
- ขั้นตอนที่ 10: กาววงแหวนกับ Hardboard
- ขั้นตอนที่ 11: กาวแผ่นด้านใน
- ขั้นตอนที่ 12: แนบ Veneer
- ขั้นตอนที่ 13: ตัดแต่งวีเนียร์
- ขั้นตอนที่ 14: ตัดวีเนียร์
- ขั้นตอนที่ 15: แผ่นไม้อัดกาว
- ขั้นตอนที่ 16: ทรายและเสร็จสิ้น
- ขั้นตอนที่ 17: ติดตั้ง Power
- ขั้นตอนที่ 18: ประกอบอุปกรณ์อิเล็กทรอนิกส์
- ขั้นตอนที่ 19: ประสานและเชื่อมต่ออุปกรณ์อิเล็กทรอนิกส์
- ขั้นตอนที่ 20: แผ่นหลัง
- ขั้นตอนที่ 21: รหัส Arduino
- ขั้นตอนที่ 22: ไฟล์ STL
- ขั้นตอนที่ 23: ไฟล์ Solidworks
- ขั้นตอนที่ 24: บทสรุป
วีดีโอ: นาฬิกาแขวนแม่เหล็กที่ชวนให้หลงใหล: 24 ขั้นตอน (พร้อมรูปภาพ)
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
นาฬิกาจักรกลทำให้ฉันหลงไหลอยู่เสมอ วิธีที่เกียร์ภายใน สปริง และเอสเคปเมนต์ทั้งหมดทำงานร่วมกันเพื่อให้ได้นาฬิกาที่ไว้วางใจได้อย่างต่อเนื่องนั้นดูจะเกินเอื้อมสำหรับชุดทักษะที่จำกัดของฉันเสมอ โชคดีที่อุปกรณ์อิเล็กทรอนิกส์สมัยใหม่และชิ้นส่วนที่พิมพ์ 3 มิติสามารถเชื่อมช่องว่างเพื่อสร้างสิ่งที่เรียบง่ายที่ไม่ต้องพึ่งพาชิ้นส่วนโลหะที่แม่นยำขนาดเล็ก
นาฬิกาแขวนผนังแบบมินิมอลนี้ซ่อนเฟืองวงแหวนพิมพ์ 3 มิติซึ่งขับเคลื่อนด้วยสเต็ปเปอร์มอเตอร์ราคาไม่แพงที่หมุนแม่เหล็กด้านหลังแผ่นไม้อัดวอลนัทแบบคลาสสิก
เริ่มแรกโดยได้รับแรงบันดาลใจจาก STORY Clock ฉันต้องการนาฬิกาที่ระบุเวลาของวันโดยใช้ตลับลูกปืนเท่านั้น เทียบกับการอ่านข้อมูลดิจิทัลและลูกบอลที่เคลื่อนที่ช้าซึ่งผลิตภัณฑ์ใช้
ขั้นตอนที่ 1: เครื่องมือและวัสดุ
วัสดุ:
- ไม้อัด/พาร์ติเคิลบอร์ด 13 x 13 x 2 นิ้ว (ฉันติดเศษไม้ 3 ชิ้นเข้าด้วยกัน)
- ฮาร์ดบอร์ด 13 x 13 นิ้ว
- Arduino นาโน
- นาฬิกาเรียลไทม์
- สเต็ปเปอร์มอเตอร์และไดรเวอร์
- เซนเซอร์ Hall Effect
- แม่เหล็ก
- สายไฟ
- อะแดปเตอร์ AC
- ปลั๊ก
- สกรูเครื่องคละ
- สกรูไม้สารพัน
- ชิ้นส่วนที่พิมพ์ 3 มิติ (ขั้นตอนสุดท้าย)
- วีเนียร์ (12 x 12 นิ้ว - หน้า ยาว 40 นิ้ว)
- สเปรย์แลคเกอร์
- สีสเปรย์สีดำ
เครื่องมือ:
- เครื่องพิมพ์ 3 มิติ
- เข็มทิศ
- มีด X-acto
- กาว
- ที่หนีบ
- จิ๊กตัดวงกลม
- สับเลื่อย
- เครื่องขัดดิสก์
- วงล้อหนีบ
- สิ่ว
- ไม้บรรทัด
- แซนเดอร์
- สว่าน
- ไขควง
- หัวแร้ง
- ปืนกาวร้อน
ขั้นตอนที่ 2: ติดกรอบไม้เข้าด้วยกัน
กาวไม้สามชิ้นที่จะประกอบเป็นกรอบของนาฬิกา ฉันใช้แผ่นไม้อัดรีเคลมจากโครงเตียงเก่า
ขั้นตอนที่ 3: ตัดเฟรมโดยใช้จิ๊กตัดวงกลม
ทำเครื่องหมายที่กึ่งกลางของกระดานและติดตั้งเข้ากับจิ๊กตัดวงกลม ตัดวงกลมห้าวงด้วยเส้นผ่านศูนย์กลางต่อไปนี้:
- 12 นิ้ว
- 11 1/4 นิ้ว
- 9 1/4 นิ้ว
- 7 1/4 นิ้ว
- 5 3/8 นิ้ว
ขั้นตอนที่ 4: พิมพ์และประกอบ Gears
เฟืองวงแหวนแบ่งออกเป็นส่วนๆ เพื่อให้สามารถพิมพ์บนเครื่องพิมพ์ขนาดเล็กและประกอบเข้าด้วยกันได้ ชิ้นส่วนทั้งหมดถูกพิมพ์ด้วย ABS เพื่อช่วยในกระบวนการหลอมรวมที่แสดงในขั้นตอนต่อไป ทรายขอบและพื้นผิวของชิ้นส่วนทั้งหมด
พิมพ์จำนวนชิ้นส่วนที่พบในขั้นตอนที่ 22 ดังต่อไปนี้:
- แม่เหล็กเซ็กเมนต์วงแหวนเกียร์ 1 ชั่วโมง
- พื้นฐานเซกเมนต์วงแหวนเกียร์ 6 ชั่วโมง
- 1 - วงแหวนยึดส่วนยึดแบบสเต็ปเปอร์
- พื้นฐานส่วนแหวนยึด 6 ชั่วโมง
- 1 - ที่วางเซนเซอร์ Hall Effect แบบชั่วโมง
- 1 - แม่เหล็กส่วนวงแหวนเฟืองนาที
- 7 - นาที Ring Gear Segment พื้นฐาน
- 1 - ขายึดส่วนแหวนยึดแบบนาที
- 6 - พื้นฐานส่วนแหวนยึดนาที
- 1 - ที่วางเซนเซอร์ Hall Effect แบบนาที
- 2 - เดือยเกียร์
- 1 - แท่นยึดอุปกรณ์อิเล็กทรอนิกส์
ขั้นตอนที่ 5: ส่วน "กาว" เข้าด้วยกัน
ในขวดแก้วที่มีอะซิโตน ให้ละลายพิมพ์วัสดุรองรับเก่าที่ล้มเหลว ฯลฯ ทาสีส่วนผสมอะซิโตนในแต่ละตะเข็บเพื่อหลอมรวมชิ้นส่วนเข้าด้วยกัน เมื่อบ่มแล้วให้ทรายแต่ละตะเข็บเรียบ
ขั้นตอนที่ 6: ตัดการบรรเทาในกรอบ
ใส่เฟืองวงแหวนและวงแหวนยึดในเฟรม และตัดส่วนนูนสำหรับสเต็ปเปอร์มอเตอร์ ฉันวัดและตัดวงแหวนด้านในให้ใหญ่เกินไป ฉันจึงปรับขนาดมันโดยใช้แถบขอบเมเปิ้ลที่ฉันมีอยู่รอบๆ ร้าน
ขั้นตอนที่ 7: ตัดระยะห่างสำหรับเซนเซอร์ Hall Effect
ตัดรูช่องว่างผ่านวงแหวนด้านในสำหรับเซ็นเซอร์เอฟเฟกต์ Hall แบบนาที และช่องเสียบสำหรับเซ็นเซอร์เอฟเฟกต์ Hall แบบชั่วโมง ฉันใช้สิ่ว ตะไบ และเลื่อยมือเล็กๆ เพื่อตัดช่องว่างเหล่านี้
ขั้นตอนที่ 8: กาววงแหวนรอบนอก
กาวและเทปกาวที่วงแหวนรอบนอกขนาดของวงแหวนยึดนาที
ขั้นตอนที่ 9: ตัดสกรูปรับเซนเซอร์ Hall Effect
ตัดสกรูของเครื่องจักรด้วยเลื่อยฉลุเพื่อให้ยาวกว่าความหนาของวงแหวนยึดและที่ยึดเซ็นเซอร์เอฟเฟกต์ฮอลล์ ตัดช่องในเกลียวเพื่อให้สามารถปรับได้จากปลายเกลียวด้วยไขควงปากแบน
ขั้นตอนที่ 10: กาววงแหวนกับ Hardboard
ตัดฮาร์ดบอร์ดเป็นวงกลมให้ใหญ่กว่าวงแหวนรอบนอก กาววงแหวนด้านนอกและด้านในเข้ากับหน้าฮาร์ดบอร์ด ใช้วงแหวนยึดนาทีและเฟืองวงแหวนเพื่อวางวงแหวนด้านใน ให้ความสนใจดีกว่าฉันไม่ได้ติดกาววงแหวนด้านในไว้ข้างหลัง ภาพที่ 2 แสดงการตัดช่องใหม่สำหรับเซ็นเซอร์เอฟเฟกต์ฮอลล์แบบนาที
ใช้เครื่องขัดดิสก์เพื่อตัดฮาร์ดบอร์ดให้มีขนาดเท่ากับวงแหวนรอบนอก
ขั้นตอนที่ 11: กาวแผ่นด้านใน
กาวแผ่นด้านในเข้าที่โดยใช้วงแหวนยึดชั่วโมงและเฟืองวงแหวนเพื่อวางแผ่นดิสก์ด้านใน
ขั้นตอนที่ 12: แนบ Veneer
ตัดแถบแผ่นไม้อัดให้กว้างกว่านาฬิกาให้ลึกและยาวพอที่จะพันรอบนาฬิกาได้ (เส้นผ่านศูนย์กลาง 3.14 * ของนาฬิกาจะคืนความยาวที่ต้องการ เพิ่มอีกหนึ่งนิ้วเพื่อให้แน่ใจว่าคุณมีเพียงพอ) ติดแผ่นไม้อัดให้พอดี ตัดให้ยาว ใช้กาวจำนวนมากกับแผ่นไม้อัดและยึดเข้าที่โดยใช้สายรัด ปล่อยให้แห้งสองสามชั่วโมงเพื่อให้แน่ใจว่ามีการยึดเกาะ
ขั้นตอนที่ 13: ตัดแต่งวีเนียร์
ใช้สิ่วคมตัดแผ่นไม้อัดส่วนเกินจากด้านหน้าและด้านหลังของนาฬิกา
ขั้นตอนที่ 14: ตัดวีเนียร์
แผ่นไม้อัดของฉันมีรอยแตกอยู่บ้าง เพื่อให้ทำงานได้ง่ายขึ้น ฉันติดเทปจิตรกรเพื่อยึดเข้าด้วยกัน ใช้มีด x-acto ในเข็มทิศ ตัดแผ่นไม้อัดให้ใหญ่กว่าหน้าปัดนาฬิกา
ขั้นตอนที่ 15: แผ่นไม้อัดกาว
ใช้วงแหวนตัดเพื่อกระจายแรงกดบนหน้าปัดนาฬิกา ใช้กาวปริมาณมากกับด้านที่ไม่ใช่เทปของแผ่นไม้อัด วางเม็ดเกรนในแนวตั้งบนหน้าปัดนาฬิกา และใช้ที่หนีบหลายๆ อันขันทีละอันทีละน้อย เพื่อให้แน่ใจว่าแผ่นไม้อัดไม่เลื่อนและมีแรงกดทับทั่วใบหน้า
ฉันใช้กระดานแบนสองสามแผ่นที่ด้านข้างของนาฬิกาและบางอันที่ด้านหลัง
ขั้นตอนที่ 16: ทรายและเสร็จสิ้น
ใช้กระดาษทรายลบแผ่นไม้อัดส่วนเกินออกจากหน้าปัดนาฬิกาและทรายโดยเริ่มจาก 220 กรวดถึง 600 กรวด
ใช้แล็กเกอร์ระหว่าง 10 ถึง 20 ชั้น สิ่งนี้จะสร้างพื้นผิวที่ตลับลูกปืนจะวิ่งตาม เนื่องด้วยฝุ่นละอองและอนุภาคอื่นๆ ในอากาศ ฉันคิดว่าเส้นจะปรากฏตามเส้นทางของตลับลูกปืนแต่ละเม็ดอย่างหลีกเลี่ยงไม่ได้ การทาเคลือบเพิ่มเติมควรล่าช้าออกไปให้นานที่สุด นอกจากนี้ยังจะทำให้การขัดสีในอนาคตง่ายขึ้นอีกด้วย ฉันจะอัปเดตขั้นตอนนี้หากมีเส้นปรากฏบนนาฬิกาของฉัน
ขั้นตอนที่ 17: ติดตั้ง Power
ใช้ดอกสว่านขนาด 27/64 นิ้ว เจาะรูที่ด้านล่างของนาฬิกาแล้วขันปลั๊กไฟให้เข้าที่
ขั้นตอนที่ 18: ประกอบอุปกรณ์อิเล็กทรอนิกส์
แนบไดรเวอร์ stepper และนาฬิกาเรียลไทม์กับบอร์ดอิเล็กทรอนิกส์ ฉันต้องการหาวิธีรักษาความปลอดภัย Arduino เพื่อเจาะรูและตัดช่องสำหรับผูกซิป เพิ่มคุณสมบัติเหล่านี้ลงในไฟล์ที่พบในขั้นตอนที่ 22 แล้ว
ขั้นตอนที่ 19: ประสานและเชื่อมต่ออุปกรณ์อิเล็กทรอนิกส์
ตามแผนภาพบล็อก ประสานส่วนประกอบทั้งหมดเข้าด้วยกัน กาวร้อนให้แหวนเข้าที่และยึดสายไฟที่หลงทางด้วยกาวร้อนเช่นกัน
ขั้นตอนที่ 20: แผ่นหลัง
สร้างแผ่นหลังโดยตัดวงกลมอีก 1/2 นิ้วให้ใหญ่กว่าหน้าปัดนาฬิกาและแหวนที่มีเส้นผ่านศูนย์กลางด้านในเท่ากับด้านหลังนาฬิกา กาววงแหวนและวงกลมพร้อมกับที่หนีบสปริง
เมื่อแห้งแล้ว ให้ขีดเส้นให้ใหญ่กว่าวงแหวนด้านใน 1/8 นิ้ว แล้วตัดแต่งให้ได้ขนาดโดยใช้เครื่องเลื่อยสายพานหรือเครื่องขัดดิสก์
ตัดช่องยาว 1 นิ้วกว้าง 1/4 นิ้วที่ด้านบนของด้านหลังโดยใช้เราเตอร์หรือดอกสว่าน เคาเตอร์ซิงค์สี่รูเพื่อยึดด้านหลังเข้ากับกรอบนาฬิกา
ใช้สีสเปรย์สีดำและติดกับนาฬิกาเมื่อแห้ง
ขั้นตอนที่ 21: รหัส Arduino
รหัส Arduino ถูกแสดงความคิดเห็นเช่นกัน โปรดทราบว่าฉันไม่ใช่โปรแกรมเมอร์ ฉันมีประสบการณ์ Arduino น้อยที่สุด (ใจดี) รหัสทำงานอย่างต่อเนื่องเพื่อตรวจสอบเพื่อดูว่าเวลาปัจจุบันตรงกับ "เวลารีเซ็ต" หรือไม่ เนื่องจากฉันคิดวิธีแปลเวลาปัจจุบันเป็นขั้นตอนไม่ได้ มันจึงแก้ไขตัวเองวันละครั้งเท่านั้น (ค่าเริ่มต้นคือเที่ยงคืน) เวลาเที่ยงคืนเกียร์จะหมุนไปที่ตำแหน่งเที่ยงคืน จากนั้นรอจนถึง 00:01 น. เพื่อเคลื่อนไปยังเวลานั้นจากนั้นจึงเดินต่อจากที่นั่น ในขณะที่มันนั่งอยู่ นาฬิกาจะสูญเสียไปเพียง 5 วินาทีในระยะเวลา 24 ชั่วโมงเท่านั้น
คุณจะต้องติดตั้งไลบรารี Stepper และ RTClib
ฉันรู้ว่าโค้ดนี้สามารถปรับให้เหมาะสมโดยผู้ที่มีประสบการณ์มากกว่าฉัน หากคุณพร้อมสำหรับความท้าทาย โปรดสร้างโครงการนี้ขึ้นมาใหม่ด้วยตัวคุณเองและแบ่งปันความรู้ของคุณ
#รวม
#รวม "RTClib.h" RTC_DS1307 rtc; #define oneRotation 2038 // จำนวนขั้นตอนในการหมุนหนึ่งครั้งของสเต็ปเปอร์มอเตอร์ 28BYJ-48 Stepper hourHand(oneRotation, 3, 5, 4, 6); Stepper นาทีมือ (oneRotation, 7, 9, 8, 10); #define hourStopSensor 12 #define minutesStopSensor 11 int endStep = 0; // เวลาจัดการความเร็วของนาฬิกา int setDelay1 = 168; int setDelay2 = 166; int setDelay3 = 5; // เวลาปัจจุบันในการทำคณิตศาสตร์ด้วย ลอย ชม = 0; ลอย mn = 0; ลอย sc = 0; // ตั้งเวลาของวันเพื่อรีเซ็ตนาฬิกา (รูปแบบ 24 ชั่วโมง) int รีเซ็ตชั่วโมง = 0; int resetMinute = 0; // ตัวแปรเพื่อตั้งเวลาที่ถูกต้องเมื่อเริ่มต้นและรีเซ็ต float setTimeStepHour = 0; float setTimeStepMinute = 0; float handDelay = 0; float hourTest = 0; ลอยนาทีทดสอบ = 0; การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); // ตั้งค่านาฬิกาตามเวลาจริงและรีเซ็ตเซ็นเซอร์เอฟเฟกต์ฮอลล์ pinMode(hourStopSensor, INPUT_PULLUP); pinMode(minuteStopSensor, INPUT_PULLUP); rtc.begin(); // Uncomment บรรทัดด้านล่างเพื่อตั้งเวลา // rtc.adjust(DateTime(2020, 2, 19, 23, 40, 30)); // rtc.adjust(DateTime(F(_DATE_), F(_TIME_)))); // ตั้งค่าความเร็วสูงสุดของสเต็ปเปอร์มอเตอร์ hourHand.setSpeed(15); นาที Hand.setSpeed(15); // วนซ้ำจนถึงเข็มนาทีและเข็มชั่วโมงตอนเที่ยงขณะที่ (digitalRead (hourStopSensor) == LOW || digitalRead (minuteStopSensor) == LOW) { if (digitalRead (hourStopSensor) == LOW) { hourHand.step (2); } อื่น ๆ { ล่าช้า (3); } if (digitalRead (minuteStopSensor) == ต่ำ) { minutesHand.step(3); } อื่น ๆ { ล่าช้า (4); } } while (digitalRead(hourStopSensor) != LOW || digitalRead(minuteStopSensor) != LOW) { if (digitalRead(hourStopSensor) != LOW) { hourHand.step(2); } อื่น ๆ { ล่าช้า (3); } if (digitalRead(minuteStopSensor) != LOW) { minutesHand.step(3); } อื่น ๆ { ล่าช้า (4); } } // รับเวลาปัจจุบัน DateTime now = rtc.now(); ชม = ตอนนี้ชั่วโมง (); mn = ตอนนี้นาที (); sc = ตอนนี้วินาที (); // เปลี่ยนเป็นรูปแบบ 12 ชั่วโมงถ้า (hr >= 12) { hr = hr - 12; } // ดูว่ามือใดต้องเดินข้ามใบหน้าต่อไปและใช้ระยะทางนั้น // เพื่อปรับเวลาที่ตั้งไว้ hourTest = ชม. / 12; นาทีทดสอบ = mn / 60; ถ้า (hourTest > minutesTest) { handDelay = hourTest; } อื่น { handDelay = นาทีทดสอบ; } // ตั้งค่าชั่วโมงปัจจุบัน setTimeStepHour = (ชม * 498) + (mn * 8.3) + ((sc + (handDelay * 36)) *.1383); // ตั้งค่านาทีปัจจุบัน setTimeStepMinute = (mn * 114) + ((sc + (handDelay * 45)) * 1.9); // ทดสอบว่ามือใดต้องการก้าวเพิ่มเติมและตั้งค่าให้นับจำนวนก้าวที่ยาวที่สุดสำหรับลูป for ถ้า (setTimeStepHour > setTimeStepMinute) { endStep = setTimeStepHour; } อื่น ๆ { endStep = setTimeStepMinute; } สำหรับ (int i = 0; i <= endStep; i++) { if (i < setTimeStepHour) { hourHand.step (2); } อื่น ๆ { ล่าช้า (3); } ถ้า (i < setTimeStepMinute) { นาที Hand.step(3); } อื่น ๆ { ล่าช้า (4); } } // ตั้งนาฬิกาให้ทำงาน RPM hourHand.setSpeed(1); นาทีHand.setSpeed(1); } วงเป็นโมฆะ () { // เริ่มการวนรอบของนาฬิกา สำหรับ (int i = 0; i < 22; i++) {minuteHand.step(1); ล่าช้า (setDelay1); // ทดสอบเวลารีเซ็ต ถ้าพร้อมจะรีเซ็ต ก็พัง ถ้า (rtc.now().hour() == resetHour && rtc.now().minute() == resetMinute) { break; } } ล่าช้า (setDelay3); สำหรับ (int i = 0; i <38; i++) { hourHand.step(1); ล่าช้า (setDelay1); // ทดสอบเวลารีเซ็ต ถ้าพร้อมจะรีเซ็ต ก็พัง ถ้า (rtc.now().hour() == resetHour && rtc.now().minute() == resetMinute) { break; } สำหรับ (int i = 0; i <20; i++) {minuteHand.step(1); ล่าช้า (setDelay2); // ทดสอบเวลารีเซ็ต ถ้าพร้อมจะรีเซ็ต ก็พัง ถ้า (rtc.now().hour() == resetHour && rtc.now().minute() == resetMinute) { break; } } } // รีเซ็ตนาฬิกาเมื่อถึงเวลารีเซ็ต ถ้า (rtc.now().hour() == resetHour && rtc.now().minute() == resetMinute) { // เปลี่ยนความเร็วของนาฬิกา hourHand.setSpeed(10); นาที Hand.setSpeed(10); // วนไปจนนาทีและเข็มชั่วโมงถึงเที่ยงวัน ในขณะที่ (digitalRead (hourStopSensor) == LOW || digitalRead (minuteStopSensor) == LOW) { if (digitalRead (hourStopSensor) == LOW) { hourHand.step (2); } อื่น ๆ { ล่าช้า (3); } if (digitalRead (minuteStopSensor) == ต่ำ) { minutesHand.step(3); } อื่น ๆ { ล่าช้า (4); } } while (digitalRead(hourStopSensor) != LOW || digitalRead(minuteStopSensor) != LOW) { if (digitalRead(hourStopSensor) != LOW) { hourHand.step(2); } อื่น ๆ { ล่าช้า (3); } if (digitalRead(minuteStopSensor) != LOW) { minutesHand.step(3); } อื่น ๆ { ล่าช้า (4); } } // รอที่นี่จนกว่าเวลารีเซ็ตจะผ่านไป ในขณะที่ (rtc.now().minute() == resetMinute) { delay(1000); } // รับเวลาปัจจุบัน DateTime now = rtc.now(); ชม = ตอนนี้ชั่วโมง (); mn = ตอนนี้นาที (); sc = ตอนนี้วินาที (); // เปลี่ยนเป็นรูปแบบ 12 ชั่วโมงหาก (hr>= 12) { hr = hr - 12; } // ดูว่ามือใดต้องเดินข้ามใบหน้าต่อไปและใช้ระยะทางนั้น // เพื่อปรับเวลาที่ตั้งไว้ hourTest = ชม. / 12; นาทีทดสอบ = mn / 60; ถ้า (hourTest > minutesTest) { handDelay = hourTest; } อื่น { handDelay = นาทีทดสอบ; } // ตั้งค่าชั่วโมงปัจจุบัน setTimeStepHour = (ชม * 498) + (mn * 8.3) + ((sc + (handDelay * 36)) *.1383); // ตั้งค่านาทีปัจจุบัน setTimeStepMinute = (mn * 114) + ((sc + (handDelay * 45)) * 1.9); // ทดสอบว่ามือใดต้องการก้าวเพิ่มเติมและตั้งค่าให้นับจำนวนก้าวที่ยาวที่สุดสำหรับลูป for ถ้า (setTimeStepHour > setTimeStepMinute) { endStep = setTimeStepHour; } อื่น ๆ { endStep = setTimeStepMinute; } สำหรับ (int i = 0; i <= endStep; i++) { if (i < setTimeStepHour) { hourHand.step (2); } อื่น ๆ { ล่าช้า (3); } ถ้า (i < setTimeStepMinute) { นาที Hand.step(3); } อื่น ๆ { ล่าช้า (4); } } hourHand.setSpeed(1); นาทีHand.setSpeed(1); } }
ขั้นตอนที่ 22: ไฟล์ STL
คุณจะต้องพิมพ์ไฟล์ในปริมาณต่อไปนี้:
- แม่เหล็กเซ็กเมนต์วงแหวนเกียร์ 1 ชั่วโมง
- พื้นฐานเซกเมนต์วงแหวนเกียร์ 6 ชั่วโมง
- 1 - ขายึดส่วนแหวนยึดแบบหมุนได้ 1 ชั่วโมง
- พื้นฐานส่วนแหวนยึด 6 ชั่วโมง
- 1 - ที่วางเซ็นเซอร์ Hall Effect แบบชั่วโมง
- 1 - แม่เหล็กส่วนวงแหวนเฟืองนาที
- 7 - นาที Ring Gear Segment พื้นฐาน
- 1 - ขายึดส่วนแหวนยึดแบบนาที
- 6 - พื้นฐานส่วนแหวนยึดนาที
- 1 - ที่วางเซนเซอร์ Hall Effect แบบนาที
- 2 - เดือยเกียร์
- 1 - แท่นยึดอุปกรณ์อิเล็กทรอนิกส์
ขั้นตอนที่ 23: ไฟล์ Solidworks
ไฟล์เหล่านี้เป็นไฟล์ Solidworks ดั้งเดิมที่ใช้สร้าง STL ที่พบในขั้นตอนก่อนหน้า อย่าลังเลที่จะแก้ไขและเปลี่ยนไฟล์ของฉันตามที่เห็นสมควร
ขั้นตอนที่ 24: บทสรุป
นาฬิกาเรือนนี้ดูดีกว่าที่ฉันคาดไว้ ด้วยประสบการณ์ Arduino เพียงเล็กน้อย ฉันดีใจที่ผลออกมาเป็นอย่างไรและแม่นยำเพียงใด มันดูดีและใช้งานได้อย่างที่ฉันหวังไว้