สารบัญ:

Minidot 2 - Holoclock: 6 ขั้นตอน
Minidot 2 - Holoclock: 6 ขั้นตอน

วีดีโอ: Minidot 2 - Holoclock: 6 ขั้นตอน

วีดีโอ: Minidot 2 - Holoclock: 6 ขั้นตอน
วีดีโอ: ยาคุม Minidoz / ยาคุมมินิดอซ / วิธีกินยาคุม Minidoz 2024, พฤศจิกายน
Anonim
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock

บางที holoclock อาจไม่ถูกต้องเล็กน้อย…. มันใช้ฟิล์มกระจายโฮโลแกรมที่ด้านหน้าเพื่อให้ความลึกเล็กน้อย โดยทั่วไปคำแนะนำนี้คือการอัปเดต Minidot ก่อนหน้าของฉันซึ่งอยู่ที่นี่: https://www.instructables.com/id /EEGLXQCSKIEP2876EE/และนำโค้ดและวงจรจำนวนมากกลับมาใช้ใหม่จาก Microdot ของฉันซึ่งอยู่ที่นี่:https://www.instructables.com/id/EWM2OIT78OERWHR38Z/EagleCAD และโค้ด Sourceboost รวมอยู่ในไฟล์ zip ที่แนบมาด้วย ทำไม? Minidot รุ่นก่อนซับซ้อนเกินไป จาก Microdot ฉันได้เรียนรู้วิธีทำ RTC บน PIC โดยใช้เพียงคริสตัล 32.768 และไม่จำเป็นต้องใช้ชิป RTC พิเศษ นอกจากนี้ ฉันต้องการกำจัดชิปแสดงผลจาก Minidot รุ่นก่อน ดังนั้นตอนนี้จึงมีเพียงชิปควบคุมกำลังและ PIC16F88 เท่านั้น….มีเพียงสองชิป เหตุผลอื่นสำหรับการอัปเดตคือ Minidot ของฉันเริ่มไม่ค่อยน่าเชื่อถือเนื่องจากแผงสวิตช์แยก และฉันต้องการการจางที่นุ่มนวลระหว่างรูปแบบจุดเช่น รวมถึงเซ็นเซอร์วัดแสงโดยรอบเพื่อหรี่จอแสดงผลในเวลากลางคืน Minidot อีกตัวหนึ่งมีความสว่างคงที่และส่องสว่างห้องในเวลากลางคืน อุปกรณ์นี้สร้างขึ้นด้วยความช่วยเหลือของแพ็คเกจซอฟต์แวร์ EagleCad และคอมไพเลอร์ Sourceboost คุณจะต้องมีประสบการณ์กับอุปกรณ์อิเล็กทรอนิกส์และการเขียนโปรแกรมคอนโทรลเลอร์ PIC เพื่อเริ่มโครงการนี้ โปรดทราบว่านี่ไม่ใช่คำแนะนำในการเขียนโปรแกรมอิเล็กทรอนิกส์หรือ PIC ดังนั้นโปรดเก็บคำถามที่เกี่ยวข้องกับการออกแบบ Miniclock อ้างถึงคำแนะนำข้างต้นหรือคำแนะนำอื่น ๆ อีกมากมายในไซต์นี้สำหรับคำแนะนำเกี่ยวกับการใช้ EagleCad หรือการเขียนโปรแกรม PIC นี่แหละ….. Minidot 2, The Holoclock……หรือ Minidot The Next Generation………….

ขั้นตอนที่ 1: วงจร

The Circuit
The Circuit
The Circuit
The Circuit
The Circuit
The Circuit

วงจรนี้คล้ายกับ Microdot มาก โปรดทราบว่าอาร์เรย์ charlieplex แทบจะเหมือนกันหมด… มีการย้ายหมุดเพียงไม่กี่ตัวเท่านั้น

