สารบัญ:

CLEPCIDRE: นาฬิกาดิจิตอลขวดไซเดอร์: 8 ขั้นตอน (พร้อมรูปภาพ)
CLEPCIDRE: นาฬิกาดิจิตอลขวดไซเดอร์: 8 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: CLEPCIDRE: นาฬิกาดิจิตอลขวดไซเดอร์: 8 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: CLEPCIDRE: นาฬิกาดิจิตอลขวดไซเดอร์: 8 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: clepsidra ctesibius 2024, กรกฎาคม
Anonim
CLEPCIDRE: นาฬิกาดิจิตอลขวดไซเดอร์
CLEPCIDRE: นาฬิกาดิจิตอลขวดไซเดอร์
CLEPCIDRE: นาฬิกาดิจิตอลขวดไซเดอร์
CLEPCIDRE: นาฬิกาดิจิตอลขวดไซเดอร์
CLEPCIDRE: นาฬิกาดิจิตอลขวดไซเดอร์
CLEPCIDRE: นาฬิกาดิจิตอลขวดไซเดอร์

ก่อนดำดิ่งลงไปในคำอธิบายวัตถุ ฉันต้องอธิบายบริบทที่มันได้รับการออกแบบและสร้าง ภรรยาของฉันเป็นศิลปินและทำงานโดยทั่วไปกับดินเหนียว เป็นช่างเซรามิก แต่ยังทำงานกับวัสดุอื่นๆ เช่น ไม้ กระดานชนวน หรือแก้ว ในงานศิลปะส่วนใหญ่ของเธอ เธอพยายามแสดงร่องรอยที่เหลืออยู่บนสิ่งของต่างๆ และเธอมักจะรวมวัสดุที่พบในธรรมชาติ เช่น เศษไม้บนชายหาด เพื่อ "ให้ชีวิตที่สองแก่สิ่งของที่ใช้แล้ว" พี่สะใภ้และพี่เขยของเธอเคยทำไซเดอร์ของตัวเอง (ในนอร์มังดี) และยังคงมีขวดไซเดอร์หลายร้อยขวดนอนอยู่ใต้ฝุ่นหนาๆ ในแท่นพิมพ์เก่า นั่นก็มากเกินพอที่จะกระตุ้นความคิดในการสร้างสรรค์ครั้งต่อไปของภรรยาฉัน นั่นคือ "นาฬิกาขวดไซเดอร์" ความเชื่อมโยงกับเวลานั้นชัดเจน: ขวดเหล่านั้นมีอดีตอันรุ่งโรจน์และตอนนี้ควรเป็นพยานของเวลาที่ผ่านไปและรวมกันเป็นนาฬิกา หนึ่งปีที่แล้ว เธอถามฉันว่า "ที่รัก ช่วยทำนาฬิกาที่มีตะเกียงใต้ขวดไซเดอร์ 12 ขวดให้ฉันหน่อยได้ไหม ฉันจะทำขวดในเตาเผาให้แบนเอง และคุณดูแลส่วนที่เหลือ: ไม้ค้ำ -พาเลท- หลอดไฟและวงจรอิเล็กทรอนิกส์ทั้งหมด!ฉันต้องการแสดงเวลาแต่ไม่เสมอไป ไฟ LED ควรกะพริบแบบสุ่มด้วย เป็นไปได้ไหม คุณควรหาวิธีแก้ไขขวดบนพาเลทด้วย" นาฬิกาควรพร้อมภายในหนึ่งเดือน…

"ชื่อเล่น" ของงานศิลปะชิ้นนี้คือ "CLEPCIDRE" ซึ่งย่อมาจาก (ภาษาฝรั่งเศส) ของ "Circuit Lumineux Electronique Programmé sous bouteilles de CIDRE" เป็นการพยักหน้าให้ชื่อ "CLEPSYDRE" ซึ่งกำหนดนาฬิกาน้ำที่ชาวอียิปต์ประดิษฐ์ขึ้น. ภรรยาของฉันเรียกมันว่า "Les Bouteilles de Ma Soeur" (ขวดน้องสาวของฉัน)

รูปภาพ #1: สต็อกขวดไซเดอร์ของพี่สะใภ้

รูปภาพ #2: เอกสารข้อมูลจำเพาะต้นฉบับ

รูปภาพ #3 ถึง #6: มุมมองของนาฬิกา

CLEPCIDRE จัดแสดงระหว่างสองนิทรรศการเมื่อปีที่แล้ว ครั้งแรกใน "Greniers à Sel" ใน Honfleur (คัลวาโดส นอร์มังดี ฝรั่งเศส) ในเดือนเมษายน 2019 (ภาพที่ 6) และครั้งที่สองใน Touques (คัลวาโดส นอร์มังดี ฝรั่งเศส) ในเดือนมิถุนายน 2562

