A javasolt kijelző működésének alapelve, amelyet az Instructables alstroemeria becenéven készített és épített, a következő: a szervó által fejlesztett szegmensek árnyékot vetnek fel, amely láthatóvá teszi őket. A fennmaradó szegmensek, amelyek ugyanabban a síkban vannak a háttérrel, egyesülnek vele.
Ez egyértelmű
Házitermékek Kiderül, hogy drága, mert neki a mester 28 ilyen szervót szerez be:
És egy felügyeleti modul, amely csatlakozik a
Arduino így:
A valós idejű óra (RTC) modulja ennek ellenére nagyon kicsi költség.
Az összes szükséges alkatrész megszerzése után a mester eddig félretette azokat a sablonok kidolgozására, amelyekkel a kijelző mechanikai részét elkészítheti. Négy fájlt kap:
1,
2,
3,
4. A varázsló kétszer jeleníti meg az 1. és 3. fájlt egy vágó plotteren, valamint a 2. és 4. fájlt, egyenként, mindegyik 1: 1 méretarányban, és hat részből áll, amelyek közül néhány hasonlít valamilyen módon a régi lyukasztókártyákra. Nyomtathat, akár 1: 1 méretben, ugyanolyan mennyiségben, és kézzel vághatja meg.
A Dremel 20 mm hosszú üreges fémcsapokat és olyan csöveket vág, amelyek külső átmérője kissé nagyobb, mint a 10 mm hosszú csap külső átmérője:
Ragasztja a rétegeket vastag kétoldalas szalaggal, csöveket ad hozzá:
Hozzáteszi a csöveken áthaladó csapokhoz ragasztott mozgatható szegmenseket, a hátoldalon ugyanazokra a csapokra ragasztja az acélhuzal-tolókat, és itt vannak a csapok üregek:
Meghajolja a tolóerőket, ragasztja a szervókat és csatlakozik hozzájuk:
Bezárja a szervókat a fennmaradó perforált lapokkal:
A szervóvezérlő modul a cikk elején megadott séma szerint csatlakozik. Maguk a meghajtók a szokásos szegmensmegjelöléseknek megfelelő sorrendben vannak csatlakoztatva a modulhoz:
Az RTC modul az alábbiak szerint csatlakozik: SDA - 4. tű Arduino, SCL - 5. érintkező, plusz tápellátás és közös vezeték - párhuzamosan a megfelelő Arduino vonalakkal. Itt van az eredmény:
A varázsló beállítja az időt az RTC modulban ezzel a vázlattal (szükség van az RTClib könyvtárra):
#include
#include "RTClib.h"
RTC_DS1307 RTC;
érvénytelen beállítás () {
Serial.begin (57600);
Wire.begin ();
RTC.begin ();
if (! RTC.isrunning ()) {
Serial.println ("Az RTC NEM fut!");
RTC.adjust (DateTime (__ DATE__, __TIME__));
}
}
Ezután kitölti a fővázlatot, amely ugyanazt a könyvtárat igényli:
# beletartozik a
#include "RTClib.h"
RTC_DS1307 RTC;
rövid szegA = 0; // 14. kijelzőcsap
rövid szegB = 1; // 16. kijelzőcsap
rövid szegC = 2; // 13. kijelzőcsap
rövid szegD = 3; // 3. kijelzőcsap
rövid szegE = 4; // 5. jelzőtű
rövid segmentF = 5; // 11. jelzőtű
rövid szegG = 6; // 15. kijelzőcsap
rövid segmentA_OUT = 110;
rövid szegB_OUT = 110;
rövid segmentC_OUT = 110;
rövid segmentD_OUT = 110;
rövid szegE_OUT = 110;
rövid segmentF_OUT = 110;
rövid szegG_OUT = 110;
rövid szegA_IN = 90;
rövid szegB_IN = 90;
rövid segmentC_IN = 90;
rövid szegD_IN = 90;
rövid szegE_IN = 90;
rövid segmentF_IN = 90;
rövid szegG_IN = 90;
int IDŐ = 2000;
DateTime datePast;
DateTime dateNow;
// háztartás
érvénytelen beállítás () {
Serial.begin (9600);
Wire.begin ();
RTC.begin ();
RTC.adjust (DateTime (__ DATE__, __TIME__));
datePast = RTC.now ();
}
// fő hurok
void loop () {
dateNow = RTC.now ();
if (! (datePast.hour () == dateNow.hour () && datePast.minute () == dateNow.hour ()))
{
displayNumber (dateNow.hour () * 100 + dateNow.minute ());
datePast = dateNow;
}
}
// Adott egy számot, 10:22-et jelenítünk meg
// A 4 szám futtatása után a kijelző ki van kapcsolva
void displayNumber (megjelenítés közben) {
mert (int szám = 4; számjegy> 0; szám--) {
lightNumber (toDisplay% 10, számjegy);
toDisplay / = 10;
}
// mozgás indítása
Serial.print ("T"); Serial.println (TIME);
}
érvénytelen lépés (int szervo, int helyzet) {
Serial.print ("#");
Serial.print (szervo);
Soros nyomtatás ("P");
Serial.print (pozíció);
}
// Ha megad egy számot, kapcsolja be ezeket a szegmenseket
// Ha szám == 10, akkor kapcsolja ki a számot
void lightNumber (int numberToDisplay, int segment) {
int eltolás = (1 szegmens) * 7;
kapcsoló (numberToDisplay) {
0. eset:
mozgatás (segA + eltolás, segA_OUT);
mozgatás (segB + eltolás, segB_OUT);
mozgatás (segC + eltolás, segC_OUT);
mozgatás (segmentD + eltolás, segD_OUT);
mozgatás (segmentE + eltolás, segmentE_OUT);
mozgatás (segmentF + eltolás, segF_OUT);
mozgatás (segmentG + eltolás, segG_IN);
break;
1. eset:
mozgatás (segA + eltolás, segA_IN);
mozgatás (segB + eltolás, segB_OUT);
mozgatás (segC + eltolás, segC_OUT);
mozgatás (segmentD + eltolás, segD_IN);
mozgatás (segmentE + eltolás, segmentE_IN);
mozgatás (segmentF + eltolás, segF_IN);
mozgatás (segmentG + eltolás, segG_IN);
break;
2. eset:
mozgatás (segA + eltolás, segA_OUT);
mozgatás (segB + eltolás, segB_OUT);
mozgatás (segC + eltolás, segC_IN);
mozgatás (segmentD + eltolás, segD_OUT);
mozgatás (segmentE + eltolás, segmentE_OUT);
mozgatás (segmentF + eltolás, segF_IN);
mozgatás (segmentG + eltolás, segG_OUT);
break;
3. eset:
mozgatás (segA + eltolás, segA_OUT);
mozgatás (segB + eltolás, segB_OUT);
mozgatás (segC + eltolás, segC_OUT);
mozgatás (segmentD + eltolás, segD_OUT);
mozgatás (segmentE + eltolás, segmentE_IN);
mozgatás (segmentF + eltolás, segF_IN);
mozgatás (segmentG + eltolás, segG_OUT);
break;
4. eset:
mozgatás (segA + eltolás, segA_IN);
mozgatás (segB + eltolás, segB_OUT);
mozgatás (segC + eltolás, segC_OUT);
mozgatás (segmentD + eltolás, segD_IN);
mozgatás (segmentE + eltolás, segmentE_IN);
mozgatás (segmentF + eltolás, segF_OUT);
mozgatás (segmentG + eltolás, segG_OUT);
break;
5. eset:
mozgatás (segA + eltolás, segA_OUT);
mozgatás (segB + eltolás, segB_IN);
mozgatás (segC + eltolás, segC_OUT);
mozgatás (segmentD + eltolás, segD_OUT);
mozgatás (segmentE + eltolás, segmentE_IN);
mozgatás (segmentF + eltolás, segF_OUT);
mozgatás (segmentG + eltolás, segG_OUT);
break;
6. eset:
mozgatás (segA + eltolás, segA_OUT);
mozgatás (segB + eltolás, segB_IN);
mozgatás (segC + eltolás, segC_OUT);
mozgatás (segmentD + eltolás, segD_OUT);
mozgatás (segmentE + eltolás, segmentE_OUT);
mozgatás (segmentF + eltolás, segF_OUT);
mozgatás (segmentG + eltolás, segG_OUT);
break;
7. eset:
mozgatás (segA + eltolás, segA_OUT);
mozgatás (segB + eltolás, segB_OUT);
mozgatás (segC + eltolás, segC_OUT);
mozgatás (segmentD + eltolás, segD_IN);
mozgatás (segmentE + eltolás, segmentE_IN);
mozgatás (segmentF + eltolás, segF_IN);
mozgatás (segmentG + eltolás, segG_IN);
break;
8. eset:
mozgatás (segA + eltolás, segA_OUT);
mozgatás (segB + eltolás, segB_OUT);
mozgatás (segC + eltolás, segC_OUT);
mozgatás (segmentD + eltolás, segD_OUT);
mozgatás (segmentE + eltolás, segmentE_OUT);
mozgatás (segmentF + eltolás, segF_OUT);
mozgatás (segmentG + eltolás, segG_OUT);
break;
9. eset:
mozgatás (segA + eltolás, segA_OUT);
mozgatás (segB + eltolás, segB_OUT);
mozgatás (segC + eltolás, segC_OUT);
mozgatás (segmentD + eltolás, segD_OUT);
mozgatás (segmentE + eltolás, segmentE_IN);
mozgatás (segmentF + eltolás, segF_OUT);
mozgatás (segmentG + eltolás, segG_OUT);
break;
10. eset:
mozgatás (segA + eltolás, segA_IN);
mozgatás (segB + eltolás, segB_IN);
mozgatás (segC + eltolás, segC_IN);
mozgatás (segmentD + eltolás, segD_IN);
mozgatás (segmentE + eltolás, segmentE_IN);
mozgatás (segmentF + eltolás, segF_IN);
mozgatás (segmentG + eltolás, segG_IN);
break;
}
}
Minden működik:
Tehát a nem triviális kialakítás mechanikus megjelenítése kész.