Instructablesin alstroemeria-lempinimellä laatiman ja rakentaman ehdotetun näytön toimintaperiaate on seuraava: servossa edistyneet segmentit heittävät varjon, mikä tekee niistä näkyviä. Loput segmentit, jotka sijaitsevat samassa tasossa taustan kanssa, sulautuvat siihen.
On selvää, että
kotitekoinen tuote Se osoittautuu kalliiksi, koska mestari ostaa hänelle jopa 28 tällaista servoa:
Ja hallintamoduuli, joka muodostaa yhteyden
Työläs kuten tämä:
Reaaliaikakello (RTC) -moduuli näyttää tätä taustaa vasten olevan erittäin pieni kustannus.
Saatuaan kaikki tarvittavat komponentit, mestari toistaiseksi laittaa ne syrjään työskentelemään mallien kanssa näytön mekaanisen osan tekemiseksi. Hän saa neljä tiedostoa:
1,
2,
3,
4. Ohjattu toiminto näyttää tiedostot 1 ja 3 kahdesti leikkausplotterilla ja 2 ja 4, yksi kerrallaan, kaikki 1: 1-mittakaavassa, ja saa kuusi osaa, joista osa muistuttaa jollain tavalla vanhoja rei'ityskortteja. Voit myös tulostaa, myös mittasuhteessa 1: 1 ja samoina määrinä, ja leikata manuaalisesti.
Dremel leikkaa ontot metallinastat, joiden pituus on 20 mm, ja putket, joiden ulkohalkaisija on hiukan suurempi kuin 10 mm: n tapin ulkoinen halkaisija:
Liimaa kerrokset paksulla kaksipuolisella teipillä, lisää putket:
Se lisää putkien läpi kulkeviin tappeihin liimatut siirrettävät segmentit, takapuolella liimaa teräslangan työntäjät samoihin tapiin, ja tässä neulat ovat ontot:
Se taivuttaa työntäjiä, liimaa servot ja yhdistää niihin:
Sulkee servot jäljellä olevalla rei'itetyllä levyllä:
Servo-ohjausmoduuli kytkeytyy artikkelin alussa annetun kaavion mukaisesti. Itse taajuusmuuttajat on kytketty moduuliin standardin mukaista segmentinimitystä vastaavassa järjestyksessä:
RTC-moduuli kytketään seuraavasti: Arduinon SDA - nasta 4, SCL - nasta 5, plus virta ja yhteinen johdin - vastaavien Arduino-linjojen suuntaisesti. Tässä on tulos:
Ohjattu toiminto asettaa ajan RTC-moduuliin tällä luonnoksella (tarvitset RTClib-kirjastoa):
#include
#include "RTClib.h"
RTC_DS1307 RTC;
tyhjä asennus () {
Serial.begin (57600);
Wire.begin ();
RTCbegin ();
if (! RTC.isrunning ()) {
Serial.println ("RTC EI ole käynnissä!");
RTC.adjust (DateTime (__ DATE__, __TIME__));
}
}
Sitten se täyttää pääluonnoksen, joka vaatii samaa kirjastoa:
# sisällytä
#include "RTClib.h"
RTC_DS1307 RTC;
lyhyt segmentA = 0; // Näyttötappi 14
lyhyt segmentB = 1; // Näyttötappi 16
lyhyt segC = 2; // Näyttötappi 13
lyhyt segD = 3; // Näyttötappi 3
lyhyt segmentti = 4; // Näyttötappi 5
lyhyt segF = 5; // Näyttötappi 11
lyhyt segmentti = 6; // Näyttötappi 15
lyhyt segmentA_OUT = 110;
lyhyt segmentB_OUT = 110;
lyhyt segmentC_OUT = 110;
lyhyt segmentD_OUT = 110;
lyhyt segmentti_OUT = 110;
lyhyt segmentF_OUT = 110;
lyhyt segmentti_OUT = 110;
lyhyt segmentA_IN = 90;
lyhyt segmentB_IN = 90;
lyhyt segmentC_IN = 90;
lyhyt segmentD_IN = 90;
lyhyt segmentE_IN = 90;
lyhyt segmentF_IN = 90;
lyhyt segmentG_IN = 90;
int TIME = 2000;
DateTime datePast;
DateTime dateNow;
// talonpito
tyhjä asennus () {
Serial.begin (9600);
Wire.begin ();
RTCbegin ();
RTC.adjust (DateTime (__ DATE__, __TIME__));
datePast = RTC.now ();
}
// pääsilmukka
tyhjä silmukka () {
dateNow = RTC.now ();
if (! (datePast.hour () == dateNow.hour () && datePast.minute () == dateNow.hour ()))
{
displayNumber (dateNow.hour () * 100 + dateNow.minute ());
datePast = dateNow;
}
}
// Annettu numero näyttää 10:22
// Kun olet käynyt läpi 4 numeroa, näyttö jätetään pois päältä
tyhjä näyttöNumero (näyttöruudussa) {
varten (int numero = 4; numero> 0; luku--) {
lightNumber (toDisplay% 10, numero);
näytölle / = 10;
}
// aloita liike
Serial.print ("T"); Serial.println (TIME);
}
tyhjä siirto (int servo, int asento) {
Serial.print ("#");
Serial.print (servo);
Sarjajälki ("P");
Sarjakuva (sijainti);
}
// Annetaan numero, ottaa nämä segmentit käyttöön
// Jos numero == 10, kytke sitten luku pois
void lightNumber (int-numeroToDisplay, int-segmentti) {
int offset = (segmentti - 1) * 7;
kytkin (numeroToDisplay) {
tapaus 0:
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segC + offset, segC_OUT);
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segF + offset, segF_OUT);
siirrä (segG + offset, segG_IN);
break;
tapaus 1:
siirrä (segmentti + siirtymä, segmentti_IN);
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segC + offset, segC_OUT);
siirrä (segmentti + siirtymä, segmentti_IN);
siirrä (segmentti + siirtymä, segmentti_IN);
siirrä (segF + offset, segF_IN);
siirrä (segG + offset, segG_IN);
break;
tapaus 2:
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segC + offset, segC_IN);
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segF + offset, segF_IN);
siirrä (segG + offset, segG_OUT);
break;
tapaus 3:
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segC + offset, segC_OUT);
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segmentti + siirtymä, segmentti_IN);
siirrä (segF + offset, segF_IN);
siirrä (segG + offset, segG_OUT);
break;
tapaus 4:
siirrä (segmentti + siirtymä, segmentti_IN);
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segC + offset, segC_OUT);
siirrä (segmentti + siirtymä, segmentti_IN);
siirrä (segmentti + siirtymä, segmentti_IN);
siirrä (segF + offset, segF_OUT);
siirrä (segG + offset, segG_OUT);
break;
tapaus 5:
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segB + offset, segB_IN);
siirrä (segC + offset, segC_OUT);
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segmentti + siirtymä, segmentti_IN);
siirrä (segF + offset, segF_OUT);
siirrä (segG + offset, segG_OUT);
break;
tapaus 6:
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segB + offset, segB_IN);
siirrä (segC + offset, segC_OUT);
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segF + offset, segF_OUT);
siirrä (segG + offset, segG_OUT);
break;
tapaus 7:
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segC + offset, segC_OUT);
siirrä (segmentti + siirtymä, segmentti_IN);
siirrä (segmentti + siirtymä, segmentti_IN);
siirrä (segF + offset, segF_IN);
siirrä (segG + offset, segG_IN);
break;
tapaus 8:
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segC + offset, segC_OUT);
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segF + offset, segF_OUT);
siirrä (segG + offset, segG_OUT);
break;
tapaus 9:
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segC + offset, segC_OUT);
siirrä (segmentti + siirtymä, segmentti_OUT);
siirrä (segmentti + siirtymä, segmentti_IN);
siirrä (segF + offset, segF_OUT);
siirrä (segG + offset, segG_OUT);
break;
tapaus 10:
siirrä (segmentti + siirtymä, segmentti_IN);
siirrä (segB + offset, segB_IN);
siirrä (segC + offset, segC_IN);
siirrä (segmentti + siirtymä, segmentti_IN);
siirrä (segmentti + siirtymä, segmentti_IN);
siirrä (segF + offset, segF_IN);
siirrä (segG + offset, segG_IN);
break;
}
}
Kaikki toimii:
Joten ei-triviaalisen mallin mekaaninen näyttö on valmis.