Prinsip operasi paparan yang dicadangkan, yang dibuat dan dibina oleh Instructables di bawah nama alstroemeria, adalah seperti berikut: segmen yang dikembangkan oleh servos melambangkan bayangan, yang menjadikannya kelihatan. Segmen yang tinggal, terletak di satah yang sama dengan latar belakang, bergabung dengannya.
Jelas sekali
buatan sendiri Ternyata mahal, kerana baginya master memperoleh sebanyak 28 servos seperti:
Dan modul pengurusan yang dihubungkan ke
Arduino seperti ini:
Modul masa sebenar (RTC) terhadap latar belakang ini nampaknya merupakan perbelanjaan yang sangat kecil.
Setelah memperoleh semua komponen yang diperlukan, tuan itu setakat ini meletakkannya untuk bekerja pada template untuk membuat bahagian mekanikal paparan. Dia mendapat empat fail:
1,
2,
3,
4. Wizard memaparkan fail 1 dan 3 dua kali pada plotter pemotongan, dan 2 dan 4, satu demi satu, semuanya pada skala 1: 1, dan mendapat enam bahagian, yang sebahagiannya menyerupai kad punch tua dalam beberapa cara. Anda juga boleh mencetak, juga pada skala 1: 1 dan dalam kuantiti yang sama, dan dipotong secara manual.
Dremel memotong pin logam berongga dengan panjang 20 mm dan tiub dengan diameter luar sedikit lebih besar daripada diameter luaran pin dengan panjang 10 mm:
Lap lapisan dengan pita tebal yang tebal, menambah tiub:
Ia menambahkan segmen bergerak yang terpaku pada pin yang dilalui melalui tiub, pada bahagian belakang pemutar kawat baja ke pin yang sama, dan ini di mana pinnya berongga:
Ia melengkung pushers, gam servos dan menghubungkannya dengan mereka:
Menutup servos dengan helaian yang berlubang:
Modul kawalan servo menyambung mengikut skema yang diberikan pada awal artikel. Pemacu sendiri disambungkan ke modul mengikut susunan yang sepadan dengan jujukan segmen standard:
Modul RTC menghubungkan seperti berikut: SDA - pin 4 daripada Arduino, SCL - pin 5, ditambah kuasa dan wayar biasa - sejajar dengan baris Arduino yang sepadan. Inilah hasilnya:
Wizard menetapkan masa dalam modul RTC dengan lakaran ini (anda memerlukan perpustakaan RTClib):
#include
#include "RTClib.h"
RTC_DS1307 RTC;
void setup () {
Serial.begin (57600);
Wire.begin ();
RTC.begin ();
jika (! RTC.isrunning ()) {
Serial.println ("RTC TIDAK berjalan!");
RTC.adjust (DateTime (__ DATE__, __TIME__));
}
}
Kemudian ia mengisi dalam lakaran utama yang memerlukan perpustakaan yang sama:
#include
#include "RTClib.h"
RTC_DS1307 RTC;
pendek segA = 0; // Papar pin 14
segB = 1 pendek; // Papar pin 16
pendek segC = 2; // Papar pin 13
segD = 3 pendek; // Papar pin 3
segE = 4 pendek; // Papar pin 5
segF pendek = 5; // Papar pin 11
segg = 6 pendek; // Papar pin 15
segA_OUT = 110;
segB_OUT pendek = 110;
pendek segC_OUT = 110;
pendek segD_OUT = 110;
pendek segE_OUT = 110;
segF_OUT = 110;
pendek segG_OUT = 110;
pendek segA_IN = 90;
segB_IN = 90 pendek;
pendek segC_IN = 90;
pendek segD_IN = 90;
pendek segE_IN = 90;
segF_IN = 90 pendek;
pendek segG_IN = 90;
int TIME = 2000;
DateTime datePast;
DateTime dateNow;
/ home keeping
void setup () {
Serial.begin (9600);
Wire.begin ();
RTC.begin ();
RTC.adjust (DateTime (__ DATE__, __TIME__));
datePast = RTC.now ();
}
/ // gelung utama
kekosongan gelung () {
dateNow = RTC.now ();
jika (! (datePast.hour () == dateNow.hour () && datePast.minute () == dateNow.hour ()))
{
displayNumber (dateNow.hour () * 100 + dateNow.minute ());
datePast = dateNow;
}
}
// Memandangkan nombor, kami memaparkan 10:22
/ / Selepas berjalan melalui 4 nombor, paparan dibiarkan dimatikan
void displayNumber (int toDisplay) {
untuk (int digit = 4; digit> 0; digit--) {
lightNumber (toDisplay% 10, angka);
toDisplay / = 10;
}
// pergerakan permulaan
Serial.print ("T"); Serial.println (TIME);
}
void move (int servo, int position) {
Serial.print ("#");
Serial.print (servo);
Serial.print ("P");
Serial.print (kedudukan);
}
// Memandangkan nombor, bertukar kepada segmen tersebut
// Jika nombor == 10, maka matikan nombor
void lightNumber (int numberToDisplay, int segment) {
int offset = (segmen - 1) * 7;
suis (numberToDisplay) {
kes 0:
bergerak (segA + offset, segA_OUT);
bergerak (segB + offset, segB_OUT);
bergerak (segC + offset, segC_OUT);
bergerak (segD + offset, segD_OUT);
bergerak (segE + offset, segE_OUT);
bergerak (segF + offset, segF_OUT);
bergerak (segg + offset, segG_IN);
pecah;
kes 1:
bergerak (segA + offset, segA_IN);
bergerak (segB + offset, segB_OUT);
bergerak (segC + offset, segC_OUT);
bergerak (segD + mengimbangi, segD_IN);
bergerak (segE + offset, segE_IN);
bergerak (segF + offset, segF_IN);
bergerak (segg + offset, segG_IN);
pecah;
kes 2:
bergerak (segA + offset, segA_OUT);
bergerak (segB + offset, segB_OUT);
bergerak (segC + offset, segC_IN);
bergerak (segD + offset, segD_OUT);
bergerak (segE + offset, segE_OUT);
bergerak (segF + offset, segF_IN);
bergerak (segg + offset, segG_OUT);
pecah;
kes 3:
bergerak (segA + offset, segA_OUT);
bergerak (segB + offset, segB_OUT);
bergerak (segC + offset, segC_OUT);
bergerak (segD + offset, segD_OUT);
bergerak (segE + offset, segE_IN);
bergerak (segF + offset, segF_IN);
bergerak (segg + offset, segG_OUT);
pecah;
kes 4:
bergerak (segA + offset, segA_IN);
bergerak (segB + offset, segB_OUT);
bergerak (segC + offset, segC_OUT);
bergerak (segD + mengimbangi, segD_IN);
bergerak (segE + offset, segE_IN);
bergerak (segF + offset, segF_OUT);
bergerak (segg + offset, segG_OUT);
pecah;
kes 5:
bergerak (segA + offset, segA_OUT);
bergerak (segB + offset, segB_IN);
bergerak (segC + offset, segC_OUT);
bergerak (segD + offset, segD_OUT);
bergerak (segE + offset, segE_IN);
bergerak (segF + offset, segF_OUT);
bergerak (segg + offset, segG_OUT);
pecah;
kes 6:
bergerak (segA + offset, segA_OUT);
bergerak (segB + offset, segB_IN);
bergerak (segC + offset, segC_OUT);
bergerak (segD + offset, segD_OUT);
bergerak (segE + offset, segE_OUT);
bergerak (segF + offset, segF_OUT);
bergerak (segg + offset, segG_OUT);
pecah;
kes 7:
bergerak (segA + offset, segA_OUT);
bergerak (segB + offset, segB_OUT);
bergerak (segC + offset, segC_OUT);
bergerak (segD + mengimbangi, segD_IN);
bergerak (segE + offset, segE_IN);
bergerak (segF + offset, segF_IN);
bergerak (segg + offset, segG_IN);
pecah;
kes 8:
bergerak (segA + offset, segA_OUT);
bergerak (segB + offset, segB_OUT);
bergerak (segC + offset, segC_OUT);
bergerak (segD + offset, segD_OUT);
bergerak (segE + offset, segE_OUT);
bergerak (segF + offset, segF_OUT);
bergerak (segg + offset, segG_OUT);
pecah;
kes 9:
bergerak (segA + offset, segA_OUT);
bergerak (segB + offset, segB_OUT);
bergerak (segC + offset, segC_OUT);
bergerak (segD + offset, segD_OUT);
bergerak (segE + offset, segE_IN);
bergerak (segF + offset, segF_OUT);
bergerak (segg + offset, segG_OUT);
pecah;
kes 10:
bergerak (segA + offset, segA_IN);
bergerak (segB + offset, segB_IN);
bergerak (segC + offset, segC_IN);
bergerak (segD + mengimbangi, segD_IN);
bergerak (segE + offset, segE_IN);
bergerak (segF + offset, segF_IN);
bergerak (segg + offset, segG_IN);
pecah;
}
}
Semuanya berfungsi:
Jadi paparan mekanikal reka bentuk yang tidak remeh sudah siap.