หลักการทำงานของจอแสดงผลที่เสนอซึ่งสร้างและสร้างขึ้นโดย Instructables ภายใต้ชื่อเล่น alstroemeria มีดังนี้: กลุ่มขั้นสูงโดยเซอร์โวสร้างเงาซึ่งทำให้มองเห็นได้ ส่วนที่เหลือซึ่งอยู่ในระนาบเดียวกันกับพื้นหลังรวมเข้าด้วยกัน
หลังจากได้รับส่วนประกอบที่จำเป็นทั้งหมดแล้วปรมาจารย์วางไว้เพื่อทำงานกับเทมเพลตสำหรับสร้างชิ้นส่วนเชิงกลของจอแสดงผล เขาได้รับสี่ไฟล์:
. ตัวช่วยสร้างจะแสดงไฟล์ 1 และ 3 สองครั้งบนพล็อตเตอร์ตัดและ 2 และ 4 ครั้งละหนึ่งไฟล์ทั้งหมดในระดับ 1: 1 และรับได้หกส่วนโดยบางส่วนคล้ายกับบัตรเจาะแบบเก่าในบางวิธี นอกจากนี้คุณยังสามารถพิมพ์ขนาด 1: 1 และในปริมาณเดียวกันและตัดด้วยตนเอง
เดรเมลตัดหมุดโลหะกลวงที่มีความยาว 20 มม. และท่อที่มีเส้นผ่านศูนย์กลางภายนอกใหญ่กว่าเส้นผ่านศูนย์กลางภายนอกของพินเล็กน้อยที่มีความยาว 10 มม.:
มันเพิ่มส่วนที่เคลื่อนย้ายได้ติดกับหมุดที่ผ่านท่อบนด้านหลังกาวลวดเหล็ก pushers ที่หมุดเดียวกันและนี่คือที่หมุดจะกลวง:
โมดูลควบคุมเซอร์โวเชื่อมต่อตามแบบแผนที่กำหนดไว้ที่จุดเริ่มต้นของบทความ ตัวไดรฟ์เชื่อมต่อกับโมดูลตามลำดับที่สอดคล้องกับการกำหนดเซ็กเมนต์มาตรฐาน:
โมดูล RTC เชื่อมต่อดังนี้: SDA - pin 4 Arduino, SCL - pin 5 รวมทั้งพลังงานและสายสามัญ - ขนานกับสาย Arduino ที่เกี่ยวข้อง นี่คือผลลัพธ์:
#include
#include "RTClib.h"
RTC_DS1307 RTC;
การตั้งค่าเป็นโมฆะ () {
Serial.begin (57600);
Wire.begin ();
RTC.begin ();
if (! RTC.isrunning ()) {
Serial.println ("RTC ไม่ทำงาน!");
RTC.adjust (DateTime (__ DATE__, __TIME__));
}
}
จากนั้นจะเต็มไปด้วยร่างหลักที่ต้องการไลบรารีเดียวกัน:
#include
#include "RTClib.h"
RTC_DS1307 RTC;
สั้น segA = 0; // แสดงพิน 14
สั้น segB = 1; // แสดงพิน 16
สั้น segC = 2; // แสดงพิน 13
สั้น segD = 3; // แสดงพิน 3
สั้น segE = 4; // แสดงพิน 5
สั้น segF = 5; // แสดงพิน 11
สั้น segG = 6; // แสดงพิน 15
สั้น segA_OUT = 110;
สั้น segB_OUT = 110;
สั้น segC_OUT = 110;
สั้น segD_OUT = 110;
สั้น segE_OUT = 110;
สั้น segF_OUT = 110;
สั้น segG_OUT = 110;
สั้น segA_IN = 90;
สั้น segB_IN = 90;
สั้น segC_IN = 90;
สั้น segD_IN = 90;
สั้น segE_IN = 90;
สั้น segF_IN = 90;
สั้น segG_IN = 90;
int TIME = 2000;
DateTime datePast;
DateTime dateNow;
// การดูแลบ้าน
การตั้งค่าเป็นโมฆะ () {
Serial.begin (9600);
Wire.begin ();
RTC.begin ();
RTC.adjust (DateTime (__ DATE__, __TIME__));
datePast = RTC.now ();
}
// main loop
void loop () {
dateNow = RTC.now ();
ถ้า (! (datePast.hour () == dateNow.hour () && datePast.minute () == dateNow.hour ())
{
displayNumber (dateNow.hour () * 100 + dateNow.minute ());
datePast = dateNow;
}
}
// ให้ตัวเลขเราแสดง 10:22
// หลังจากใช้ตัวเลข 4 ตัวจอแสดงผลจะถูกปิด
ถือเป็นโมฆะ displayNumber (int toDisplay) {
สำหรับ (int หลัก = 4; หลัก> 0; หลัก -) {
lightNumber (toDisplay% 10 หลัก);
toDisplay / = 10;
}
// เริ่มการเคลื่อนไหว
Serial.print ("T"); Serial.println (TIME);
}
โมฆะย้าย (int servo, ตำแหน่ง int) {
Serial.print ("#");
Serial.print (เซอร์โว)
Serial.print ("P");
Serial.print (ตำแหน่ง);
}
// ให้ตัวเลขแล้วเปิดเซ็กเมนต์เหล่านั้น
// ถ้า number == 10 ให้ปิดเลขที่
ถือเป็นโมฆะ lightNumber (int numberToDisplay ส่วน int) {
int offset = (เซกเมนต์ - 1) * 7;
สวิตช์ (numberToDisplay) {
กรณีที่ 0:
ย้าย (segA + offset, segA_OUT);
ย้าย (segB + offset, segB_OUT);
ย้าย (segC + offset, segC_OUT);
ย้าย (segD + offset, segD_OUT);
ย้าย (segE + offset, segE_OUT);
ย้าย (segF + offset, segF_OUT);
ย้าย (segG + offset, segG_IN);
ทำลาย;
กรณีที่ 1:
ย้าย (segA + offset, segA_IN);
ย้าย (segB + offset, segB_OUT);
ย้าย (segC + offset, segC_OUT);
ย้าย (segD + offset, segD_IN);
ย้าย (segE + offset, segE_IN);
ย้าย (segF + ชดเชย, segF_IN);
ย้าย (segG + offset, segG_IN);
ทำลาย;
กรณีที่ 2:
ย้าย (segA + offset, segA_OUT);
ย้าย (segB + offset, segB_OUT);
ย้าย (segC + offset, segC_IN);
ย้าย (segD + offset, segD_OUT);
ย้าย (segE + offset, segE_OUT);
ย้าย (segF + ชดเชย, segF_IN);
ย้าย (segG + offset, segG_OUT);
ทำลาย;
กรณีที่ 3:
ย้าย (segA + offset, segA_OUT);
ย้าย (segB + offset, segB_OUT);
ย้าย (segC + offset, segC_OUT);
ย้าย (segD + offset, segD_OUT);
ย้าย (segE + offset, segE_IN);
ย้าย (segF + ชดเชย, segF_IN);
ย้าย (segG + offset, segG_OUT);
ทำลาย;
กรณีที่ 4:
ย้าย (segA + offset, segA_IN);
ย้าย (segB + offset, segB_OUT);
ย้าย (segC + offset, segC_OUT);
ย้าย (segD + offset, segD_IN);
ย้าย (segE + offset, segE_IN);
ย้าย (segF + offset, segF_OUT);
ย้าย (segG + offset, segG_OUT);
ทำลาย;
กรณีที่ 5:
ย้าย (segA + offset, segA_OUT);
ย้าย (segB + ชดเชย, segB_IN);
ย้าย (segC + offset, segC_OUT);
ย้าย (segD + offset, segD_OUT);
ย้าย (segE + offset, segE_IN);
ย้าย (segF + offset, segF_OUT);
ย้าย (segG + offset, segG_OUT);
ทำลาย;
กรณีที่ 6:
ย้าย (segA + offset, segA_OUT);
ย้าย (segB + ชดเชย, segB_IN);
ย้าย (segC + offset, segC_OUT);
ย้าย (segD + offset, segD_OUT);
ย้าย (segE + offset, segE_OUT);
ย้าย (segF + offset, segF_OUT);
ย้าย (segG + offset, segG_OUT);
ทำลาย;
กรณีที่ 7:
ย้าย (segA + offset, segA_OUT);
ย้าย (segB + offset, segB_OUT);
ย้าย (segC + offset, segC_OUT);
ย้าย (segD + offset, segD_IN);
ย้าย (segE + offset, segE_IN);
ย้าย (segF + ชดเชย, segF_IN);
ย้าย (segG + offset, segG_IN);
ทำลาย;
กรณีที่ 8:
ย้าย (segA + offset, segA_OUT);
ย้าย (segB + offset, segB_OUT);
ย้าย (segC + offset, segC_OUT);
ย้าย (segD + offset, segD_OUT);
ย้าย (segE + offset, segE_OUT);
ย้าย (segF + offset, segF_OUT);
ย้าย (segG + offset, segG_OUT);
ทำลาย;
กรณีที่ 9:
ย้าย (segA + offset, segA_OUT);
ย้าย (segB + offset, segB_OUT);
ย้าย (segC + offset, segC_OUT);
ย้าย (segD + offset, segD_OUT);
ย้าย (segE + offset, segE_IN);
ย้าย (segF + offset, segF_OUT);
ย้าย (segG + offset, segG_OUT);
ทำลาย;
กรณีที่ 10:
ย้าย (segA + offset, segA_IN);
ย้าย (segB + ชดเชย, segB_IN);
ย้าย (segC + offset, segC_IN);
ย้าย (segD + offset, segD_IN);
ย้าย (segE + offset, segE_IN);
ย้าย (segF + ชดเชย, segF_IN);
ย้าย (segG + offset, segG_IN);
ทำลาย;
}
}