El principi de funcionament de la visualització proposada, realitzada i construïda per Instructables amb el sobrenom d'alstroemeria, és el següent: els segments avançats per servos posen una ombra, cosa que els fa visibles. Els segments restants, situats al mateix pla amb el fons, es fusionen amb ell.
És clar que
casolans Resulta ser car, perquè l'amo adquireix fins a 28 servicis:
I un mòdul de gestió que es connecta
Arduino així:
El mòdul de rellotge en temps real (RTC) en aquest context sembla una despesa molt petita.
Havent adquirit tots els components necessaris, el mestre els deixa fins ara per treballar en plantilles per fer la part mecànica de la pantalla. Rep quatre fitxers:
1,
2,
3,
4. L’assistent mostra els fitxers 1 i 3 dues vegades en un traçador de tall, i 2 i 4, un a la vegada, tots a escala 1: 1, i obté sis parts, algunes de les quals s’assemblen d’alguna manera a targetes de perforació antigues. També podeu imprimir, també en una escala de 1: 1 i en les mateixes quantitats, i retallar manualment.
Dremel talla passadors metàl·lics buits amb una longitud de 20 mm i tubs amb un diàmetre extern lleugerament més gran que el diàmetre extern del passador amb una longitud de 10 mm:
Enganxa capes amb cinta de doble cara gruixuda, afegeix tubs:
Afegeix segments mòbils enganxats als pins passats pels tubs, als reversos enganxa els empenedors de filferro d'acer als mateixos pins, i aquí és on els pins són buits:
Doblega els emissors, enganxa servos i es connecta a ells:
Tanca els servos amb el full perforat restant:
El mòdul de control de servo es connecta segons l'esquema indicat al començament de l'article. Les unitats es connecten al mòdul en l'ordre corresponent a les designacions del segment estàndard:
El mòdul RTC es connecta de la manera següent: SDA - pin 4 Arduino, SCL - pin 5, a més de poder i cable comunal - paral·lel a les línies Arduino corresponents. Aquí està el resultat:
L’assistent estableix l’hora al mòdul RTC amb aquest croquis (necessiteu la biblioteca RTClib):
#incloure
#inclou "RTClib.h"
RTC_DS1307 RTC;
void setup () {
Serial.begin (57600);
Wire.begin ();
RTC.begin ();
if (! RTC.isrunning ()) {
Serial.println ("RTC NO s'executa!");
RTC.adjust (DateTime (__ DATE__, __TIME__));
}
}
A continuació, s'omple l'esbós principal que requereix la mateixa biblioteca:
#incloure
#inclou "RTClib.h"
RTC_DS1307 RTC;
segA curt = 0; // Pinça 14 de visualització
segB curt = 1; // Pinça 16 de visualització
segC curt = 2; // Pinça 13 de visualització
segD curt = 3; // Pantalla de visualització 3
segE curt = 4; // Pinça 5 de visualització
segF curt = 5; // Pinça 11 de visualització
segG curt = 6; // Pinça 15 de visualització
curt segA_OUT = 110;
curt segB_OUT = 110;
curt segC_OUT = 110;
curt segD_OUT = 110;
curt segE_OUT = 110;
curt segF_OUT = 110;
curt segG_OUT = 110;
segA_IN curt = 90;
segB_IN curt: 90;
curt segC_IN = 90;
curt segD_IN = 90;
curt segE_IN = 90;
segF_IN curt: 90;
segG_IN curt: 90;
int TIME = 2000;
DateTime datePast;
DateTime dateNow;
// manteniment de cases
void setup () {
Serial.begin (9600);
Wire.begin ();
RTC.begin ();
RTC.adjust (DateTime (__ DATE__, __TIME__));
datePast = RTC.now ();
}
// bucle principal
void loop () {
dateNow = RTC.now ();
if (! (datePast.hour () == dateNow.hour () && datePast.minute () == dateNow.hour ()))
{
displayNumber (dateNow.hour () * 100 + dateNow.minute ());
datePast = dataNow;
}
}
// Donat un número, es mostra 10:22
// Després d’executar els quatre números, es deixa la pantalla apagada
void displayNumber (int toDisplay) {
for (int dígit = 4; dígit> 0; dígit -) {
lightNumber (toDisplay% 10, dígits);
toDisplay / = 10;
}
// iniciar el moviment
Serial.print ("T"); Serial.println (TIME);
}
void move (int servo, posició int) {
Serial.print ("#");
Serial.print (servo);
Serial.print ("P");
Serial.print (posició);
}
// Donat un número, activa aquests segments
// Si és número == 10, desactiveu el número
void lightNumber (número int: ToDisplay, segment int) {
compensació int = (segment - 1) * 7;
switch (numberToDisplay) {
cas 0:
moure (desplaçament segA +, segA_OUT);
moure (desplaçament segB +, segB_OUT);
moure (desplaçament segC +, segC_OUT);
moure (desplaçament segD +, segD_OUT);
moure (segE + desplaçament, segE_OUT);
moure (desplaçament segF +, segF_OUT);
moure (desplaçament segG +, segG_IN);
trencar;
cas 1:
moure (desplaçament segA +, segA_IN);
moure (desplaçament segB +, segB_OUT);
moure (desplaçament segC +, segC_OUT);
moure (desplaçament segD +, segD_IN);
moure (desplaçament segE +, segE_IN);
moure (desplaçament segF +, segF_IN);
moure (desplaçament segG +, segG_IN);
trencar;
cas 2:
moure (desplaçament segA +, segA_OUT);
moure (desplaçament segB +, segB_OUT);
moure (desplaçament segC +, segC_IN);
moure (desplaçament segD +, segD_OUT);
moure (segE + desplaçament, segE_OUT);
moure (desplaçament segF +, segF_IN);
move (desplaçament segG +, segG_OUT);
trencar;
cas 3:
moure (desplaçament segA +, segA_OUT);
moure (desplaçament segB +, segB_OUT);
moure (desplaçament segC +, segC_OUT);
moure (desplaçament segD +, segD_OUT);
moure (desplaçament segE +, segE_IN);
moure (desplaçament segF +, segF_IN);
move (desplaçament segG +, segG_OUT);
trencar;
cas 4:
moure (desplaçament segA +, segA_IN);
moure (desplaçament segB +, segB_OUT);
moure (desplaçament segC +, segC_OUT);
moure (desplaçament segD +, segD_IN);
moure (desplaçament segE +, segE_IN);
moure (desplaçament segF +, segF_OUT);
move (desplaçament segG +, segG_OUT);
trencar;
cas 5:
moure (desplaçament segA +, segA_OUT);
moure (desplaçament segB +, segB_IN);
moure (desplaçament segC +, segC_OUT);
moure (desplaçament segD +, segD_OUT);
moure (desplaçament segE +, segE_IN);
moure (desplaçament segF +, segF_OUT);
move (desplaçament segG +, segG_OUT);
trencar;
cas 6:
moure (desplaçament segA +, segA_OUT);
moure (desplaçament segB +, segB_IN);
moure (desplaçament segC +, segC_OUT);
moure (desplaçament segD +, segD_OUT);
moure (segE + desplaçament, segE_OUT);
moure (desplaçament segF +, segF_OUT);
move (desplaçament segG +, segG_OUT);
trencar;
cas 7:
moure (desplaçament segA +, segA_OUT);
moure (desplaçament segB +, segB_OUT);
moure (desplaçament segC +, segC_OUT);
moure (desplaçament segD +, segD_IN);
moure (desplaçament segE +, segE_IN);
moure (desplaçament segF +, segF_IN);
moure (desplaçament segG +, segG_IN);
trencar;
cas 8:
moure (desplaçament segA +, segA_OUT);
moure (desplaçament segB +, segB_OUT);
moure (desplaçament segC +, segC_OUT);
moure (desplaçament segD +, segD_OUT);
moure (segE + desplaçament, segE_OUT);
moure (desplaçament segF +, segF_OUT);
move (desplaçament segG +, segG_OUT);
trencar;
cas 9:
moure (desplaçament segA +, segA_OUT);
moure (desplaçament segB +, segB_OUT);
moure (desplaçament segC +, segC_OUT);
moure (desplaçament segD +, segD_OUT);
moure (desplaçament segE +, segE_IN);
moure (desplaçament segF +, segF_OUT);
move (desplaçament segG +, segG_OUT);
trencar;
cas 10:
moure (desplaçament segA +, segA_IN);
moure (desplaçament segB +, segB_IN);
moure (desplaçament segC +, segC_IN);
moure (desplaçament segD +, segD_IN);
moure (desplaçament segE +, segE_IN);
moure (desplaçament segF +, segF_IN);
moure (desplaçament segG +, segG_IN);
trencar;
}
}
Tot funciona:
De manera que la pantalla mecànica d’un disseny no trivial està a punt.