Princip fungování navrhovaného displeje, který vytvořili a postavili Instructables pod přezdívkou alstroemeria, je následující: segmenty rozšířené servy vrhají stín, což je zviditelňuje. Zbývající segmenty, umístěné ve stejné rovině s pozadím, se s ním sloučí.
Je jasné, že
domácí Ukázalo se, že je to drahé, protože pro ni pán získá až 28 takových serv:
A modul pro správu, který se připojuje
Arduino jako toto:
Modul hodin v reálném čase (RTC) se na tomto pozadí jeví jako velmi malý výdaj.
Po získání všech potřebných komponentů je master zatím odložil, aby pracoval na šablonách pro vytvoření mechanické části displeje. Dostane čtyři soubory:
1,
2,
3,
4. Průvodce zobrazí soubory 1 a 3 dvakrát na řezacím plotru a 2 a 4, jeden po druhém, všechny v měřítku 1: 1, a získá šest částí, z nichž některé nějakým způsobem připomínají staré děrné karty. Můžete také tisknout také v měřítku 1: 1 a ve stejném množství a ručně oříznout.
Dremel řeže duté kovové kolíky o délce 20 mm a trubky s vnějším průměrem mírně větším než vnější průměr kolíku s délkou 10 mm:
Lepí vrstvy silnou oboustrannou páskou, přidává trubky:
Přidává pohyblivé segmenty přilepené k čepům procházejícím trubkami, na zadní straně lepí ocelové dráty tlačící ke stejným čepům, a to je místo, kde jsou čepy duté:
Ohýbá tlačítka, lepí serva a připojuje se k nim:
Zavře serva zbývajícím perforovaným plechem:
Řídicí modul servopohonů se připojuje podle schématu uvedeného na začátku článku. Samotné pohony jsou připojeny k modulu v pořadí odpovídajícím standardnímu označení segmentu:
Modul RTC se připojuje následujícím způsobem: SDA - pin 4 Arduino, SCL - pin 5, plus napájení a společný vodič - paralelně s odpovídajícími linkami Arduino. Zde je výsledek:
Průvodce nastaví čas v modulu RTC pomocí této skici (potřebujete knihovnu RTClib):
#include
#include "RTClib.h"
RTC_DS1307 RTC;
neplatné nastavení () {
Serial.begin (57600);
Wire.begin ();
RTC.egin ();
if (! RTC.isrunning ()) {
Serial.println („RTC NENÍ spuštěn!“);
RTC.adjust (DateTime (__ DATE__, __TIME__));
}
}
Poté vyplní hlavní náčrt vyžadující stejnou knihovnu:
#include
#include "RTClib.h"
RTC_DS1307 RTC;
krátké segA = 0; // Zobrazovací kolík 14
krátké segB = 1; // Zobrazovací kolík 16
krátké segC = 2; // Zobrazovací kolík 13
krátké segD = 3; // Zobrazovací pin 3
krátké segE = 4; // Zobrazovací kolík 5
krátké segF = 5; // Zobrazovací kolík 11
krátké segG = 6; // Zobrazovací kolík 15
krátké segA_OUT = 110;
krátké segB_OUT = 110;
krátké segC_OUT = 110;
krátké segD_OUT = 110;
krátké segE_OUT = 110;
krátké segF_OUT = 110;
krátké segG_OUT = 110;
krátké segA_IN = 90;
krátké segB_IN = 90;
krátké segC_IN = 90;
krátké segD_IN = 90;
krátké segE_IN = 90;
krátké segF_IN = 90;
krátké segG_IN = 90;
int TIME = 2000;
DateTime datePast;
DateTime dateNow;
// hospodaření
neplatné nastavení () {
Serial.egegin (9600);
Wire.begin ();
RTC.egin ();
RTC.adjust (DateTime (__ DATE__, __TIME__));
datePast = RTC.now ();
}
// hlavní smyčka
void loop () {
dateNow = RTC.now ();
if (! (datePast.hour () == dateNow.hour () && datePast.minute () == dateNow.hour ()))
{
displayNumber (dateNow.hour () * 100 + dateNow.minute ());
datePast = dateNow;
}
}
// Při čísle zobrazíme 10:22
// Po provedení 4 čísel se displej vypne
void displayNumber (int to Display) {
pro (int číslice = 4; číslice> 0; číslice--) {
lightNumber (toDisplay% 10, číslice);
toDisplay / = 10;
}
// zahájit pohyb
Serial.print ("T"); Serial.println (TIME);
}
neplatný tah (int servo, int pozice) {
Serial.print ("#");
Serial.print (servo);
Serial.print ("P");
Serial.print (pozice);
}
// Vzhledem k číslu zapne tyto segmenty
// Pokud číslo == 10, číslo vypněte
void lightNumber (int numberToDisplay, int segment) {
int offset = (segment - 1) * 7;
switch (numberToDisplay) {
případ 0:
pohyb (segA + offset, segA_OUT);
pohyb (segB + offset, segB_OUT);
pohyb (segC + offset, segC_OUT);
pohyb (segD + offset, segD_OUT);
pohyb (segE + offset, segE_OUT);
pohyb (segF + offset, segF_OUT);
pohyb (segG + offset, segG_IN);
rozbít;
případ 1:
pohyb (segA + offset, segA_IN);
pohyb (segB + offset, segB_OUT);
pohyb (segC + offset, segC_OUT);
pohyb (segD + offset, segD_IN);
pohyb (segE + offset, segE_IN);
pohyb (segF + offset, segF_IN);
pohyb (segG + offset, segG_IN);
rozbít;
případ 2:
pohyb (segA + offset, segA_OUT);
pohyb (segB + offset, segB_OUT);
pohyb (segC + offset, segC_IN);
pohyb (segD + offset, segD_OUT);
pohyb (segE + offset, segE_OUT);
pohyb (segF + offset, segF_IN);
pohyb (segG + offset, segG_OUT);
rozbít;
případ 3:
pohyb (segA + offset, segA_OUT);
pohyb (segB + offset, segB_OUT);
pohyb (segC + offset, segC_OUT);
pohyb (segD + offset, segD_OUT);
pohyb (segE + offset, segE_IN);
pohyb (segF + offset, segF_IN);
pohyb (segG + offset, segG_OUT);
rozbít;
případ 4:
pohyb (segA + offset, segA_IN);
pohyb (segB + offset, segB_OUT);
pohyb (segC + offset, segC_OUT);
pohyb (segD + offset, segD_IN);
pohyb (segE + offset, segE_IN);
pohyb (segF + offset, segF_OUT);
pohyb (segG + offset, segG_OUT);
rozbít;
případ 5:
pohyb (segA + offset, segA_OUT);
pohyb (segB + offset, segB_IN);
pohyb (segC + offset, segC_OUT);
pohyb (segD + offset, segD_OUT);
pohyb (segE + offset, segE_IN);
pohyb (segF + offset, segF_OUT);
pohyb (segG + offset, segG_OUT);
rozbít;
případ 6:
pohyb (segA + offset, segA_OUT);
pohyb (segB + offset, segB_IN);
pohyb (segC + offset, segC_OUT);
pohyb (segD + offset, segD_OUT);
pohyb (segE + offset, segE_OUT);
pohyb (segF + offset, segF_OUT);
pohyb (segG + offset, segG_OUT);
rozbít;
případ 7:
pohyb (segA + offset, segA_OUT);
pohyb (segB + offset, segB_OUT);
pohyb (segC + offset, segC_OUT);
pohyb (segD + offset, segD_IN);
pohyb (segE + offset, segE_IN);
pohyb (segF + offset, segF_IN);
pohyb (segG + offset, segG_IN);
rozbít;
případ 8:
pohyb (segA + offset, segA_OUT);
pohyb (segB + offset, segB_OUT);
pohyb (segC + offset, segC_OUT);
pohyb (segD + offset, segD_OUT);
pohyb (segE + offset, segE_OUT);
pohyb (segF + offset, segF_OUT);
pohyb (segG + offset, segG_OUT);
rozbít;
případ 9:
pohyb (segA + offset, segA_OUT);
pohyb (segB + offset, segB_OUT);
pohyb (segC + offset, segC_OUT);
pohyb (segD + offset, segD_OUT);
pohyb (segE + offset, segE_IN);
pohyb (segF + offset, segF_OUT);
pohyb (segG + offset, segG_OUT);
rozbít;
případ 10:
pohyb (segA + offset, segA_IN);
pohyb (segB + offset, segB_IN);
pohyb (segC + offset, segC_IN);
pohyb (segD + offset, segD_IN);
pohyb (segE + offset, segE_IN);
pohyb (segF + offset, segF_IN);
pohyb (segG + offset, segG_IN);
rozbít;
}
}
Všechno funguje:
Takže mechanické zobrazení netriviální konstrukce je připraveno.