Piedāvātā displeja, kuru izgatavoja un uzbūvēja Instructables ar segvārdu alstroemeria, darbības princips ir šāds: servos izvērstie segmenti rada ēnu, kas padara tos redzamus. Atlikušie segmenti, kas atrodas vienā plaknē ar fonu, saplūst ar to.
Ir skaidrs, ka
mājās gatavots Tas izrādās dārgi, jo viņai meistars iegādājas pat 28 šādus servos:
Un pārvaldības modulis, kas savieno ar
Arduino kā šis:
Reālā laika pulksteņa (RTC) modulis, ņemot vērā šo fonu, šķiet, ir ļoti mazi izdevumi.
Apgūstot visus nepieciešamos komponentus, meistars līdz šim tos noliek malā, lai strādātu pie veidnēm displeja mehāniskās daļas izgatavošanai. Viņš saņem četrus failus:
1,
2,
3,
4. Vednis divas reizes parāda griešanas ploterī 1. un 3. failu un 2. un 4. failu pa vienam, visi mērogā 1: 1, un iegūst sešas daļas, no kurām dažas kaut kādā veidā atgādina vecās perfokartes. Jūs varat arī drukāt, arī mērogā 1: 1 un tādos pašos apjomos, un griezt manuāli.
Dremel sagriež dobas metāla tapas ar garumu 20 mm un caurules ar ārējo diametru, kas ir nedaudz lielāks par tapas ārējo diametru ar 10 mm garumu:
Līmē slāņus ar biezu abpusēju lenti, pievieno caurules:
Tam pievieno pārvietojamos segmentus, kas pielīmēti caur caurulēm izvadītajām tapām, otrpus tām pašām tapām līmē tērauda stieples stūmējus, un šeit tapas ir dobas:
Tas saliek stūmējus, līmē servos un savieno ar tām:
Aizver servo ar atlikušo perforēto lapu:
Servo vadības modulis savienojas saskaņā ar shēmu, kas norādīta raksta sākumā. Paši diskdziņi ir savienoti ar moduli secībā, kas atbilst standarta segmenta apzīmējumiem:
RTC moduli savieno šādi: SDA - 4. pin Arduino, SCL - 5. kontaktdakša, kā arī strāvas stiprums un parastais vads - paralēli atbilstošajām Arduino līnijām. Rezultāts:
Vednis iestata laiku RTC modulī ar šo skici (jums nepieciešama RTClib bibliotēka):
# iekļaut
# iekļaut "RTClib.h"
RTC_DS1307 RTC;
Nederīga iestatīšana () {
Sērijas.begin (57600);
Wire.begin ();
RTC.begin ();
if (! RTC.isrunning ()) {
Serial.println ("RTC NAV darbojas!");
RTC.adjust (DateTime (__ DATE__, __TIME__));
}
}
Tad tas aizpilda galveno skici, kurai nepieciešama tā pati bibliotēka:
# iekļaut
# iekļaut "RTClib.h"
RTC_DS1307 RTC;
īss segA = 0; // Displeja tapa 14
īss segB = 1; // Displeja tapa 16
īss segC = 2; // 13. tapu
īss segD = 3; // 3. displeja tapa
īss segE = 4; // 5. displeja tapa
īss segF = 5; // 11. tapu
īss segG = 6; // Displeja pin 15
īss segA_OUT = 110;
īss segB_OUT = 110;
īss segC_OUT = 110;
īss segD_OUT = 110;
īss segmentE_OUT = 110;
īss segF_OUT = 110;
īss segmentG_OUT = 110;
īss segA_IN = 90;
īss segB_IN = 90;
īss segC_IN = 90;
īss segD_IN = 90;
īss segE_IN = 90;
īss segF_IN = 90;
īss segmentG_IN = 90;
int LAIKS = 2000;
DateTime datePast;
DateTime dateNow;
// mājas uzturēšana
Nederīga iestatīšana () {
Sērijas.begin (9600);
Wire.begin ();
RTC.begin ();
RTC.adjust (DateTime (__ DATE__, __TIME__));
datePast = RTC.now ();
}
// galvenā cilpa
tukšs cilpa () {
dateNow = RTC.now ();
if (! (datePast.hour () == dateNow.hour () && datePast.minute () == dateNow.hour ()))
{
displayNumber (dateNow.hour () * 100 + dateNow.minute ());
datePast = dateNow;
}
}
// Ņemot vērā numuru, mēs parādām 10:22
// Pēc 4 numuru izspiešanas displejs tiek izslēgts
void displayNumber (int toDisplay) {
priekš (int cipars = 4; cipars> 0; cipars--) {
lightNumber (displejam% 10, cipars);
displejs / = 10;
}
// sākt kustību
Serial.print ("T"); Serial.println (TIME);
}
tukšs gājiens (int servo, int pozīcija) {
Serial.print ("#");
Serial.print (servo);
Serial.print ("P");
Serial.print (pozīcija);
}
// Piešķirot numuru, ieslēdziet šos segmentus
// Ja skaitlis == 10, tad izslēdziet numuru
void lightNumber (int numberToDisplay, int segment) {
int nobīde = (segments - 1) * 7;
slēdzis (numberToDisplay) {
gadījums 0:
pārvietot (segmentA + nobīde, segmentA_OUT);
pārvietot (segmentB + nobīde, segB_OUT);
pārvietot (segC + nobīde, segC_OUT);
pārvietot (segmentD + nobīde, segD_OUT);
pārvietot (segmentE + nobīde, segmentE_OUT);
pārvietot (segF + nobīde, segF_OUT);
pārvietot (segG + nobīde, segG_IN);
pārtraukums;
1. gadījums:
pārvietot (segmentA + nobīde, segmentA_IN);
pārvietot (segmentB + nobīde, segB_OUT);
pārvietot (segC + nobīde, segC_OUT);
pārvietot (segD + nobīde, segD_IN);
pārvietot (segmentE + nobīde, segmentE_IN);
pārvietot (segF + nobīde, segF_IN);
pārvietot (segG + nobīde, segG_IN);
pārtraukums;
2. gadījums:
pārvietot (segmentA + nobīde, segmentA_OUT);
pārvietot (segmentB + nobīde, segB_OUT);
pārvietot (segC + nobīde, segC_IN);
pārvietot (segmentD + nobīde, segD_OUT);
pārvietot (segmentE + nobīde, segmentE_OUT);
pārvietot (segF + nobīde, segF_IN);
pārvietot (segG + nobīde, segG_OUT);
pārtraukums;
3. gadījums:
pārvietot (segmentA + nobīde, segmentA_OUT);
pārvietot (segmentB + nobīde, segB_OUT);
pārvietot (segC + nobīde, segC_OUT);
pārvietot (segmentD + nobīde, segD_OUT);
pārvietot (segmentE + nobīde, segmentE_IN);
pārvietot (segF + nobīde, segF_IN);
pārvietot (segG + nobīde, segG_OUT);
pārtraukums;
4. gadījums:
pārvietot (segmentA + nobīde, segmentA_IN);
pārvietot (segmentB + nobīde, segB_OUT);
pārvietot (segC + nobīde, segC_OUT);
pārvietot (segD + nobīde, segD_IN);
pārvietot (segmentE + nobīde, segmentE_IN);
pārvietot (segF + nobīde, segF_OUT);
pārvietot (segG + nobīde, segG_OUT);
pārtraukums;
5. gadījums:
pārvietot (segmentA + nobīde, segmentA_OUT);
pārvietot (segB + nobīde, segB_IN);
pārvietot (segC + nobīde, segC_OUT);
pārvietot (segmentD + nobīde, segD_OUT);
pārvietot (segmentE + nobīde, segmentE_IN);
pārvietot (segF + nobīde, segF_OUT);
pārvietot (segG + nobīde, segG_OUT);
pārtraukums;
6. gadījums:
pārvietot (segmentA + nobīde, segmentA_OUT);
pārvietot (segB + nobīde, segB_IN);
pārvietot (segC + nobīde, segC_OUT);
pārvietot (segmentD + nobīde, segD_OUT);
pārvietot (segmentE + nobīde, segmentE_OUT);
pārvietot (segF + nobīde, segF_OUT);
pārvietot (segG + nobīde, segG_OUT);
pārtraukums;
7. gadījums:
pārvietot (segmentA + nobīde, segmentA_OUT);
pārvietot (segmentB + nobīde, segB_OUT);
pārvietot (segC + nobīde, segC_OUT);
pārvietot (segD + nobīde, segD_IN);
pārvietot (segmentE + nobīde, segmentE_IN);
pārvietot (segF + nobīde, segF_IN);
pārvietot (segG + nobīde, segG_IN);
pārtraukums;
8. gadījums:
pārvietot (segmentA + nobīde, segmentA_OUT);
pārvietot (segmentB + nobīde, segB_OUT);
pārvietot (segC + nobīde, segC_OUT);
pārvietot (segmentD + nobīde, segD_OUT);
pārvietot (segmentE + nobīde, segmentE_OUT);
pārvietot (segF + nobīde, segF_OUT);
pārvietot (segG + nobīde, segG_OUT);
pārtraukums;
9. gadījums:
pārvietot (segmentA + nobīde, segmentA_OUT);
pārvietot (segmentB + nobīde, segB_OUT);
pārvietot (segC + nobīde, segC_OUT);
pārvietot (segmentD + nobīde, segD_OUT);
pārvietot (segmentE + nobīde, segmentE_IN);
pārvietot (segF + nobīde, segF_OUT);
pārvietot (segG + nobīde, segG_OUT);
pārtraukums;
10. gadījums:
pārvietot (segmentA + nobīde, segmentA_IN);
pārvietot (segB + nobīde, segB_IN);
pārvietot (segC + nobīde, segC_IN);
pārvietot (segD + nobīde, segD_IN);
pārvietot (segmentE + nobīde, segmentE_IN);
pārvietot (segF + nobīde, segF_IN);
pārvietot (segG + nobīde, segG_IN);
pārtraukums;
}
}
Viss darbojas:
Tātad nav triviāla dizaina mehāniskais displejs ir gatavs.