เพิ่มคริสตัล 20 เมกะเฮิร์ตซ์ลงในวงจร Microdot เพื่อให้นาฬิกา PIC เร็วขึ้นมาก ซึ่งช่วยให้สแกนอาร์เรย์ได้เร็วขึ้น และทำให้สามารถใช้อัลกอริธึมการหรี่แสงได้ อัลกอริธึมการหรี่แสงมีความสำคัญมากในการทำให้สีจางและฟังก์ชันแสงโดยรอบทำงาน สิ่งนี้จะเป็นไปไม่ได้สำหรับ Microdot เนื่องจากความเร็วสัญญาณนาฬิกาที่ช้าลงเนื่องจากรอบการสแกนบางรอบจำเป็นต้องใช้ในการหรี่แสง ดูส่วนถัดไปสำหรับคำอธิบายของฟังก์ชัน Dimming สิ่งอื่นที่ควรทราบคือการใช้ตัวควบคุมปั๊มชาร์จ MCP1252 เพื่อจ่ายไฟ 5V ซึ่งเป็นชิปที่ฉันชอบในตอนนี้ หากคุณดัดแปลงวงจร คุณสามารถใช้ 7805 รุ่นเก่าๆ ได้……ฉันมีชิปที่มีประโยชน์จำนวนหนึ่งแขวนอยู่รอบๆ ตอนนี้ฉันได้ย้ายสวิตช์ไปที่ด้านหน้าแล้ว ช่วยประหยัดเวลาหลังจากไฟฟ้าดับเพื่อรีเซ็ตเวลา และตอนนี้ทุกอย่างเป็นเพียง PCB เดียว….ไม่มีปัญหาเรื่องสายเคเบิล สิ่งที่ควรทราบก็คือการรวม LDR ใช้ในตัวแบ่งแรงดันไฟฟ้าซึ่งรับรู้โดยพิน A/D บน PIC เมื่อ PIC ตรวจพบว่าระดับแสงโดยรอบต่ำ (เช่น เวลากลางคืน) อัลกอริธึมการหรี่แสงจะทำให้อาร์เรย์ charlieplex มืดสำหรับรอบมากกว่าเมื่อระดับแสงสูง ฉันไม่พบสัญลักษณ์ LDR ในไลบรารี Eaglecad ดังนั้นฉันจึงใช้สัญลักษณ์ LED …..อย่าถูกหลอกว่ามันคือ LDR ดูภาพจริงของ PCB ด้านล่าง สิ่งหนึ่งที่ควรทราบเมื่อใช้ LED หลายสีในอาร์เรย์ charliplex คุณต้องตรวจสอบให้แน่ใจว่าแรงดันไฟไปข้างหน้าของ LED นั้นเท่ากันไม่มากก็น้อย หากไม่เป็นเช่นนั้น อาจเกิดเส้นทางปัจจุบันหลงทางและไฟ LED หลายดวงจะติดสว่าง ดังนั้น การใช้ LED กำลังสูง 5 มม. หรือสูงกว่าสำหรับการกำหนดค่านี้จะไม่ทำงาน เนื่องจากโดยปกติแล้ว LED สีเขียว/สีน้ำเงินและ LED สีแดง/สีเหลืองจะมีความแตกต่างกันค่อนข้างมาก ในกรณีนี้ ฉันใช้ไฟ LED 1206 แบบ SMD และไฟ LED สีเขียว/น้ำเงินที่มีประสิทธิภาพสูงโดยเฉพาะ แรงดันไฟฟ้าไปข้างหน้าไม่ได้เป็นปัญหาที่นี่ หากคุณต้องการใช้ LED พลังงานสูงสีเขียว/น้ำเงินและแดง/เหลืองผสมกันในอาร์เรย์ charlieplex คุณจะต้องแยกสีที่ต่างกันออกเป็นอาร์เรย์ charliplex สองชุด มีคำอธิบายมากมายเกี่ยวกับ charlieplexing ที่สามารถ googled ได้……ฉันจะไม่ลงรายละเอียดที่นี่ ฉันจะปล่อยให้คุณทำวิจัย (กดไอคอน 'i' เล็ก ๆ ที่มุมของภาพด้านล่างเพื่อดูเวอร์ชันที่ใหญ่ขึ้น)

ขั้นตอนที่ 2: อัลกอริธึม Dimming - Charliplexed Pulse Width Modulation

อัลกอริธึม Dimming - การปรับความกว้างพัลส์แบบชาร์ลิเพล็กซ์
อัลกอริธึม Dimming - การปรับความกว้างพัลส์แบบชาร์ลิเพล็กซ์

ดังที่ได้กล่าวไว้ก่อนหน้านี้ ฉันต้องการให้รูปแบบจุดต่างๆ สำหรับเวลาที่จางหายไปอย่างราบรื่น แทนที่จะกระตุกจากรูปแบบหนึ่งไปอีกรูปแบบหนึ่ง ดูวิดีโอสำหรับการสาธิต ตรงกลางคือนาฬิกา Minidot ใหม่ ทางด้านขวาคือ Minidot รุ่นเก่า สังเกตว่าอันใหม่สวยกว่าขนาดไหน (FYI จอแสดงผลอื่นๆ ในพื้นหลังคือการแสดงสถานะซูเปอร์คอมพิวเตอร์ Minicray และอนุภาคเนบูลอนที่จับได้ซึ่งให้พลังงานแก่ Minicray ในสนามแม่เหล็กปฏิสสาร ดูที่นี่:https://www.youtube.com/embed/bRupDulR4ME สำหรับการสาธิต ของห้องขังเนบิวลอน) หากคุณดูในรหัส ให้เปิดไฟล์ display.c โปรดทราบว่ามีสี่อาร์เรย์สำหรับการแมปค่าทริส/พอร์ตเพื่อให้แสงสว่างแก่อาร์เรย์ใด ๆ และสองอาร์เรย์ (มากกว่าหนึ่งรหัส Microdot) เพื่อกำหนดว่าไฟ LED ใดควรติดสว่างสำหรับรูปแบบใด ๆ ของ LED เช่น:

// LED1 LED2 LED3 … LEDS_PORTA ถ่านที่ไม่ได้ลงนาม [31] = { 0x10, 0x00, 0x00, … LEDS_TRISA ถ่านที่ไม่ได้ลงนาม [31] = { 0xef, 0xff, 0xff, … LEDS_PORTB ถ่านที่ไม่ได้ลงนาม [31] = { 0x00, 0x02, 0x04, …ถ่านที่ไม่ได้ลงชื่อ LEDS_TRISB [31] = { 0xfd, 0xf9, 0xf9, …ถ่านที่ไม่ได้ลงชื่อ nLedsA [30]; ถ่านที่ไม่ได้ลงชื่อ nLedsB [30];ตัวอย่างเช่น หากต้องการให้ LED1 สว่างขึ้น คุณต้องตั้งค่า TRIS register TRISA:B = 0xef:0xfd และ PORT registers PORTA:B=0x10:0x00 เป็นต้น หากคุณเขียนค่าทริสเป็นเลขฐานสอง คุณจะสังเกตว่าเมื่อใดก็ได้ มีเพียงสองเอาต์พุตที่เปิดใช้งาน ส่วนอื่นๆ ถูกตั้งค่าเป็น Tri-state (ดังนั้น ทะเบียน TRIS) นี่คือศูนย์กลางของชาร์ลีเพล็กซ์ซิง คุณจะสังเกตด้วยว่าเอาต์พุตหนึ่งจะเป็น '1' แบบลอจิกเสมอ และอีกอันจะเป็น '0' แบบลอจิคัลเสมอ….ทิศทางที่จะเปิด LED ใดก็ตามที่อยู่ระหว่างบรรทัดเอาต์พุตทั้งสองนี้ ค่าสุดท้ายในพอร์ต/ทริส อาร์เรย์เป็นค่าว่างที่จะไม่เปิด LED เลย ใน Microdot ฟังก์ชัน update_display จะวนไปเรื่อยๆ ผ่านอาร์เรย์อื่น (nLeds) เพื่อดูว่า LED นั้นจะต้องติดสว่างหรือไม่ หากใช่ แสดงว่าค่าทริส/พอร์ตที่สอดคล้องกันถูกตั้งค่าและไฟ LED จะสว่างขึ้นในช่วงระยะเวลาหนึ่ง มิฉะนั้น ค่า Null จะถูกส่งไปยังรีจิสเตอร์ PICs TRIS/PORT และไม่มีไฟ LED ติดสว่างในช่วงระยะเวลาหนึ่ง เมื่อทำเร็วพอจะได้รูปแบบ ส่วนที่เหลือของโปรแกรมจะอ่านค่า RTC เป็นระยะๆ และสร้างรูปแบบสุ่มที่ดีในอาร์เรย์นั้น….และจอแสดงผลก็เปลี่ยนไป ในการทำให้ฟังก์ชันลดแสง สิ่งนี้ถูกขยายเล็กน้อยเพื่อให้หลังจากไฟ LED 30 ดวงสว่างขึ้น (หรือ ไม่) จากนั้นจะมีการใช้ช่วงเวลาพิเศษในการส่งค่า Null หากจอแสดงผลถูกหรี่ลง…..เพื่อความสว่างเต็มที่จะไม่มีการใช้ช่วงเวลาพิเศษ เมื่อทำซ้ำหากมีช่วงว่างจำนวนมากสำหรับ LED ที่ส่องสว่าง จอแสดงผลจะสลัว ผลที่ได้คือนี่คือการปรับความกว้างพัลส์แบบมัลติเพล็กซ์…..หรือเนื่องจากฮาร์ดแวร์ได้รับการกำหนดค่าในการจัดเตรียม charlieplex จากนั้นมอดูเลตความกว้างพัลส์ charlieplexed ไดอะแกรมที่สองด้านล่างแสดงการตั้งค่าพื้นฐานสำหรับสิ่งนี้ ฉันเรียกสิ่งนี้ว่ากรอบการสแกน 30 ช่วงเวลาแรกในเฟรมจะใช้เพื่อผ่าน LED ….. และจำนวนช่วงพิเศษที่เปลี่ยนแปลงได้จะกำหนดว่าจอแสดงผลจะมืดลงเพียงใด รอบนี้เกิดซ้ำ ช่วงเวลาที่เป็นโมฆะมากขึ้นหมายถึงเวลาที่ LED จะเปิดต่อเฟรมน้อยลง (เนื่องจากจำนวนงวดเพิ่มขึ้น) โปรดทราบว่าแกนตั้งไม่ได้หมายถึงระดับแรงดันไฟฟ้า สถานะจริงของพินที่ไปยัง LED จะแตกต่างกันไปขึ้นอยู่กับตำแหน่งในอาร์เรย์ charlieplex…..ในแผนภาพ หมายถึงเปิดหรือปิด ซึ่งหมายความว่าความยาวทั้งหมดของเฟรมในเวลาเพิ่มขึ้นเช่นกัน ดังนั้นจึงลดการรีเฟรช ประเมินค่า. เมื่อไฟ LED หรี่ลง พวกมันก็จะเริ่มกะพริบในอีกนัยหนึ่ง ดังนั้นวิธีนี้จึงมีประโยชน์เพียงบางส่วนเท่านั้น สำหรับนาฬิกา ถือว่าโอเค ฟังก์ชันจะเรียกเป็นระยะๆ เพื่ออ่านตัวแปลง A/D บน PIC และตั้งค่าระดับความสว่างนี้ หากคุณอ่านโค้ด ระบบจะตรวจสอบด้วยว่าไฟ LED ใกล้ LDR ที่ใกล้ที่สุดเปิดอยู่หรือไม่ และจะไม่ตั้งค่าระดับใดๆ หากเป็นเช่นนั้น การดำเนินการนี้จะทำให้จอแสดงผลสว่างโดยไม่คาดคิดเมื่อรูปแบบเปลี่ยนไป ถัดไปคือฟังก์ชันจางข้าม

ขั้นตอนที่ 3: Dimming Algorithm - Cross Fade Effect และ Double Buffering

Dimming Algorithm - เอฟเฟกต์ Cross Fade และ Double Buffering
Dimming Algorithm - เอฟเฟกต์ Cross Fade และ Double Buffering

การเปลี่ยนแปลงระหว่างรูปแบบหนึ่งและรูปแบบถัดไปเกิดขึ้นทันที สำหรับนาฬิกาเรือนนี้ ฉันต้องการแสดงรูปแบบหนึ่งที่ค่อยๆ ลดความสว่างลง และรูปแบบถัดไปค่อยๆ เพิ่มขึ้น… กล่าวคือ การจางแบบกากบาท

ฉันไม่จำเป็นต้องมี LED แยกกันเพื่อควบคุมที่ระดับความสว่างแยกกันเพื่อทำให้สีจางลง แค่ต้องการรูปแบบแรกที่ความสว่างหนึ่ง และรูปแบบที่สองที่ความสว่างต่ำ จากนั้นในช่วงเวลาสั้น ๆ ฉันจะลดความสว่างของอันแรกลงเล็กน้อย และเพิ่มความสว่างของอันที่สอง…..จะดำเนินต่อไปจนถึงรูปแบบที่สองเมื่อเต็ม จากนั้นนาฬิกาจะรอจนกว่ารูปแบบถัดไปจะแสดงและจะมีการเปลี่ยนอีกครั้ง ดังนั้นฉันต้องเก็บสองรูปแบบ แบบที่กำลังแสดงอยู่และแบบที่สองที่กำลังจะแสดง สิ่งเหล่านี้อยู่ในอาร์เรย์ nLedsA และ nLedsB (โปรดทราบว่าไม่เกี่ยวข้องกับพอร์ตในกรณีนี้) นี่คือบัฟเฟอร์คู่ ฟังก์ชัน update_display() ได้รับการแก้ไขเพื่อวนรอบแปดเฟรม และแสดงจำนวนเฟรมจากอาร์เรย์แรก จากนั้นอีกเฟรมหนึ่ง การเปลี่ยนจำนวนเฟรมที่จัดสรรให้กับบัฟเฟอร์แต่ละตัวตลอดแปดรอบที่กำหนดว่าแต่ละรูปแบบจะสว่างเพียงใด เมื่อเราวนรอบระหว่างบัฟเฟอร์เสร็จแล้ว เราสลับบัฟเฟอร์ 'การแสดงผล' และ 'การแสดงผลถัดไป' ไปรอบๆ ดังนั้นฟังก์ชันการสร้างรูปแบบจะเขียนเฉพาะไปยังบัฟเฟอร์ 'การแสดงผลถัดไป' เท่านั้น แผนภาพด้านล่างแสดงสิ่งนี้ด้วยความหวัง คุณควรจะสามารถเห็นได้ว่าการเปลี่ยนแปลงจะใช้เฟรมการสแกน 64 เฟรม ในภาพ สิ่งที่ใส่เข้าไปเล็ก ๆ จะแสดงไดอะแกรม scan fram จากหน้าก่อนหน้าที่ย่อขนาดลงอย่างมีศิลปะ คำเกี่ยวกับอัตราการรีเฟรช ทั้งหมดนี้จำเป็นต้องทำอย่างรวดเร็ว ขณะนี้ เรามีการคำนวณพิเศษสองระดับ ระดับหนึ่งสำหรับความมัวของการแสดงผลโดยรอบ และอีกระดับสำหรับรอบแปดเฟรมที่ใช้ทำการเปลี่ยนแปลงระหว่างบัฟเฟอร์สองตัว ดังนั้นรหัสนี้ควรเขียนในชุดประกอบ แต่ดีพอใน 'C'

ขั้นตอนที่ 4: การก่อสร้าง - PCB

การก่อสร้าง - PCB
การก่อสร้าง - PCB
การก่อสร้าง - PCB
การก่อสร้าง - PCB

นี้ค่อนข้างตรงไปตรงมา เป็น PCB สองด้านที่มีส่วนประกอบ SMD อยู่ด้านบน ขออภัยถ้าคุณเป็นคนที่ชอบเจาะทะลุ แต่การทำโปรเจ็กต์ SMD ง่ายกว่ามาก….ไม่ต้องเจาะรู คุณควรมีมือที่มั่นคง สถานีบัดกรีที่ควบคุมอุณหภูมิ และแสงและการขยายจำนวนมากเพื่อให้ง่ายขึ้น

สิ่งเดียวที่ควรทราบในการสร้าง PCB คือการรวมตัวเชื่อมต่อสำหรับการเขียนโปรแกรม PIC สิ่งนี้เชื่อมต่อกับพิน ICSP บน PIC และคุณจะต้องมีโปรแกรมเมอร์ ICSP อีกครั้งที่ฉันใช้สะดวกกับตัวเชื่อมต่อ Junkbox ของฉัน คุณสามารถละเว้นสิ่งนี้และเพียงแค่บัดกรีสายไฟเข้ากับแผ่นอิเล็กโทรดหากต้องการ หรือถ้าคุณมีโปรแกรมเมอร์แบบเสียบปลั๊กเท่านั้น คุณสามารถสร้างส่วนหัวที่เสียบเข้ากับซ็อกเก็ตของคุณแล้วประสานเข้ากับแพด ICSP หากคุณทำเช่นนี้ ให้ปลดการเชื่อมต่อ Rx และเชื่อมต่อ Ry ซึ่งเป็นเพียงลิงก์ศูนย์โอห์ม (ฉันแค่ใช้บัดกรีบัดกรี) การดำเนินการนี้จะตัดการเชื่อมต่อพลังงานวงจรที่เหลือจาก PIC เพื่อไม่ให้รบกวนการเขียนโปรแกรม โปรแกรมเมอร์ที่เสียบปลั๊กใช้หมุด ICSP เหมือนโปรแกรมเมอร์ ICSP ไม่มีเวทมนตร์ที่เกี่ยวข้องจริงๆ คุณต้องทำเช่นนี้หากคุณลืมใส่รหัสล่าช้าก่อนที่ RTC จะเริ่มทำงานโดยไม่ได้ตั้งใจ สำหรับ 16F88 พินการเขียนโปรแกรม ICSP จะเหมือนกับพินที่จำเป็นสำหรับคริสตัล 32.768kHz ที่ใช้สำหรับ RTC ……หากออสซิลเลเตอร์ภายนอก T1 (เช่น RTC) ทำงานก่อนที่ ICSP จะเริ่มทำงาน การเขียนโปรแกรมจะล้มเหลว. โดยปกติหากมีการรีเซ็ตบนพิน MCLR และมีความล่าช้า ข้อมูล ICSP จะถูกส่งไปยังพินเหล่านี้และการเขียนโปรแกรมสามารถเริ่มต้นได้อย่างถูกต้อง อย่างไรก็ตาม การแยกพลังงานไปยัง PIC โปรแกรมเมอร์ ICSP (หรือโปรแกรมเมอร์ที่เสียบปลั๊กพร้อมส่วนหัว) สามารถควบคุมพลังงานไปยังอุปกรณ์และบังคับโปรแกรมได้ สิ่งอื่นที่ควรทราบคือแผ่นคริสตัลบน PCB เดิมออกแบบมาสำหรับคริสตัล SMD ฉันไม่สามารถรอที่จะส่งมอบบางส่วนได้ ดังนั้นคริสตัลนาฬิกา 32.768kHz ถูกบัดกรีที่ด้านบนดังที่แสดง และคริสตัล 20MHz ถูกติดโดยการเจาะรูสองสามรูในแผ่นรอง เจาะคริสตัลผ่านด้านล่างและบัดกรีบน สูงสุด. คุณจะเห็นหมุดทางด้านขวาของ PIC16F88

ขั้นตอนที่ 5: ภาพยนตร์โฮโลแกรมและที่อยู่อาศัย

ภาพยนตร์โฮโลแกรมและที่อยู่อาศัย
ภาพยนตร์โฮโลแกรมและที่อยู่อาศัย
ภาพยนตร์โฮโลแกรมและที่อยู่อาศัย
ภาพยนตร์โฮโลแกรมและที่อยู่อาศัย
ภาพยนตร์โฮโลแกรมและที่อยู่อาศัย
ภาพยนตร์โฮโลแกรมและที่อยู่อาศัย

โครงสร้างขั้นสุดท้ายเพียงแค่ใส่ PCB ลงในเคสและหลังจากตั้งโปรแกรมให้ติดด้วยกาวร้อนจำนวนหนึ่ง สามรูช่วยให้เข้าถึงไมโครสวิตช์จากด้านหน้าได้

ส่วนที่โดดเด่นของนาฬิกานี้คือการใช้ฟิล์มกระจายแสงแบบโฮโลแกรม นี่เป็นภาพยนตร์พิเศษที่ฉันนอนอยู่รอบ ๆ ซึ่งให้ความลึกที่ดีแก่อุปกรณ์ คุณสามารถใช้กระดาษลอกลายธรรมดา (ซึ่งฉันจะย้าย PCB เข้าไปใกล้ด้านหน้ามากขึ้น) หรือตัวกระจายสัญญาณอื่น ๆ เช่นเดียวกับที่ใช้ในโคมไฟเรืองแสง จากการทดลอง สิ่งเดียวที่ต้องทำคืออนุญาตให้คุณแยกความแตกต่างระหว่างจำนวนไฟ LED ที่ส่องสว่าง หรือมิฉะนั้น การนับจุดเพื่อบอกเวลาจะเป็นเรื่องยาก ฉันใช้วัสดุกระจายภาพโฮโลแกรมจาก Physical Optics Coorporation (www.poc.com) ที่มีการกระจายแบบวงกลม 30 องศา การแสดงสถานะซูเปอร์คอมพิวเตอร์ที่แสดงไว้ที่อื่นในคำแนะนำนั้นใช้ฟิล์มที่มีการกระจายรูปวงรี 15x60 องศา คุณสามารถใช้เทปปิดทึบเพื่อซ่อนอวัยวะภายในที่เป็นมันเงาในช่วงกลางวันเพื่อให้ดูลึกลับยิ่งขึ้น คุณสามารถปล่อยให้หน้าจอโล่งและให้คนอื่นเห็นอวัยวะภายในเหมือนที่ฉันทำ ขาตั้งเป็นแท่งอะลูมิเนียม 'L' สองแท่งโดยมีการสับที่ด้านล่างเล็กน้อยเพื่อให้งอได้ หมายเหตุในภาพเหล่านี้มีการเพิ่มแสงพิเศษเพื่อให้คุณเห็นฝาครอบจอแสดงผล ฯลฯ ในการให้แสงในห้องนั่งเล่นปกติ ไฟ LED จะโดดเด่นกว่าแม้ในเวลากลางวัน

ขั้นตอนที่ 6: ซอฟต์แวร์และส่วนต่อประสานผู้ใช้

การทำงานของอุปกรณ์นั้นง่ายมาก ไม่มีโหมดรูปแบบพิเศษหรือสิ่งที่ฉูดฉาด สิ่งเดียวที่ทำคือแสดงเวลา

ในการตั้งเวลาก่อนกด SW1 อุปกรณ์จะกะพริบ LED ทั้งหมดสองสามครั้ง จากนั้นกลุ่ม LED 10 วินาที SW3 จะเพิ่มกลุ่มที่เลือก SW2 จะย้ายไปยังกลุ่ม LED ถัดไป โดยแต่ละครั้งจะกะพริบ LED ทั้งหมดในกลุ่มชั่วครู่ รหัสนี้เขียนขึ้นสำหรับคอมไพเลอร์ Sourceboost 'C' เวอร์ชัน 6.70 รหัส RTC อยู่ในไฟล์ t1rtc.c/h และมีฟังก์ชันขัดจังหวะบนตัวจับเวลา T1 ของ PIC ตัวจับเวลา T1 ถูกตั้งค่าให้ขัดจังหวะทุกๆ 1 วินาที ในแต่ละวินาที ตัวแปรสำหรับเวลาจะเพิ่มขึ้น ตัวจับเวลาขีดยังนับถอยหลังทุกวินาทีพร้อมกับเวลา ใช้เพื่อกำหนดว่าเมื่อใดควรเปลี่ยนการแสดงผล ฟังก์ชันขัดจังหวะยังใช้ตัวจับเวลา T0 เพื่อรีเฟรชการแสดงผล โดยเรียกใช้ฟังก์ชันใน display.c ไฟล์ display.h/display.c มีฟังก์ชันสำหรับอัปเดตการแสดงผลและแสดงเวลา ไฟล์ control.c/h ประกอบด้วย ฟังก์ชั่นตั้งเวลาและอ่านสวิตช์ ไฟล์ holoclock.c/h เป็นลูปหลักและการเริ่มต้น

แนะนำ: