Princip rada predloženog zaslona, koji su Instructables napravili i izgradili pod nadimkom alstroemeria, je sljedeći: segmenti napredni servoslikama bacaju sjenu, što ih čini vidljivima. Preostali segmenti, koji se nalaze u istoj ravnini s pozadinom, spajaju se s njom.
Jasno je da
domaći proizvod Ispada da je skupo, jer za nju majstor nabavi čak 28 takvih servo:
I upravljački modul koji se povezuje
Težak ovako:
Čini se da je modul takta u stvarnom vremenu (RTC) u takvoj pozadini vrlo mali trošak.
Nakon što je stekao sve potrebne komponente, majstor ih je dosad ostavio da rade na predlozima za izradu mehaničkog dijela prikaza. Dobiva četiri datoteke:
1,
2,
3,
4, Čarobnjak prikazuje datoteke 1 i 3 dva puta na crtaču za rezanje i 2 i 4, jednu po jednu, sve u skali 1: 1, i dobiva šest dijelova, od kojih neki na neki način podsjećaju na stare kartice za bušenje. Možete ispisati, također u mjerilu 1: 1, u istim količinama i ručno izrezati.
Dremel reže šuplje metalne igle u duljini od 20 mm i cijevi s vanjskim promjerom nešto većim od vanjskog promjera igle u duljini od 10 mm:
Ljepi slojeve debelom obostranom trakom, dodaje cijevi:
Dodaje pokretne segmente zalijepljene iglema koje prolaze kroz cijevi, a na naličju se čeličnim žicama guraju na iste igle, a ovo je mjesto gdje su igle šuplje:
Savija gurače, ljepi servo i spaja ih:
Zatvara servo s preostalim perforiranim limom:
Servo upravljački modul spaja se prema shemi zadanoj na početku članka. Sami pogoni povezani su na modul redoslijedom koji odgovara standardnim oznakama segmenta:
RTC modul povezuje se kako slijedi: SDA - pin 4 Arduino, SCL - pin 5, plus snaga i zajednička žica - paralelno s odgovarajućim Arduino linijama. Evo rezultata:
Čarobnjak postavlja vrijeme u RTC modulu s ovom skicom (potrebna vam je knjižnica RTClib):
#include
#include "RTClib.h"
RTC_DS1307 RTC;
poništavanje postave () {
Serijski.begin (57600);
Wire.begin ();
RTC.begin ();
ako (! RTC.isrunning ()) {
Serial.println ("RTC se NE pokreće!");
RTC.adjust (DateTime (__ DATE__, __TIME__));
}
}
Potom ispunjava glavnu skicu koja zahtijeva istu knjižnicu:
#include
#include "RTClib.h"
RTC_DS1307 RTC;
kratki segA = 0; // Prikazivački pin 14
kratki segB = 1; // Prikazivački pin 16
kratki segC = 2; // Prikazivački pin 13
kratki segD = 3; // Prikazivački pin 3
kratki seEE = 4; // Prikazivački pin 5
kratki segF = 5; // Prikazivački pin 11
kratki segG = 6; // Prikazivački pin 15
kratki segA_OUT = 110;
kratki segB_OUT = 110;
kratki segC_OUT = 110;
kratki segD_OUT = 110;
kratki seEE_OUT = 110;
kratki segF_OUT = 110;
kratki segG_OUT = 110;
kratki segA_IN = 90;
kratki segB_IN = 90;
kratki segC_IN = 90;
kratki segD_IN = 90;
kratki seEE_IN = 90;
kratki segF_IN = 90;
kratki seGG_IN = 90;
int TIME = 2000;
DateTime datePast;
DateTime dateNow;
// čuvanje kuće
poništavanje postave () {
Serijski počet (9600);
Wire.begin ();
RTC.begin ();
RTC.adjust (DateTime (__ DATE__, __TIME__));
datePast = RTC.now ();
}
// glavna petlja
void petlja () {
dateNow = RTC.now ();
if (! (datePast.hour () == dateNow.hour () && datePast.minute () == dateNow.hour ()))
{
displayNumber (datumNow.hour () * 100 + dateNow.minute ());
datePast = dateNow;
}
}
// S obzirom na broj, prikazujemo 10:22
// Nakon prolaska kroz četiri broja, zaslon se isključuje
void displayNumber (int toDisplay) {
za (int cifra = 4; znamenka> 0; znamenka--) {
lightNumber (toDisplay% 10, znamenka);
toDisplay / = 10;
}
// pokrenuti pokret
Serial.print ("T"); Serial.println (TIME);
}
void potez (int servo, int položaj) {
Serial.print ("#");
Serijski.print (servo);
Serijski.print ("P");
Serijski.print (položaj);
}
// S obzirom na broj, okreće se na tim segmentima
// Ako je broj == 10, isključite broj
void lightNumber (int brojToDisplay, int segment) {
int offset = (segment - 1) * 7;
sklopka (brojToDisplay) {
slučaj 0:
premjestiti (segA + offset, segA_OUT);
premjestiti (segB + offset, segB_OUT);
premjestiti (segC + offset, segC_OUT);
premjestiti (segD + pomak, segD_OUT);
premjestiti (segE + offset, segE_OUT);
premjestiti (segF + pomak, segF_OUT);
premjestiti (segG + offset, segG_IN);
razbiti;
1. slučaj:
premjestiti (segA + offset, segA_IN);
premjestiti (segB + offset, segB_OUT);
premjestiti (segC + offset, segC_OUT);
premjestiti (segD + offset, segD_IN);
premjestiti (segE + offset, segE_IN);
premjestiti (segF + offset, segF_IN);
premjestiti (segG + offset, segG_IN);
razbiti;
slučaj 2:
premjestiti (segA + offset, segA_OUT);
premjestiti (segB + offset, segB_OUT);
premjestiti (segC + offset, segC_IN);
premjestiti (segD + pomak, segD_OUT);
premjestiti (segE + offset, segE_OUT);
premjestiti (segF + offset, segF_IN);
premjestiti (segG + offset, segG_OUT);
razbiti;
3. slučaj:
premjestiti (segA + offset, segA_OUT);
premjestiti (segB + offset, segB_OUT);
premjestiti (segC + offset, segC_OUT);
premjestiti (segD + pomak, segD_OUT);
premjestiti (segE + offset, segE_IN);
premjestiti (segF + offset, segF_IN);
premjestiti (segG + offset, segG_OUT);
razbiti;
slučaj 4:
premjestiti (segA + offset, segA_IN);
premjestiti (segB + offset, segB_OUT);
premjestiti (segC + offset, segC_OUT);
premjestiti (segD + offset, segD_IN);
premjestiti (segE + offset, segE_IN);
premjestiti (segF + pomak, segF_OUT);
premjestiti (segG + offset, segG_OUT);
razbiti;
slučaj 5:
premjestiti (segA + offset, segA_OUT);
premjestiti (segB + offset, segB_IN);
premjestiti (segC + offset, segC_OUT);
premjestiti (segD + pomak, segD_OUT);
premjestiti (segE + offset, segE_IN);
premjestiti (segF + pomak, segF_OUT);
premjestiti (segG + offset, segG_OUT);
razbiti;
slučaj 6:
premjestiti (segA + offset, segA_OUT);
premjestiti (segB + offset, segB_IN);
premjestiti (segC + offset, segC_OUT);
premjestiti (segD + pomak, segD_OUT);
premjestiti (segE + offset, segE_OUT);
premjestiti (segF + pomak, segF_OUT);
premjestiti (segG + offset, segG_OUT);
razbiti;
slučaj 7:
premjestiti (segA + offset, segA_OUT);
premjestiti (segB + offset, segB_OUT);
premjestiti (segC + offset, segC_OUT);
premjestiti (segD + offset, segD_IN);
premjestiti (segE + offset, segE_IN);
premjestiti (segF + offset, segF_IN);
premjestiti (segG + offset, segG_IN);
razbiti;
slučaj 8:
premjestiti (segA + offset, segA_OUT);
premjestiti (segB + offset, segB_OUT);
premjestiti (segC + offset, segC_OUT);
premjestiti (segD + pomak, segD_OUT);
premjestiti (segE + offset, segE_OUT);
premjestiti (segF + pomak, segF_OUT);
premjestiti (segG + offset, segG_OUT);
razbiti;
slučaj 9:
premjestiti (segA + offset, segA_OUT);
premjestiti (segB + offset, segB_OUT);
premjestiti (segC + offset, segC_OUT);
premjestiti (segD + pomak, segD_OUT);
premjestiti (segE + offset, segE_IN);
premjestiti (segF + pomak, segF_OUT);
premjestiti (segG + offset, segG_OUT);
razbiti;
slučaj 10:
premjestiti (segA + offset, segA_IN);
premjestiti (segB + offset, segB_IN);
premjestiti (segC + offset, segC_IN);
premjestiti (segD + offset, segD_IN);
premjestiti (segE + offset, segE_IN);
premjestiti (segF + offset, segF_IN);
premjestiti (segG + offset, segG_IN);
razbiti;
}
}
Sve djeluje:
Tako je mehanički prikaz ne-trivijalnog dizajna spreman.