เสบียง

  • ขวดไซเดอร์สิบสองขวด (คุณสามารถลองขวดประเภทอื่น: แชมเปญ สปาร์คกลิ้งไวน์ …แต่ไม่มีการรับประกัน)
  • เตาเผาเซรามิก (เราใช้เตาเผาทรงกระบอกฝาบนขนาด 5kVA)
  • พาเลท (แผ่นขอบจรดขอบ ขนาด +/- 107cmx77cmx16cm)
  • แผ่นไม้บาง (เพื่อปิดด้านพาเลท)
  • ไฟ LED สีขาวขนาดเส้นผ่านศูนย์กลาง 10 มม. กำลังสูง 24 ดวง (เช่น
  • บอร์ด Arduino: Uno หรือ Leonardo OK, บอร์ดขนาดเล็กกว่าก็ได้, Mega เกินความสามารถนิดหน่อย
  • แหล่งจ่ายไฟสองชุด (5V สำหรับไฟ LED และ 12V สำหรับบอร์ด Arduino และ RTC แม้ว่า 5V สำหรับ Arduino ควรจะใช้ได้ แต่ไม่ได้ทดสอบ)
  • บอร์ด RTC (ฉันเคยใช้ Adafruit DS1307 แล้ว แต่ฉันอยากจะแนะนำ RTC ที่ชดเชยอุณหภูมิให้แม่นยำยิ่งขึ้นตาม DS3231 โดย DS1307 จะเลื่อน 2 - 3 วินาทีทุกวันและจำเป็นต้องปรับใหม่เป็นประจำ)
  • 4 shift registers 74HC595 เป็นแต่ละรายการ (16 pin DIL CMOS IC) หรือติดตั้งบนบอร์ดแล้ว (เช่น SparkFun Shift Register Breakout - 74HC595 ref BOB-10680)
  • แผ่นทดสอบอีพ็อกซี่ (50*100 มม., รูในกลุ่ม 3 และแผงเอนกประสงค์ที่มีแถบทองแดงเป็นเส้นตรง)
  • ดอกสว่านเพชร (6 หรือ 8 มม.) และเดือยไม้ (6 หรือ 8 มม.)
  • ตัวต้านทาน 24 1/4 W (220 Ω)
  • ปลอกคอสำหรับปลั๊กขวดแบบกลไก (พบได้ในร้านฮาร์ดแวร์หรืออินเทอร์เน็ต)
  • กาว, สายไฟ, ปลอกหดความร้อน, เครื่องมือ,.., สกรู,.., หัวแร้ง (18W OK)

ขั้นตอนที่ 1: สิ่งที่ง่ายที่สุด: การปิดด้านข้างของพาเลท

สิ่งที่ง่ายที่สุด: การปิดด้านข้างของพาเลท
สิ่งที่ง่ายที่สุด: การปิดด้านข้างของพาเลท

ลองหาพาเลทไม้ (ผมเจอขนาดประมาณ 107 ซม.* 77 ซม.) ไม่ควรมีช่องว่างระหว่างแผ่นไม้

ยึดกระดานไม้ 4 อันด้วยสกรู ข้างละหนึ่งอัน ตัดกระดาน 4 แผ่นจากแผ่นลาเกอร์เพื่อให้ได้ขนาดที่เหมาะสม

เนื่องจากอาจมีแผงวางเท้า (และอาจจะมี) ฉันแนะนำให้ตัดตามที่แสดงในรูปภาพ ซึ่งจะทำให้เข้าถึงแผงด้านล่างได้ฟรี และช่วยให้สามารถเจาะรูสำหรับไฟ LED ได้

ต่อมาเมื่อมีการทำเครื่องหมายตำแหน่งของไฟ LED จะต้องเจาะเป็นสองขั้นตอน ขั้นแรกให้เจาะรูที่มีเส้นผ่านศูนย์กลางของ LED (9 - 10 มม.) และรูที่ใหญ่กว่า (เช่น 2 ซม.) เพื่อให้ได้ความหนา สอดคล้องกับความสูงของไฟ LED (ความหนาของกระดานไม้น่าจะมากกว่าความสูงของไฟ LED)

ภาพที่ 1: พาเลทที่มองเห็นจากด้านล่างพร้อมรูเจาะแล้ว

ขั้นตอนที่ 2: ทำให้ขวดไซเดอร์เรียบ

ทำให้ขวดไซเดอร์เรียบ
ทำให้ขวดไซเดอร์เรียบ
ทำให้ขวดไซเดอร์เรียบ
ทำให้ขวดไซเดอร์เรียบ
ทำให้ขวดไซเดอร์เรียบ
ทำให้ขวดไซเดอร์เรียบ

ความจุเตาเผาของเราให้ความร้อนได้ครั้งละ 6 ขวดใน 3 ระดับ เมื่อวางขวด ตรวจสอบให้แน่ใจว่าขวดไม่สัมผัสกัน ทั้งกับผนังเตาอบหรือเสา

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

สิ่งสำคัญที่สุดในกระบวนการนี้คือปล่อยให้ขวดเย็นลงอย่างช้าๆ และไม่เปิดเตาเร็วเกินไป แม้ว่าคุณจะคิดว่าอุณหภูมิของเตาเผาเท่ากับอุณหภูมิห้อง คุณก็ควรรู้ว่าอุณหภูมิของแก้วยังคงสูงกว่าอุณหภูมิของเตา เตาเผาในช่วงเวลาหนึ่ง และอุณหภูมิที่เปลี่ยนแปลงไป แม้เพียงเล็กน้อย ก็อาจทำให้กระจกแตกได้ เรามีขวดแตกหนึ่งหรือสองวันหลังจากการให้ความร้อนและฉันแนะนำให้คำนึงถึง +/- 30% ของการสูญเสียในบัญชี (คาดว่า 16 ถึง 18 ขวดจะได้ 12 ในตอนท้ายไม่ต้องพูดถึงขวดที่คุณจะไม่พอใจ ของ).

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

รูปที่ 1: เตาเผา มุมมองทั่วไป

รูปที่ 2: ขวดแบนสองขวด (ฉันไม่มีรูปขวดในเตาเผาก่อนจะอุ่นตอนนี้)

รูปที่ 3: โปรไฟล์อุณหภูมิทั่วไป

ขั้นตอนที่ 3: ค้นหาตำแหน่งของขวดและไฟ LED

ค้นหาตำแหน่งของขวดและไฟ LED
ค้นหาตำแหน่งของขวดและไฟ LED
ค้นหาตำแหน่งของขวดและไฟ LED
ค้นหาตำแหน่งของขวดและไฟ LED
ค้นหาตำแหน่งของขวดและไฟ LED
ค้นหาตำแหน่งของขวดและไฟ LED
ค้นหาตำแหน่งของขวดและไฟ LED
ค้นหาตำแหน่งของขวดและไฟ LED

ในการออกแบบนาฬิกา ฉันจะอธิบายทีหลัง แต่ละขวดมีไฟ LED สองดวง ไฟ "ภายนอก" แสดงชั่วโมง (0 ถึง 11 และ 12 ถึง 23) และไฟภายในแสดงนาทีทีละขั้นที่ 5 (0, 5, … 55) ก่อนอื่นคุณต้องวางขวดไว้รอบๆ พาเลท ในการนี้ คุณต้องยืดสายระหว่างหมุดตรงกลางกับหมุด 12 ตัวรอบพาเลทก่อน ถ้าเป็นไปได้ "ตรงข้ามกับแนวทแยงมุม" 4 ตำแหน่งชัดเจนและหาง่าย: 0, 3, 6 และ 9 ชั่วโมง (สตริงที่เชื่อมตรงกลางของแต่ละด้าน สองต่อสอง) ส่วนอีก 4 บรรทัดนั้นยากกว่าเล็กน้อย คุณต้องจัดแนวสายอักขระเพื่อให้มีที่ว่างเพียงพอสำหรับแต่ละขวด (ขวดถูกจัดเรียงแบบสองต่อสองกับแกนที่สอดคล้องกับเชือก) และขวดที่ให้ความรู้สึกมีการกระจายอย่างเท่าเทียมกัน ขั้นตอนนี้ต้องใช้การลองผิดลองถูกเล็กน้อย โปรดทราบว่าเนื่องจากแต่ละขวดไม่เหมือนกัน คุณต้องเลือกว่าควรวางขวดใดไว้ (นี่คือเรื่องของ "ความรู้สึกทางศิลปะ") เมื่อเลือกสถานที่ของแต่ละขวดแล้ว อย่าลืมติดฉลากที่มีหมายเลขไว้บนขวดแต่ละขวดและทำเครื่องหมายบนพาเลทสำหรับกึ่งกลางด้านล่างของแต่ละขวด (ดูเพิ่มเติม) จุดและสตริงเหล่านั้นจะใช้ในภายหลังเพื่อค้นหารูของเดือยยึด

ถัดไป ไฟ LED สองดวงต้องอยู่ในตำแหน่งที่สัมพันธ์กับขวดแต่ละขวด จากนั้นจึงย้ายตำแหน่งไปยังพาเลท

เพื่อที่ฉันได้สร้างกล่องที่มีแผง "มือถือ" สองแผ่น (ดูรูป) อันแรกตั้งฉากกับแกนขวดและอันที่สองซึ่งถูกขันที่อันแรกตรงกลางเพื่อให้สามารถหมุนได้จะจัดตำแหน่งบนแกนนั้น ในกระดานที่สองนี้ ฉันเจาะสองรู (เส้นผ่านศูนย์กลาง 9 หรือ 10 มม.) หนึ่งในนั้นอยู่ในรูปของรังดุมเพื่อให้สามารถย้ายไฟ LED หนึ่งดวงไปตามทิศทางของแกนได้ ฉันใช้ 5V กับแต่ละ LED เลือกจากบอร์ด Arduino หรือแหล่งอื่น ๆ ระวัง! ไฟ LED ที่มีความส่องสว่างสูงอาจเป็นอันตรายได้หากคุณดูโดยตรง ดังนั้นจึงขอแนะนำให้วางแถบสก๊อตเทปโปร่งแสงไว้เหนือไฟ LED

วางขวดแต่ละขวดที่ด้านบนของกล่องแล้วย้ายกระดานทั้งสองและ "มือถือ" นำจนกว่าคุณจะพอใจกับเอฟเฟกต์ (จำไว้ว่าคุณอาจใส่ลูกปัดแก้วในขวดบางขวดและวางไฟ LED ไว้ใต้ลูกปัดดังกล่าวเพื่อเพิ่มเอฟเฟกต์แสง) วัดตำแหน่งของไฟ LED ให้สัมพันธ์กับจุดกึ่งกลางด้านล่างของขวดและแกน และโอนจุดเหล่านี้ไปยังพาเลทด้วยดินสอ เมื่อทำเครื่องหมายครบ 24 จุดบนพาเลทแล้ว ให้เจาะรูนำร่อง (เส้นผ่านศูนย์กลาง 2-3 มม.)

หมายเหตุ: ภาพสุดท้ายแสดงการวางตำแหน่งสตริงแรกซึ่งอิงจากมุมคงที่ 30° ระหว่างพวกเขา แต่อย่างที่เห็น สิ่งนี้ไม่เข้ากันกับพื้นที่ที่ขวดต้องการ ฉันต้องจัดแนวสายบนขวดใหม่

ภาพที่ 1: ภาพวาดแสดงไฟ LED และความหมาย

รูปที่ 2: กล่องพิเศษเพื่อค้นหาตำแหน่งของไฟ LED ใต้ขวดแต่ละขวด

รูปที่ 3: กล่องเดียวกันกับขวด

ภาพที่ 4: การวางขวด (และสาย) บนพาเลท

ขั้นตอนที่ 4: เจาะรูสำหรับ Leds

เจาะรูสำหรับไฟ Led
เจาะรูสำหรับไฟ Led

การใช้รูนำร่องของขั้นตอนก่อนหน้า ตอนนี้คุณควรเจาะรูสำหรับไฟ LED แต่เนื่องจากความหนาของแผ่นพาเลทมีแนวโน้มที่จะมากกว่าความสูงของไฟ LED คุณควรลดความหนาโดยการเจาะรูที่ใหญ่ขึ้น (ตัวอย่างเช่น สว่านไม้ 2 ซม.) เจาะรูที่ใหญ่กว่าก่อน (ความลึกต้องเท่ากับความหนาที่ "ไม่เจาะ" เท่ากับความสูงของไฟ LED) จากนั้นจึงเจาะรูของไฟ LED ปรับถ้าจำเป็นเพื่อให้ส่วนบนของโคมชิดกับพื้นผิวไม้

ทำเครื่องหมายแต่ละหลุมด้วยป้ายกำกับ Hx และ Mx (H สำหรับชั่วโมงและ M สำหรับนาที, x = 0, 1,..11)

นี่คือภาพประกอบโดยภาพ

ขั้นตอนที่ 5: เจาะรูในขวดเพื่อยึดเดือย

เจาะรูในขวดสำหรับยึดเดือย
เจาะรูในขวดสำหรับยึดเดือย

วิธีเจาะรูในกระจกสามารถดูได้ที่เว็บไซต์นี้:

หาตำแหน่งรูบนแกนขวดเพื่อไม่ให้ทับ LED ประมาณ 2-3 ซม. จากกึ่งกลางด้านล่างของขวดน่าจะโอเค เจาะรู (เส้นผ่านศูนย์กลาง 8 มม.) ที่ด้านล่าง แต่มีความหนาเพียงครึ่งเดียว (อย่าเจาะผ่านความหนาทั้งหมดของขวด!) ทำเครื่องหมายจุดเดียวกันที่ด้านบนของพาเลทแล้วเจาะรูที่มีเส้นผ่านศูนย์กลางเท่ากัน (ผ่านความหนาทั้งหมด OK) ตำแหน่งของรูจะวัดที่เชือกจากด้านล่างของขวด ซึ่งคุณควรทำเครื่องหมายไว้ขณะวางตำแหน่ง

ยึดเดือยบนขวดแต่ละขวดในรูด้วยกาวที่แข็งแรง (ส่วนประกอบคู่) แล้วปล่อยให้กาวแห้ง

ทันทีที่เดือยได้รับการแก้ไข คุณสามารถวางขวดบนพาเลท (แนวนอน) ได้โดยใส่เดือยลงในรู ขวดจะต้องวางหัวจรดหาง โดยขวดแรก (12 ชม.) โดยให้คอหันออกด้านนอก

นำขวดออก (ค่อยๆ ดึงเดือยออกจากไม้)

ตอนนี้คุณสามารถใส่ไฟ LED ลงในรู แล้วปรับรูที่เล็กเกินไปอีกครั้ง สำหรับผู้ที่มีขนาดใหญ่เกินไป คุณจะต้องปิดกั้นไฟ LED ด้วยไม้ชิ้นเล็ก ๆ ที่ขันไว้ข้างใต้

ฉันสังเกตเห็นว่าแม้ผ่านขวด แสงที่เกิดจากไฟ LED ก็แรงเกินไป และฉันทาสีด้วยสีเหลืองซีด

ภาพที่ 1: วัสดุเจาะกระจก (หมายเหตุ: ฉันใช้แผ่นยางรองใต้ขวด)

ขั้นตอนที่ 6: ชิ้นส่วนอิเล็กทรอนิกส์

ชิ้นส่วนอิเล็กทรอนิกส์
ชิ้นส่วนอิเล็กทรอนิกส์
ชิ้นส่วนอิเล็กทรอนิกส์
ชิ้นส่วนอิเล็กทรอนิกส์
ชิ้นส่วนอิเล็กทรอนิกส์
ชิ้นส่วนอิเล็กทรอนิกส์

วงจรคำสั่ง led พื้นฐานแสดงในภาพแรก (โปรดทราบว่าบอร์ด RTC ไม่แสดงในแผนภาพนี้ แต่การเชื่อมต่อกับ Arduino นั้นง่ายและได้รับการจัดทำเป็นเอกสารอย่างดี โดยส่วนใหญ่ผู้ผลิต RTC จะจัดหาไลบรารีให้) ในเวอร์ชันสุดท้าย แผงขนมปังถูกแทนที่ด้วย PCB

ฉันตัดสินใจแยกอินเทอร์เฟซชั่วโมงออกจากอินเทอร์เฟซนาทีเพื่อทำให้โปรแกรมง่ายขึ้นเล็กน้อย แต่ละอินเทอร์เฟซขึ้นอยู่กับการลงทะเบียนกะ 74HC595 สองตัวที่เชื่อมต่อแบบอนุกรม เอาต์พุตทั้งหมดของรีจิสเตอร์แรกถูกใช้ (0 ถึง 7) ในขณะที่สี่ตัวแรกเท่านั้นที่จำเป็นสำหรับอันที่สอง (8 ถึง 11)

สำหรับระบบสุดท้าย ฉันสร้างอินเทอร์เฟซแยกกันสองส่วนโดยใช้แผงทดสอบขนาด 5 ซม. x 10 ซม. (หลุมจัดกลุ่มด้วย 3) ฉันใช้ 74HC595 สองประเภท อันแรกเป็น DIL IC 16 พินดั้งเดิมที่ฉันติดตั้งบนตัวรองรับ 16 พินสองตัว บัดกรีบนบอร์ด และอันที่สองเป็นบอร์ดขนาดเล็กสองอันที่ฉันซื้อจาก Sparkfun พร้อมพื้นผิว 74HC595 หนึ่งอัน ติดตั้งบนแต่ละอัน (รูปภาพ #7)

ในขณะที่ฉันกำลังเร่งรีบ ฉันไม่สามารถรอการผลิตวงจรพิมพ์ได้ ดังนั้นฉันจึงสร้าง PCB ด้วยตัวเองด้วยแผงทดสอบ แต่ตอนนี้ไดอะแกรม PCB พร้อมใช้งานสำหรับอินเทอร์เฟซทั้งสอง (ดูภาพ PCB) โปรดทราบว่าคุณมีตัวเลือกระหว่างประเภทเดียวเท่านั้นหรือทั้งสองประเภทผสมกัน ขึ้นอยู่กับคุณ โปรดทราบว่าฉันยังไม่ได้ทดสอบ PCB ที่ผลิตขึ้น (ไม่สามารถอัปโหลดไฟล์ Fritzing ที่นี่ แต่ฉันสามารถจัดหาให้ได้หากได้รับการร้องขอ)

การปรับ RTC: ในครั้งแรกที่ Arduino เชื่อมต่อกับ RTC คุณจะต้องตั้งค่านาฬิกาให้ถูกต้อง ในที่สุด การปรับนี้จำเป็นอีกครั้งเพื่อชดเชยการเปลี่ยน RTC (2-3 วินาทีต่อวัน)

การตั้งค่านี้เกิดขึ้นใน set-up() โดยมีเงื่อนไขว่าคำสั่งต่อไปนี้ไม่มีความคิดเห็น:

//#define RTC_ADJUST true // หากกำหนด การปรับ RTC จะเกิดขึ้นในการตั้งค่า

หากบรรทัดด้านบนถูกใส่ความคิดเห็น set-up() จะปรับ RTC ด้วยค่าคงที่ต่อไปนี้ (อย่าลืมเริ่มต้นค่าคงที่เหล่านี้ด้วยค่าปัจจุบัน เช่น ค่าในขณะที่รวบรวมและดาวน์โหลด โปรแกรมไปยัง Arduino)

// อย่าลืมปรับค่าคงที่ด้านล่างหากกำหนด RTC_ADJUST ไว้ !!#define DEF_YEAR 2019 // ปีเริ่มต้นที่ใช้ในการปรับ RTC เริ่มต้น

#define DEF_MONTH 11 // เดือนเริ่มต้นที่ใช้ในการปรับ RTC เริ่มต้น

#define DEF_DAY 28 // วันเริ่มต้นที่ใช้ในการปรับ RTC เริ่มต้น

#define DEF_HOUR 11 // ชั่วโมงเริ่มต้นที่ใช้ในการปรับ RTC เริ่มต้น

#define DEF_MIN 8 // นาทีเริ่มต้นที่ใช้ในการปรับ RTC เริ่มต้น

#define DEF_SEC 0 // วินาทีเริ่มต้นที่ใช้ในการปรับ RTC เริ่มต้น

สิ่งสำคัญอีกอย่าง: เมื่อทำการปรับแล้ว อย่าลืมคอมเมนต์บรรทัดใหม่ และดาวน์โหลดโปรแกรมไปที่ Arduino. อีกครั้ง

//#define RTC_ADJUST true // หากกำหนด การปรับ RTC จะเกิดขึ้นในการตั้งค่า

มิฉะนั้น การปรับ RTC จะเกิดขึ้นด้วยค่าที่ไม่ถูกต้องทุกครั้งที่โปรแกรมรีสตาร์ท (เปิดเครื่องหรือรีเซ็ต Arduino) ที่เกิดขึ้นระหว่างการทดสอบของฉัน !! (ฉันลืมที่จะแสดงความคิดเห็นบรรทัดนั้นอีกครั้งและไม่เข้าใจว่าเกิดอะไรขึ้น…)

ตอนนี้เรามาดูการทำงานของนาฬิกากันดีกว่า

โดยทั่วไป มีสองโหมดการแสดงผล:

  1. โหมด CLOCK (ดูรูปที่ 9)

    1. ชั่วโมงที่นำไปสู่ชั่วโมงปัจจุบันคือON
    2. นาทีที่นำซึ่งสอดคล้องกับผลคูณปัจจุบันของ 5 นาทีคือเปิด (ไฟ LED นี้จะอยู่ใน 5 นาที)
    3. นำแต่ละนาที นอกเหนือจากที่อยู่บน กะพริบเป็นเวลา 5 วินาที (ซึ่ง led มาจากค่า "วินาที" ที่อ่านจาก RTC)

โหมด RANDOM (ดูรูปที่ 10)

    ไฟ LED ทั้งหมดจะเปิดและปิดแบบสุ่ม ยกเว้น "ชั่วโมง" และ "นาที" ปัจจุบัน

เวลาที่นำนาทีเป็น ON เป็นเวลา 5 นาที แต่ในช่วงเวลานั้น นาที "ของจริง" จะเลื่อนไปข้างหน้า ตัวอย่างเช่น เมื่อนาทีปัจจุบันกลายเป็น 15 ไฟ LED "ตะวันออก" จะเปิดขึ้นในช่วง 5 นาที แต่นาทีจริงจะเป็น 15, 16, 17, 18 และ 19 ในช่วง 5 นาทีนั้น (เราจะเรียกสิ่งนี้ว่า "5 นาที วงจร")

โปรแกรมทำสามสิ่ง:

  1. คำนวณความแตกต่างระหว่างนาที "ของจริง" กับนาทีที่แสดง โดยมีค่า 5 ค่า: 0, 1, 2, 3 และ 4
  2. จะคำนวณระยะเวลาที่โหมดสุ่มควรอยู่ได้โดยการคูณตัวเลขที่อยู่ด้านบนด้วย 6 วินาที นำไปสู่ 5 ค่า: 0, 6, 12, 18 และ 24 (วินาที) สำหรับโหมดสุ่มและความแตกต่างระหว่างค่าเหล่านี้กับ 30 สำหรับ โหมดนาฬิกา (30, 24, 18, 12 และ 6 วินาที)
  3. มันทำซ้ำการกระจายระหว่างโหมดนี้สองครั้งในแต่ละนาที (รวมของทั้งสองโหมดคือ 30 วินาทีเสมอ)

"รอบ 5 นาที" นี้จะใช้ซ้ำแล้วซ้ำอีกทุกครั้งที่เปิด "นาทีที่นำ" ถัดไป (ซึ่งเกิดขึ้นทุกๆ 5 นาที)

หมายเหตุ: เราสามารถหาค่านาทีที่แท้จริงได้โดยการนับระยะเวลาที่สุ่มใช้โหมดนี้และหารระยะเวลานี้ด้วย 6; ตัวอย่างเช่น หากคุณนับ 18 วินาทีสำหรับโหมดสุ่มและเปิด "25" นาที แสดงว่านาทีจริงคือ 28 (18/6 = 3 และ 25+3 = 28)

ในวิดีโอนี้ คุณสามารถเห็นโหมดนาฬิกาก่อน (เวลาปัจจุบันอยู่ระหว่าง 10h25 ถึง 10h29) จากนั้นโหมดสุ่ม (นาน 6 วินาที หมายความว่านาทีปัจจุบันคือ 26) จากนั้นจึงเข้าสู่โหมดนาฬิกาอีกครั้ง โปรดทราบว่าพาเลทวางบนพื้นและขวด "เที่ยงคืน" อยู่ทางขวา ตั้งแต่นิทรรศการครั้งแรกนี้ นาฬิกาถูกนำเสนอในแนวตั้งบนฐานรองรับขาตั้งกล้อง (รูปภาพ #11)

โปรดสังเกตด้วยว่าไฟ LED ชั่วโมง (10 ชม.) และนาที (25 ม.) ปัจจุบันไม่ได้รับผลกระทบจากโหมดสุ่ม

หมายเหตุเกี่ยวกับไดอะแกรม PCB

PCB ตัวแรก (ดั้งเดิม 74HC595: รูปภาพ #4):

  • U1 และ U2 คือ 74HC595 IC's
  • รูปแบบพินสามารถพบได้ในภาพที่ 6 (ดูพินที่ใช้ใน Arduino ในการประกาศตัวแปรของโปรแกรม)

PCB ที่สอง (กระดานฝ่าวงล้อม Sparkfun 74HC595: รูปภาพ #5)

เค้าโครงพินสามารถพบได้ในรูปภาพ #7

ฉันเคยใช้หัวเข็มหมุดตัวผู้ที่บัดกรีบนแผงอินเทอร์เฟซทั้งสอง ดังนั้นตัวเชื่อมต่อของสายทั้งหมดจึงเป็นตัวเมีย

ขั้นตอนที่ 7: แก้ไขขวดบนพาเลทและเชื่อมต่อ Leds

แก้ไขขวดบนพาเลทและเชื่อมต่อไฟ Led
แก้ไขขวดบนพาเลทและเชื่อมต่อไฟ Led
แก้ไขขวดบนพาเลทและเชื่อมต่อไฟ Led
แก้ไขขวดบนพาเลทและเชื่อมต่อไฟ Led
แก้ไขขวดบนพาเลทและเชื่อมต่อไฟ Led
แก้ไขขวดบนพาเลทและเชื่อมต่อไฟ Led

สำหรับแต่ละขวดในทางกลับกัน:

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

แค่นั้นแหละ! (อย่าลืมเอาสายและฉลากขวดที่ท้าย)

สำหรับแต่ละ led:

เชื่อมต่อขาทั้งสองข้างเข้ากับสาย + และ GND + มาจากพินเอาต์พุตที่เหมาะสมบนบอร์ดอินเตอร์เฟสและ GND จากหนึ่งใน "บอร์ดกระจาย GND" ระดับกลาง บอร์ดเหล่านี้เป็นเพียงบอร์ดทดสอบ (+/- 2 ซม. x 5 ซม.) ที่มีแถบเส้นตรงที่คุณบัดกรีส่วนหัวของหมุดตัวผู้ด้วยหมุดทั้งหมดของพวกเขาที่บัดกรีในแถบเดียวกัน มีขาเดียวเชื่อมต่อกับอินเทอร์เฟซ GND ขาเดียว หากคุณไม่มีพิน GND เพียงเชื่อมต่อวงดนตรีกับอันที่สองแล้วเชื่อมต่อเข้าด้วยกัน ฉันแนะนำให้แยกส่วนต่อเชื่อม LED ที่บัดกรีด้วยปลอกหดความร้อน (สีน้ำเงินสำหรับ GND และสีแดงสำหรับสัญญาณไฟ LED, "+")

แก้ไขแผงทั้งหมดบนพาเลทด้านล่าง และเชื่อมต่อเข้าด้วยกันด้วยสายปลายขั้วต่อตัวเมีย (Arduino กับแผงอินเตอร์เฟส, 6 สัญญาณ + GND, อุปกรณ์จ่ายไฟให้กับ Arduino และบอร์ดอินเตอร์เฟสและ RTC, RTC ถึง Arduino, บอร์ดอินเตอร์เฟสถึง 24 ไฟ LED (12 บนบอร์ดอินเทอร์เฟซเดียว)อย่าลืมเชื่อมต่อ GND กับบอร์ดทั้งหมด

แก้ไขแหล่งจ่ายไฟบนกระดานไม้แนวตั้งหนึ่งอัน ต่อสาย AC เข้ากับอันแรกและเดซี่เชนกับอันที่สอง (ระวัง เสียบสาย AC ต่อเมื่อการเชื่อมต่อเสร็จสิ้นเท่านั้น!)

วิดีโอด้านล่างแสดงสามนาทีแรกของรอบ 5 นาทีหนึ่งรอบ เวลาปัจจุบันเกือบ 4 ชม. 55 และวิดีโอจะเริ่มก่อนที่ไฟ LED "50 นาที" จะเปลี่ยนเป็น "55 นาที" (ในวินาทีสุดท้ายของโหมดสุ่ม 24 วินาทีแรก โหมดนาฬิกา 6 วินาที จากนั้นจึงเปลี่ยนเป็น LED 55 นาที) ในช่วงนาทีแรก (16h55) จะแสดงเฉพาะโหมดนาฬิกา (60 วินาที) ในช่วงนาทีที่สอง (16h56) แต่ละขั้นตอน 30 วินาทีจะเริ่มต้นด้วยโหมดสุ่ม 6 วินาที จากนั้นโหมดนาฬิกา 24 วินาทีจะตามมาในช่วงนาทีที่สาม (16h57) สุ่ม 12 วินาทีและนาฬิกา 18 วินาที (สองครั้ง)

ขั้นตอนที่ 8: หมายเหตุ ส่วนขยายและการปรับปรุง

ข้อสังเกต ส่วนขยาย และการปรับปรุง
ข้อสังเกต ส่วนขยาย และการปรับปรุง

หมายเหตุ:

  • เมื่อโปรแกรมเริ่มทำงาน จะรอจนกว่าจะถึง "นาทีเต็ม" ถัดไป (เช่น RTC-seconds = 0) ก่อนเริ่มการแสดง LED
  • พารามิเตอร์บางอย่างในโปรแกรมอนุญาตให้

    • เลือกการวางแนวอื่นสำหรับไฟ LED "เที่ยงคืน"
    • แจกจ่ายทั้งสองโหมดในหนึ่งนาทีเต็มแทนที่จะเป็นสองครั้ง 30 วินาที
  • แท่นรองรับพาเลทและขวดไซเดอร์ไม่จำเป็นจริงๆ คุณสามารถประดิษฐ์แท่นแสดงประเภทอื่น ๆ ได้เช่นกล่องน้ำตาลเป็นต้นตามที่แสดงในภาพ

ส่วนขยาย:

  • ฉันปรับโปรแกรมและสร้างเวอร์ชัน "ที่ขับเคลื่อนด้วยตาราง" ซึ่งเปิดใช้การแบ่งย่อยโหมดนาฬิกา/สุ่มตามตารางเวลามากกว่ากฎที่กำหนดไว้ล่วงหน้า
  • ตาราง "ขึ้นกับปฏิทิน" (วันที่ ชั่วโมงเริ่มต้น ชั่วโมงหยุด) ช่วยให้สามารถควบคุมเวลาเริ่มต้นและหยุดของนาฬิกา เพื่อให้สามารถเปิดเครื่องทิ้งไว้เมื่อนิทรรศการปิดในตอนเย็น (โดยอัตโนมัติ หยุดการแสดงผลและเริ่มในตอนเช้าโดยไม่ต้องดำเนินการใดๆ)
  • โปรแกรมมีเวอร์ชันที่การแสดงผลถูกทริกเกอร์โดยการตรวจจับการมีอยู่ของผู้เข้าชมและหยุด 5 นาทีหลังจากไม่มีผู้เยี่ยมชม

การปรับปรุง:

  • RTC: เวอร์ชันที่เสถียรกว่าสามารถแทนที่ 1307 ที่ใช้จนถึงตอนนี้
  • คุณสามารถเพิ่มการปรับ RTC ด้วยตนเองได้ (เช่น โดยการเพิ่มตัวเข้ารหัสแบบหมุนสองตัว เช่น https://wiki.dfrobot.com/Rotary_Switch_Module_V1_… และปุ่มกดเพื่อยืนยันการตั้งค่าชั่วโมงและนาทีใหม่)

แนะนำ: