Tartalomjegyzék:

Minidot 2 - a Holoclock: 6 lépés
Minidot 2 - a Holoclock: 6 lépés

Videó: Minidot 2 - a Holoclock: 6 lépés

Videó: Minidot 2 - a Holoclock: 6 lépés
Videó: Складная палатка с поздравительной открыткой из «Доброе утро, Магнолия» 2024, Július
Anonim
Minidot 2 - a Holoclock
Minidot 2 - a Holoclock
Minidot 2 - a Holoclock
Minidot 2 - a Holoclock

Nos, talán a holoclock egy kicsit pontatlan … /EEGLXQCSKIEP2876EE/és sok kódot és áramkört újra felhasználva a Microdot-ból, amely itt található: Az előző Minidot túlságosan bonyolult volt, a Microdot -ból megtanultam, hogyan kell RTC -t csinálni PIC -n csak 32.768 kristály használatával, és nem kellett speciális RTC chipet használni. Szerettem volna megszabadulni az előző Minidot kijelző chipjeitől is. Tehát most csak egy teljesítményszabályozó chip és egy PIC16F88 van.. Csak két chip. A frissítés másik oka az volt, hogy a Minidot kissé megbízhatatlanná vált a külön kapcsolólap miatt, és lágy elhalványulást akartam a pontminták között valamint valamilyen környezeti fényérzékelő a kijelző éjszakai tompításához. A másik Minidot fényereje fix volt, és éjszaka megvilágította a szobát. A készülék az EagleCad szoftvercsomag és a Sourceboost fordító segítségével készült. A projekt elindításához némi tapasztalattal kell rendelkeznie az elektronikában és a PIC vezérlők programozásában. Kérjük, vegye figyelembe, hogy ez nem utasítható sem az elektronika, sem a PIC programozás területén, ezért kérjük, tartsa meg a Miniclock kialakításával kapcsolatos kérdéseket. Az EagleCad használatával vagy a PIC -k programozásával kapcsolatos tanácsokért tekintse meg a fenti utasításokat vagy sok más útmutatót ezen az oldalon. Tehát itt van….. Minidot 2, The Holoclock …… vagy Minidot The Next Generation ………….

1. lépés: Az áramkör

Az áramkör
Az áramkör
Az áramkör
Az áramkör
Az áramkör
Az áramkör

Ez az áramkör nagyon hasonlít a Microdot -hoz. Ne feledje, hogy a charlieplex tömb gyakorlatilag megegyezik… csak néhány csap került áthelyezésre.

Egy 20 MHz -es kristályt adtak a Microdot áramkörhöz, hogy sokkal gyorsabban figyelje a PIC -t, ez lehetővé teszi a tömb gyorsabb beolvasását, és lehetővé teszi a tompító algoritmus megvalósítását. A fényerőszabályozó algoritmus nagyon fontos volt ahhoz, hogy a keresztmintázat elhalványuljon és a környezeti fény funkció működjön. Ez lehetetlen lett volna a Microdot -tal a lassabb órajel miatt, mivel egyes szkennelési ciklusokat fényerőre kellett fordítani. A fényerő -szabályozási funkció leírását lásd a következő részben. A többi dolog, amit meg kell jegyezni, az MCP1252 töltőszivattyú -szabályozó használata 5 V -os tápellátáshoz, a kedvenc chipem jelenleg. Ha módosítottad az áramkört, használhatsz egy sima régi 7805 -öt …… Csak néhány ilyen praktikus zseton lóg körülöttem. Most áthelyeztem a kapcsolókat az elülső oldalra, az áramkimaradás után az óra hátulján való hegedülést mentem, hogy visszaállítsam az időt, és most minden csak egy NYÁK -ot jelent.… Nincsenek kábelezési problémák. Szintén figyelemre méltó az LDR felvétele. Ezt egy feszültségosztóban használják, amelyet a PIC A/D csapja érzékel. Amikor a PIC érzékeli, hogy a környezeti fény alacsony (azaz éjszakai), a fényerőszabályozó algoritmus több cikluson át sötétben tartja a charlieplex tömböt, mint amikor magas a fényerő. Nem találtam LDR szimbólumot az Eaglecad könyvtárban, ezért csak egy LED szimbólumot használtam….. ne tévesszen meg, ez egy LDR. Lásd az alábbi képet a NYÁK -ról. Egy dolgot meg kell jegyezni, ha többszínű LED-eket használnak charliplex tömbben. Meg kell győződnie arról, hogy a LED -ek előremenő feszültsége többé -kevésbé azonos. Ha nem, akkor kóbor áramvonalak léphetnek fel, és több LED világít. Így az 5 mm -es vagy nagyobb teljesítményű LED -ek használata ehhez a konfigurációhoz nem fog működni, mivel általában nagy különbség van a zöld/kék és a piros/sárga LED -ek között. Ebben az esetben 1206 SMD LED -et és különösen nagy hatékonyságú zöld/kék LED -eket használtam. Az előremenő feszültségek azonban itt nem jelentettek problémát. Ha zöld/kék és piros/sárga LED -ek keverékét szeretné használni egy charlieplex tömbben, akkor a különböző színeket két charliplex tömbre kell szétválasztania. A charlieplexelésnek számos magyarázata van, amit google -ban lehet keresni … … Nem részletezem itt. Rád bízom a kutatást. (Nagyobb verzió megtekintéséhez nyomja meg a kis „i” ikont az alábbi kép sarkában)

