Princíp fungovania navrhovaného displeja, ktorý vytvorili a zabudovali Instructables pod prezývkou alstroemeria, je nasledujúci: segmenty posunuté servom vrhajú tieň, čo ich robí viditeľnými. Zostávajúce segmenty, ktoré sa nachádzajú v rovnakej rovine s pozadím, sa s ňou zlúčia.
Je zrejmé, že
domáci produkt Ukázalo sa, že je to drahé, pretože pre ňu majster získa až 28 takýchto serv:
A modul riadenia, ktorý sa pripája
Arduino takto:
Modul hodín v reálnom čase (RTC) sa v tomto kontexte javí ako veľmi malý výdavok.
Po získaní všetkých potrebných komponentov ich majster doteraz odložil na prácu so šablónami na vytvorenie mechanickej časti displeja. Dostane štyri súbory:
1,
2,
3,
4, Sprievodca zobrazí súbory 1 a 3 dvakrát na reznom plotri a 2 a 4, jeden po druhom, všetky v mierke 1: 1, a získa šesť častí, z ktorých niektoré sa nejakým spôsobom podobajú starým dierovacím kartám. Môžete tlačiť aj v mierke 1: 1 av rovnakom množstve a ručne orezávať.
Dremel reže duté kovové kolíky s dĺžkou 20 mm a rúrky s vonkajším priemerom o niečo väčším ako vonkajší priemer kolíka s dĺžkou 10 mm:
Lepené vrstvy hrubou obojstrannou páskou, dodáva rúrky:
Pridáva pohyblivé segmenty prilepené k kolíkom prechádzajúcim cez rúrky, na zadnej strane lepí oceľové drôty tlačiace tlačidlá na rovnaké kolíky, a to je miesto, kde sú kolíky duté:
Ohýba tlačidlá, lepí servá a pripája sa k nim:
Zatvorí servá so zostávajúcim dierovaným plechom:
Riadiaci modul servopohonov sa pripája podľa schémy uvedenej na začiatku článku. Samotné pohony sú pripojené k modulu v poradí zodpovedajúcom štandardným označeniam segmentu:
Modul RTC sa pripája nasledovne: SDA - pin 4 Arduino, SCL - pin 5, plus napájanie a spoločný vodič - paralelne so zodpovedajúcimi linkami Arduino. Tu je výsledok:
Sprievodca nastaví čas v module RTC pomocou tejto skici (potrebujete knižnicu RTClib):
#include
#include „RTClib.h“
RTC_DS1307 RTC;
neplatné nastavenie () {
Serial.egegin (57600);
Wire.begin ();
RTC.egin ();
if (! RTC.isrunning ()) {
Serial.println („RTC NIE JE spustený!“);
RTC.just (DateTime (__ DATE__, __TIME__));
}
}
Potom vyplní hlavnú skicu vyžadujúcu rovnakú knižnicu:
#include
#include „RTClib.h“
RTC_DS1307 RTC;
krátka segA = 0; // Zobrazovací kolík 14
krátka segB = 1; // Zobrazovací kolík 16
krátka segC = 2; // Zobrazovací kolík 13
krátka segD = 3; // Zobrazovací kolík 3
krátka segE = 4; // Zobrazovací kolík 5
krátka segF = 5; // Zobrazovací kolík 11
krátka segG = 6; // Zobrazovací kolík 15
krátka segA_OUT = 110;
krátka segB_OUT = 110;
krátka segC_OUT = 110;
krátka segD_OUT = 110;
krátka segE_OUT = 110;
krátka segF_OUT = 110;
krátka segG_OUT = 110;
krátka segA_IN = 90;
krátka segB_IN = 90;
krátka segC_IN = 90;
krátka segD_IN = 90;
krátka segE_IN = 90;
krátka segF_IN = 90;
krátka segG_IN = 90;
int TIME = 2000;
DateTime datePast;
DateTime dateNow;
// vedenie domácnosti
neplatné nastavenie () {
Serial.egegin (9600);
Wire.begin ();
RTC.egin ();
RTC.just (DateTime (__ DATE__, __TIME__));
datePast = RTC.now ();
}
// hlavná slučka
void loop () {
dateNow = RTC.now ();
if (! (datePast.hour () == dateNow.hour () && datePast.minute () == dateNow.hour ()))
{
displayNumber (dateNow.hour () * 100 + dateNow.minute ());
datePast = dateNow;
}
}
// Pri čísle zobrazujeme 10:22
// Po vykonaní 4 čísel sa displej vypne
void displayNumber (int to Display) {
pre (int číslice = 4; číslice> 0; číslice--) {
lightNumber (toDisplay% 10, číslice);
toDisplay / = 10;
}
// začatie pohybu
Serial.print ("T"); Serial.println (TIME);
}
neplatný ťah (int servo, int pozícia) {
Serial.print ("#");
Serial.print (servo);
Serial.print ("P");
Serial.print (pozícia);
}
// Vzhľadom na číslo zapína tieto segmenty
// Ak číslo == 10, číslo vypnite
void lightNumber (int numberToDisplay, int segment) {
int offset = (segment - 1) * 7;
prepínač (numberToDisplay) {
prípad 0:
ťah (segA + offset, segA_OUT);
ťah (segB + offset, segB_OUT);
ťah (segC + offset, segC_OUT);
ťah (segD + offset, segD_OUT);
ťah (segE + offset, segE_OUT);
ťah (segF + offset, segF_OUT);
ťah (segG + offset, segG_IN);
break;
prípad 1:
ťah (segA + offset, segA_IN);
ťah (segB + offset, segB_OUT);
ťah (segC + offset, segC_OUT);
ťah (segD + offset, segD_IN);
ťah (segE + offset, segE_IN);
ťah (segF + offset, segF_IN);
ťah (segG + offset, segG_IN);
break;
prípad 2:
ťah (segA + offset, segA_OUT);
ťah (segB + offset, segB_OUT);
ťah (segC + offset, segC_IN);
ťah (segD + offset, segD_OUT);
ťah (segE + offset, segE_OUT);
ťah (segF + offset, segF_IN);
ťah (segG + offset, segG_OUT);
break;
prípad 3:
ťah (segA + offset, segA_OUT);
ťah (segB + offset, segB_OUT);
ťah (segC + offset, segC_OUT);
ťah (segD + offset, segD_OUT);
ťah (segE + offset, segE_IN);
ťah (segF + offset, segF_IN);
ťah (segG + offset, segG_OUT);
break;
prípad 4:
ťah (segA + offset, segA_IN);
ťah (segB + offset, segB_OUT);
ťah (segC + offset, segC_OUT);
ťah (segD + offset, segD_IN);
ťah (segE + offset, segE_IN);
ťah (segF + offset, segF_OUT);
ťah (segG + offset, segG_OUT);
break;
prípad 5:
ťah (segA + offset, segA_OUT);
ťah (segB + offset, segB_IN);
ťah (segC + offset, segC_OUT);
ťah (segD + offset, segD_OUT);
ťah (segE + offset, segE_IN);
ťah (segF + offset, segF_OUT);
ťah (segG + offset, segG_OUT);
break;
prípad 6:
ťah (segA + offset, segA_OUT);
ťah (segB + offset, segB_IN);
ťah (segC + offset, segC_OUT);
ťah (segD + offset, segD_OUT);
ťah (segE + offset, segE_OUT);
ťah (segF + offset, segF_OUT);
ťah (segG + offset, segG_OUT);
break;
prípad 7:
ťah (segA + offset, segA_OUT);
ťah (segB + offset, segB_OUT);
ťah (segC + offset, segC_OUT);
ťah (segD + offset, segD_IN);
ťah (segE + offset, segE_IN);
ťah (segF + offset, segF_IN);
ťah (segG + offset, segG_IN);
break;
prípad 8:
ťah (segA + offset, segA_OUT);
ťah (segB + offset, segB_OUT);
ťah (segC + offset, segC_OUT);
ťah (segD + offset, segD_OUT);
ťah (segE + offset, segE_OUT);
ťah (segF + offset, segF_OUT);
ťah (segG + offset, segG_OUT);
break;
prípad 9:
ťah (segA + offset, segA_OUT);
ťah (segB + offset, segB_OUT);
ťah (segC + offset, segC_OUT);
ťah (segD + offset, segD_OUT);
ťah (segE + offset, segE_IN);
ťah (segF + offset, segF_OUT);
ťah (segG + offset, segG_OUT);
break;
prípad 10:
ťah (segA + offset, segA_IN);
ťah (segB + offset, segB_IN);
ťah (segC + offset, segC_IN);
ťah (segD + offset, segD_IN);
ťah (segE + offset, segE_IN);
ťah (segF + offset, segF_IN);
ťah (segG + offset, segG_IN);
break;
}
}
Všetko funguje:
Takže mechanické zobrazenie netriviálneho dizajnu je pripravené.