2. lépés: A fényerő -szabályozó algoritmus - Charliplexed Pulse Width Modulation

A fényerő -szabályozó algoritmus - Charliplexed Pulse Width Modulation
A fényerő -szabályozó algoritmus - Charliplexed Pulse Width Modulation

Amint korábban említettük, azt akartam, hogy a különböző pontminták simán elhalványuljanak, ahelyett, hogy egyik mintáról a másikra rángatnák. Lásd a videót a demonstrációhoz. Középen az új Minidot óra, jobb oldalon a régebbi Minidot. Figyeld meg, mennyivel szebb az új. (FYI, a többi kijelző a háttérben a Minicray szuperszámítógép állapotkijelzőm és a rögzített Nebulon részecském, amely a Minicray -t táplálja az antianyag mágneses zárt térben. Lásd itt: https://www.youtube.com/watch? V = bRupDulR4ME a nebulon bezárt kamrában) Ha belenéz a kódba, nyissa meg a display.c fájlt. Megjegyzés: négy tömb található a tris/port értékek leképezésére, hogy megvilágítson egy adott tömböt, és két tömb (eggyel több, mint a Microdot -kód) annak meghatározására, hogy mely LED -eket kell megvilágítani a LED -ek adott mintája esetén. Pl:

// LED1 LED2 LED3… unsigned char LEDS_PORTA [31] = {0x10, 0x00, 0x00,… unsigned char LEDS_TRISA [31] = {0xef, 0xff, 0xff,… unsigned char LEDS_PORTB [31] = {0x00, 0x02, 0x04, … Unsigned char LEDS_TRISB [31] = {0xfd, 0xf9, 0xf9,… unsigned char nLedsA [30]; unsigned char nLedsB [30];Például a LED1 kigyulladásához be kell állítania a TRIS regisztereket: TRISA: B = 0xef: 0xfd és PORT regisztereket PORTA: B = 0x10: 0x00 és így tovább. Ha binárisan írja ki a tris értékeket, akkor megjegyzi, hogy egyszerre csak két kimenet van engedélyezve. A többi háromállapotú (ezért a TRIS regiszter). Ez központi szerepet játszik a charlieplexingben. Azt is megjegyzi, hogy az egyik kimenet mindig logikai "1", a másik pedig mindig logikai "0"…. Amelynek iránya bekapcsolja a két kimeneti sor közötti LED -et. A port/tris utolsó értéke A tömbök egy nulla érték, ha egyáltalán nem kapcsolnak be LED -et. A Microdot -ban az update_display függvény folyamatosan cikluson keresztül egy másik tömbön (nLeds ) keresi, hogy meg kell -e világítani az adott LED -et. Ha igen, akkor a megfelelő tris/port értékeket állította be, és a LED világított egy ideig. Ellenkező esetben a nulla értéket elküldte a PIC TRIS/PORT regisztereinek, és egy ideig nem világított LED. Ha elég gyorsan elkészült, ez egy mintát adott. A program többi része rendszeresen leolvassa az RTC -értékeket, és szép véletlenszerű mintázatot hoz létre abban a tömbben… nem), akkor további periódusokat kell fordítani a null értékek elküldésére, ha a kijelzőt elsötétítené….. a teljes fényerő érdekében nem töltene további időszakokat. Ha megismétlik, ha sok nulla periódus van a világító LED -eken, a kijelző halvány lesz. Valójában ez egy multiplex impulzusszélesség -moduláció…..vagy azért, mert a hardver charlieplex arragementben van konfigurálva, majd charlieplexed impulzusszélesség -moduláció. Az alábbi diagram az alapbeállításokat mutatja be. Ezt nevezem beolvasási keretnek. A keret első 30 periódusa a LED -ek áthaladására szolgál….. és változó számú extra periódus határozza meg, hogy a kijelző mennyire homályos. Ez a ciklus megismétlődik. A több nullperiódus kevesebb időt jelent a LED -nek képkockánként történő bekapcsolásához (mivel a periódusok száma megnőtt). A függőleges tengely nem jelenti a feszültség szintjét. A LED -ekhez tartozó csapok tényleges állapota a charlieplex tömbben elfoglalt hely függvényében változik….. a diagramon ez csak be- vagy kikapcsolást jelent. Ez azt is jelentette, hogy a keret teljes időtartama is megnőtt, ezáltal csökken a frissítés mérték. Ahogy a LED -ek halványodtak, más szóval villogni kezdtek. Tehát ez a módszer csak bizonyos mértékig hasznos. Az óra esetében ez rendben volt. Funkciót hívunk szakaszosan, amely beolvassa a PIC A/D átalakítóját, és beállítja ezt a fényerőt. Ha elolvassa a kódot, azt is ellenőrzi, hogy az LDR -hez legközelebbi LED világít -e, és nem végez semmilyen szintbeállítást, ha igen, ez leállítja a kijelző váratlan megvilágítását a minta megváltozásakor.

3. lépés: Dimming Algoritmus - Cross Fade Effect és Double Buffering

Dimming Algoritmus - Cross Fade Effect és kettős pufferelés
Dimming Algoritmus - Cross Fade Effect és kettős pufferelés

Az átmenet az egyik minta és a másik között korábban azonnali volt. Ehhez az órához azt akartam megmutatni, hogy az egyik minta fokozatosan csökken, és a következő minta fokozatosan növekszik… azaz a kereszthalványodás.

Nem kellett külön LED -eket vezérelnem, külön fényerősséggel ahhoz, hogy kereszthalványítást végezzek. Csak az első mintára volt szükség egy fényerőnél, a másodikra pedig alacsony fényerőnél. Aztán rövid idő alatt egy kicsit csökkentettem az első fényerejét, és növeltem a másodikat….. ez folytatódik egészen a második mintáig. Ezután az óra megvárja, amíg a következő minta megjelenik, és újabb átmenet következik. Így két mintát kellett tárolnom. Az éppen megjelenített és a második minta, amely megjelenítés előtt áll. Ezek az nLedsA és az nLedsB tömbökben találhatók. (ebben az esetben semmi köze a portokhoz). Ez a kettős puffer. Az update_display () függvényt úgy módosítottuk, hogy nyolc képkockát játsszon át, és először az egyik, majd a másik képkockát jelenítse meg. Az egyes pufferekhez rendelt keretek számának megváltoztatása a nyolc ciklus során meghatározta, hogy az egyes minták milyen fényesek lesznek. Amikor befejeztük a ciklusozást a pufferek között, a „display” és a „next display” puffereket átkapcsoltuk, így a mintageneráló funkció csak a „következő kijelző” pufferbe ír. Az alábbi ábra ezt reménykedve mutatja. Látnia kell, hogy az átmenet 64 szkennelési keretet vesz igénybe. A képen a kis betét az előző oldal szkennelési keret diagramját mutatja be művészien kicsinyítve. Néhány szó az újra frissítésről. Mindezt nagyon gyorsan meg kell tenni. Jelenleg két szintje van az extra számításoknak, az egyik a környezeti kijelző tompításának, a másik pedig a két puffer közötti átmenet során eltöltött nyolc képciklushoz. Így ezt a kódot az assembly -ben kell írni, de elég jó a „C” -ben.

4. lépés: Építés - a NYÁK

Építés - a NYÁK
Építés - a NYÁK
Építés - a NYÁK
Építés - a NYÁK

Ez elég egyértelmű. Csak egy kétoldalas NYÁK, néhány SMD komponenssel a tetején. Sajnáljuk, ha átmenő lyukú ember vagy, de sokkal könnyebb SMD projekteket készíteni….lyukak nélkül fúrni. Egyszerű kezű, hőmérséklet -szabályozott forrasztóállomás, valamint sok fény és nagyítás kell, hogy legyen.

Az egyetlen dolog, amit meg kell jegyezni a NYÁK felépítésében, egy csatlakozó beépítése a PIC programozásához. Ez csatlakozik a PIC ICSP csapjaihoz, és szüksége lesz egy ICSP programozóra. Ismét egy praktikus eszközt használtam a junkbox csatlakozóhoz. Ezt kihagyhatja, és csak úgy forraszthatja a vezetékeket a párnákhoz, ha úgy tetszik. Alternatív megoldásként, ha csak aljzatos programozója van, elkészíthet egy fejlécet, amely csatlakozik az aljzathoz, majd forraszthatja azt az ICSP párnákhoz. Ha ezt megteszi, akkor válassza le az Rx -t, és csatlakoztassa a Ry -t, amelyek csak nulla ohmos linkek (én csak forrasztópisztolyt használok). Ez lekapcsolja az áramkör többi áramát a PIC -ről, így nem zavarja a programozást. Egy foglalatos programozó csak használja az ICSP csapokat, mint egy ICSP programozó, valójában nincs mágia. Ezt akkor is meg kell tennie, ha véletlenül elfelejtette késleltetni a kódot az RTC indítása előtt. A 16F88 esetében az ICSP programozási csapok megegyeznek az RTC -hez használt 32,768 kHz -es kristályhoz szükséges csapokkal…… ha a T1 külső oszcillátor (azaz az RTC) fut, mielőtt az ICSP megkezdheti működését, akkor a programozás meghiúsul. Általában, ha az MCLR tűn van visszaállítás és késés van, akkor az ICSP adatok elküldhetők ezekre a tűkre, és a programozás megfelelően elindulhat. A PIC áramellátásának leválasztásával azonban az ICSP programozó (vagy aljzatos programozó fejléccel) szabályozhatja az eszköz áramellátását és kényszerítheti a programot. A többi dolog, amit meg kell jegyezni, az, hogy a NYÁK kristálypárnáit eredetileg SMD kristályokhoz tervezték. Alig vártam, hogy néhányat kiszállítsanak, így a 32,768 kHz -es óra kristályt a tetejére forrasztották az ábrán látható módon, és a 20 MHz -es kristályt úgy rögzítették, hogy néhány lyukat fúrtak a párnákban, bedugták a kristályt az alján, és forrasztották a tetején. A csapokat a PIC16F88 jobb oldalán láthatja.

5. lépés: A holografikus film és a ház

A holografikus film és a ház
A holografikus film és a ház
A holografikus film és a ház
A holografikus film és a ház
A holografikus film és a ház
A holografikus film és a ház

A végső konstrukció egyszerűen a NYÁK behelyezése a tokba, és programozás után egy csésze forró ragasztóval rögzítve. Három lyuk teszi lehetővé a mikrokapcsolók elülső hozzáférését.

Ennek az órának a figyelemre méltó része a holografikus diffúzorfilm használata. Ez egy különleges film, amin feküdtem, és szép mélységet biztosít a készüléknek. Használhat sima nyomkövető papírt (amelyben a NYÁK -t közelebb helyezném az elejéhez), vagy bármilyen más diffúzort, például a fénycsöves lámpatestekhez használt diffúzorokat. Tapasztalataink szerint az egyetlen dolog, amit meg kell tennie, hogy lehetővé tegye a megvilágított LED -ek számának megkülönböztetését, különben nehéz lesz számolni a pontokat, hogy megmondja az időt. A Physical Optics Coorporation (www.poc.com) holografikus diszperziós anyagát 30 fokos kör alakú diszperzióval használtam, az utasításban máshol látható szuperszámítógép állapotkijelző 15x60 fokos elliptikus diszperzióval ellátott filmet használt. Használhat sötétítő szalagot, hogy elrejtse a fényes belsőket nappal, hogy titokzatosabb megjelenést kapjon. Akár tisztán is hagyhatod a kijelzőt, és hagyhatod, hogy az emberek lássák a belsőket, mint én. Az állvány két darab alumínium „L” rúd volt, alul kissé kivágva, hogy hajlítható legyen. Megjegyzés: ezeken a képeken extra világítást kapott, így láthatja a kijelző borításait stb.

6. lépés: Szoftver és felhasználói felület

A készülék kezelése nagyon egyszerű, nincsenek különleges minta módok vagy feltűnő dolgok. Az egyetlen dolog, amit mutat, az az idő megjelenítése.

Az idő beállításához először nyomja meg az SW1 gombot. A készülék néhányszor felvillan minden LED -et, majd az SW3 10 másodperces LED -csoportja növeli a kiválasztott SW2 csoportot, és a következő LED -csoportra lép, minden alkalommal röviden felvillanva a csoport összes LED -jét. A kód a Sourceboost C fordító 6.70 -es verziójához készült. Az RTC kód a t1rtc.c/h fájlokban található, és megszakítási funkcióval rendelkezik a PIC T1 időzítőjén. A T1 időzítő úgy van beállítva, hogy 1 másodpercenként megszakadjon. Minden másodpercben az idő változója növekszik. A kullancsidőzítő is másodpercenként visszaszámlálásra kerül az idővel együtt. Ez határozza meg, hogy mikor kell átállítani a kijelzőt. A megszakítás funkció a T0 időzítő megszakítást is használja a kijelző frissítéséhez, a kijelzőn megjelenő funkció meghívásához. C A display.h/display.c fájlok tartalmazzák a kijelző frissítésének és az idő megjelenítésének funkcióit. A fájlok vezérlése. C/h funkciók az idő beállítására és a kapcsolók olvasására A holoclock.c/h fájlok a fő ciklusok és inicializálás.

Ajánlott: