TFT kijelzős robotok

CNC = computer numerical control. Mivel egy robotot is számítógép (mikrokontroller) vezérel, magától értetődik, hogy ezek jól passzolnak egymáshoz.



Kitűztem tehát magamnak a célt: egy olyan robotot készíteni, mely egy valóságos CNC esztergát utánoz. 

A "fejlesztése"kissé elhúzódott, mert először encoder motorokkal próbálkoztam gyatra eredménnyel, úgyhogy átdolgoztam léptetőmotorosra. Ismét bebizonyosodott, hogy ezek a legalkalmasabbak az egyidejű működésre.


Zenén, dallamokon és fényhatásokon alapuló készülék, de inkább egy hangverseny terem.


Minden látható, hallható a videóban, pontosabban a koncerten.

Itt csak némi kiegészítést fűznék hozzá. Az Auriga zümmerét és LED gyűrűjét úgy kellett programozni, hogy egy-egy hang és a LED-ek felvillanása szinkronban történjen. Ez önmagában nem egy nagy kunszt, de az, hogy a szín hangfrekvencia függő legyen, az már inkább.  Ezzel elég sokáig kűzdöttem, végül csak sikerült megoldani. 

A lényege. egy -egy hang megszólalásakor az frekvenciákat tartalmazó  tömböt le kell futtatni egészen addíg, amíg  annak indexe és az arra utaló zenei jelölés indexe nem azonos.(pl. a 440 Hz-es  normál A hang a neten található példaprogramokban NOTE_A4-ként szerepel). Így nyerhetjük vissza a tényleges frekvencát, mely kihat a LED színére.


A jól ismert Torpedó játék robotizálva.



Bizonyos programozástechnikai okokból a hajókat szimbolizáló alakzatok színesek. 

Felmerülhet a kérdés, hogy az  egy-egy hajóval szomszédos mezőket miért nem záram ki a szenzor hatóköréből. Nos, tavaly kb. három hónapig már kűzdöttem ezzel a megoldással, sajna sikertelenül, ezért azt nem publikáltam. Most, hogy ismét elővettem a témát, ezzel a kérdéssel eleve nem foglalkoztam. Amúgy is az összes hajó kilövése maximum 30 lépésben történhet, de általában még annyi sem kell hozzá. Az még bőven belefér, ha ebből néhány lépés feleslegesnek tűnik.

Némi játszadozás 8 db állandó mágnessel...


Hogyan lehet látványossá tenni az állandó mágnesek egymásra hatását?  Robotba kell őket építeni!

A videóban nem hangzik el, ezért ide írom: A Makeblock alkatrészek antimágneses anyagokból készülnek, még a csavarok sem mágnesezhetők. Így ezeknek nincs hatásuk a mágneses mezőkre.

Egy egyszerű folyamat némiképp megbolondítva...



Egy görgős szánnal, egy paravánnal, az ultrahangos távolságmérővel, a TFT kijelzővel és két számkijelzővel.

A többi kiderül a videóból.

A TFT kijelző ihlette. Mért értékek valós időben láthatók, akár egy oszcilloszkóp képernyőjén.



Minden kiderül a videóból. 

De vigyázat! A videó editor programom ismeretlen hiba miatt nem tudta a megszokott MPEG-4 HD formátumba renderelni, így WMV kiterjesztésben készült, melyet a legtöbb videó lejátszó felismer.

Kicsit olyan, mint egy igazi! De az enyém.  






Ha megnézed, és netán tetszik is, akkor büszke is leszek magamra és rá...

Ahogy a videóban is hallható, az évek során meglehetősen sok repülés tárgyú videót néztem az interneten, első sorban a pilóták szemszögéből. Ez az érdeklődés vezetett odáig, hogy megépítettem a repülőgép szimulátort.


A videó elég hosszúra sikeredett, mert az első, ismertető részben igyekeztem részletesen bemutatni az egyes egységek működését, egy külön, erre a célra készített program segítségével.

Így a rövidebb, második részben már nem volt szükség magyarázatokra, remélem a végleges program és a joystick használata révén a manuális fel- és leszállás, a  szabad repkedés illetve az automatikus ciklus (autopilot on) folyamata egyértelmű.

Ez a kis egyszerű robot két újonnan beszerzett elektronikus modult házasít össze. egy Joystickot és egy színes nyomövetőt (RGB Line Follower).


Az RGB Line follower eredeti rendeltetése, hogy színes nyovonala(ka)t kövessen, pl. egy önjáró robot részeként. A négy szenzor közül a széleken lévők színes háttéret is tudnak érzékelni, és az is beállítható, hogy mekkora kitérést engedünk a nyomvonaltól.

Ahogy a videóból is kiderül, a robot csupán a négy szenzor színérzékelését használja. De: a színekhez itt nem konkrét számkódok vannak rendelve, hanem 0 és 255 közötti tartományok. Ennek megfelelően kísérletezgetéssel állapítottam meg, hogy mely résztartomány tartozik a kék illetve a sárga színekhez. 

A Joystick működése a megszokott, bár jelen esetben csak az egymásra merőleges főirányokat (X és Y tengely) használtam.

Ez a kis kompakt robot 1 percig méri az időt, többek között bináris formában  is. Az aktuális bitek mádospercenként jelennek meg  a TFT kijelzőn.

Szerintem a videóban hallható ismertető alapján könnyen megérthető a robot működése.

Itt kiegészítés képpen csak egy kis magyarázatot fűznék a decimális szám binárissá alakításával kapcsolatban.  Mit is jelent, hogy a bitek értékei  a folyamatos, kettővel való osztások maradékai? Nézzünk egy példát a 41 átalakítására:

41 / 2 = 20, marad  1

20 / 2 = 10, marad  0 

10 / 2  =   5, marad  0

   5 / 2  =   2, marad  1

   2 / 2  =   1, marad   0

   1 / 2  =    0, marad  1

A szabályok szerint a kettő hatványai (1, 2, 4, 8, 16, 32) jobbról balra növekednek, és az első osztás maradéka - tehát az első bit - lesz jobbról az első, vagyis 101001

Én viszont csaltam egy kicsit, a kijelzőn - az egyszerűbb programozás miatt - megfordítottam a sorrenndet, tehát a helyi értékek balról jobbra növekszenek.

Ennél a robotnál eltértem a "hagyományoktól" mind a kostrukciót, mind a róla készített videó szerkesztését illetően.




A már jól ismert görgős szánt nem fogasszíj hajtja, hanem két, az aszallal érintkező kerék. Az őket forgató két DC motor eddig nem szerepelt publikált készülékekben.

A videó megtekintéséhez pedig javaslom a hangerőt jól "feltekerni". 

Immáron ez már a harmadik Memory robotom. Ennél nem számokat vagy ábrákat kell összepárosítani, hanem 4 db szines hasábot a készülék által meghatározott sorrendben elhelyezni.

A memória ott jön a képbe, hogy a videóban ismertetett módon kijelölt helyet és színt kell megjegyezni, majd a megfelelő hasábot odahelyezni.

Mivel a készülék visszaellenőrzi, hogy nem tértünk-e el a helyes sorrendtől, az eredményről az audió player révén, szövegesen tájékoztatja a játékost.

A kétféle szöveget (siker vagy bukta) MP3 hangfájlok formájában tárolja a lejátszó a saját kis mikró SD kártyáján. A neten találtam egy ingyenes alkalmazást, mely írott szöveget beszédszintetizátorral "olvastat fel".  Ez a technika nem újdonság, hiszen az okostelefonok is használják. Viszont az alkalmazással a szövegmondó - jelen esetben Microsoft Szabolcs :-) - hangját a már említett formátumban el is lehet menteni. 

Ezt az ötletet a videóra is alkalmaztam! Ugyanis az abban olvasható magyarázó szövegek Microsoft Szabolcs hangján meg is szólalnak.  Így a dyslexiások sem eshetnek zavarba.

Ha vén fejjel már nem jársz diszkóba, készíts magadnak egyet otthonra.

Ahogy a videóban említettem, ez a készülék egy kísérlet eredményeképpen született.

Az audió playeren elhngzó zenét egy alaplapi szenzor figyeli, amely érzékeli a hangerőben bekövetkező változásokat. Így a szenzor kimeneti jelével a program LED-es fényforrásokat vezérelhet. 

Ez történik ebben a robotban is a következő módon. A hangerő tartományt 3 részre osztottam. Minden tartományhoz hozzárendeltem, hogy a három fényforrás milyen színnel világítson. Pl. a középső tartományban a jobb felső 4 LED-es modul zölddel (Green), a bal felső kékkel (Blue), és az alaplai LED gyűrű pirossal  (Red). Más tartományokban ettől eltérő a színkiosztás, de az intenzitásuk minden esetben a pillanatnyi hangerővel arányos. Így sikerült elérni, hogy a fényforrásként működő LED-es kijelzők a zene ütemére az RGB alapszínekkel villogjanak. 

Próbáltam a videó készítése során optimális környezeti megvilágítást biztosítani, de sajnos a kamera a villogó színeket kismértékben így is torzítja. Remélem, ennek ellenére a látvány élvezhető.

Ez egy "hightech" obszervatórium. Nagyrészt a fantáziám szüleménye, de az "észlelt" csillagépek és azok geometriája valósághű.

A felépítése és a működése kiderül a videóból. Ahogy viszont abban ígértem, itt térek ki a TFT kijelzőn megjelenített csillagképek programozására.

A csillagképeket alkotó csillagokat kis kerek pöttyök szimbolizálják. Hogy minél jobban közelítsék a valóságot, a középpontjainak koordinátáit kell alapul venni. Ehhez segítségül vettem a Wikipédián fellelhető csillagkép ábrázolásokat, melyek az alábbi linken érhetők el: (https://hu.wikipedia.org/wiki/Csillagkép). Hat darabot választottam ki, ezek közül négyhez személyes kötődésem van. A Libra (Mérleg) a csillagjegyem, a Gemini (Ikrek) a gyerekeimre utal, az Auriga és az Orion a robot alaplapjaim neve. Az Ursa Majort, vagyis lényegében a nagyon közismert Göncölszekeret és a Cassiopeiát különösebb ok nélkül választottam.

A képeket bemásoltam a Paint alkalmazásba, bekapcsoltam a négyzetrácsot, és annak segítségével határoztam meg a koordinátákat. Ezeket a program kétdimenziós tömbökben tárolja és egy-egy csillagkép TFT kijelzőn történő megjelenítéséhez onnan olvassa ki. A "sima" csillagos eget 40 darab, véletlenszerű eloszlásban megjelenő pötty jeleníti meg.

Ha van egy olyan doboz, melynek helyzetét egy gyro szenzot érzékeli, akkor van arra lehetőség, hogy a különböző oldalaira fektetve más-más program részlet fusson le. Ezt az alapelvet már korábban használtam a Homokórákban. Most viszont egy olyan zenedobozt építettem, amely 3 különböző oldalára helyezve eltérő zenéket (részleteket) játszik le.


A robot egyszerű felépítéséről és működéséről megbizonyosodhat a Kedves Érdelkődő, ha megtekinti a videót

Itt csak annyival egészíteném ki, hogy az audió  lejátszó működéséhez egyrészt némi késleltetésre van szükség, különben nem ad ki hangot, másrészt ahhoz, hogy a doboz eltérő helyzeteiben más-más zene induljon el, állandóan figyelni kell az alaplapi gyro szenzor kimenetét. A program ezt a két feltételt úgy teljesíti, hogy a lejátszó addig játsza le az aktuális zenét, amíg a doboz helyzete változatlan. Ez tehát a késleltetés. Ha másik oldalára fektetjük, akkor pedig egy újabbat kezd el lejátszani. Ezzel szinkronban változik a LED mátrixon látható nyíl és a TFT kijelző olvashatósági iránya is.

A Zenepavilonban maximum hat zeneszámot - illetve azok egy részletét - lehet meghallgatni. A konstrukció kivétel nélkül olyan alkatrészből áll, melyeket már használtam a korábbi robotokban. 


Újdonság viszont a dupla tolóajtó, mely azon az elven alapul, hogy egy encoder motor által hajtott fogasszíj ágai eltérő irányban mozognak. Így a két szárny egyidejűleg ellentétesen mozog, akár nyitjuk, akár összecsukjuk azokat.

Az infra távirányítóval működtetett robot egyéb sajátosságai a videóban láthatók ill. olvashatók.

Ez a robot a speciális közlekedési eszközt, a siklót imitálja.



A felépítésében tulajdonképpen semmi újdonság nincs, hacsak az nem, hogy itt a görgős szán ferde pályán -azaz lejtőn - mozog és a pálya elején gyorsul, a végén pedig lassul, köszönhetően a léptetőmotor sajátos programozási lehetőségének.

A többi kiderül a videóból.

Ez a robot is a klasszikus kategóriába sorolható, a koppenhágai TIVOLI Vidámpark ihlette. A mozgó részegységeit a látvány fokozása érdekében fényhatások egészítik ki. 


Ahogy a videóban is említettem:

       Kérem a Tisztelt Követőimet, hogy ez utóbbi szépséghibát vegyék úgy, mintha az nem is         létezne.



Egy kis időre sutba dobtam az Android vezérlést, és egy "klasszikusnak" mondható robotot építettem. Így lettem bányatulajdonos...


A felépítése és a működése - reményeim szerint - kiderül a videóból. Itt most csak néhány technikai részletet említek.

A készülékbe 3 db encoder motort építettem be. Ebből két 90°-os (azaz áttételes) a konvejort és a kőzetfúrót működteti, egy egyenes tengelyű, áttétel nélküli pedig fogasszíj hajtáson keresztül a csillét. Ez utóbbi nem Makeblock alkatrészekből, hanem a már ismert fém építőjáték egyes elemeiből áll, kivéve a görgőit és az egyenesbe vezető síneket.

Ahogy a videóból is kiderül, a robot, pontosabban a bánya kétféle üzemmódban képes működni: a normálban  és a vészhelyzetiben. A programot úgy építettem fel, hogy amikor az infra távirányító kiadja az indító jelet, véletlenszerűen azonnal döntse el, hogy melyik módban induljon el a robot. 


Ez egy olyan mikrohullámú sütő, amelyben nincs ugyan mikrohullámot előállító magnetron, de a kezelése és működése hasonlít egy igazihoz.



Már régóta piszkálta a csőrömet, hogy vajon tudnék-e egy ilyen készüléket úgy programozni, hogy hasonlítson a "nagy testvérekre". Szerintem sikerült... 

Ahogy a videóban is látható, minden lényeges szerkezeti elem megtalálható ebben a robotban, sőt, még a kezelése is hasonlít egy igazira. Bár számtalan gyártótól szinte végtelen számú variációban kaphatók mikrohullámú sütők, így kénytelen voltam a legalapvetőbb funkciókra támaszkodni.

A robotba a már jól ismert TFT - LCD kijelzőt építettem be, így most nem volt lehetőség Androidos kezelő alkalmazással (Bluetooth kapcsolaton keresztül)  ellátni. Ennek okáról, vagyis a hardver korlátról korábban már írtam. Viszont nem kizárt, hogy némi átalakítás után születni fog egy ilyen verzió is... 


Lassan 2 éve, hogy elkészült az Okos otthon első verziója. Felelevenítettem az alapötletet, és most - a már fejlettebb eszközökből - megépítettem a 2.0-ás változatot.

Reményeim szerint a videó részletesen és közérthetően mutatja be a robot működését. Itt csak néhány kiegészítést fűznék hozzá, első sorban a működtetést szolgáló, azaz a végrehajtó elemeket ismertetem.

Egy 4 tagú LED kijelző LED-jei villódznak piros-sárga fénnyel a nappali kandallójában. A TFT kijelző önmagáért beszél.

A hálóban az ágyat egy normál méretű szervómotor, a billenő asztalt léptetőmotor mozgatja. A háló külső falán a klíma kültéri egységét a már korábbról ismert (pl. Szappanbuborék fújó) mini ventillátor alkotja.

Az indikátort szintén egy normál, míg a kis jelző zászlót mikró szervómotor mozgatja. 

Az alaplapi zümmer a videóban bemutatott két ciklus folyamán három dallamot illetve részletet játszik el: Csendes éj (Silent Night), Star Trek (fanfár megnyitó) és Take on me (A-ha).

Ami viszont továbbra is rejtély számomra, hogy a szervómotorok miért "remegnek be" más egységek működésekor. Jelen esetben - ahogy az a videóban is tapasztalható - a TV és a kandalló egyidejű működésekor bizonyos időpillanatokban a szervómotorok meg-megrezdülnek. Pedig minden egység illetve driver az alaplap más-más portját használja.

Tisztában vagyok vele, hogy ez a robotom nem a legnagyobb durranás. De a "tananyag "átismétlésére, bizonyos programozási technikák továbbfejlesztéséhez jó alapul szolgált. Mondhatnám, hogy egy kis lélegzetvételnyi szusszanás.

Reményeim szerint a videóban mind a felépítése, mind a működése jól nyomonkövethető. Itt most csak pár szóban kiegészítem az ottaniakat.

A forgó tárcsa elvileg 6 db hasábot tartalmazhatna, a kerülete mentén egyenletes osztásban. Ám egy helyet üresen hagytam, mondván, ez tartozzon az alaphelyzethez.  Vagyis a tárcsa forgása ettől a pozíciótól indul és csak a ciklus végén, amikor már mind az 5 hasáb random sorra került, tér ide vissza és áll le. 

A másik kiegészítés inkább a nálam jól bevált moduláris programozási technikával kapcsolatos. Kézenfekvő lenne, hogy egy teljes ciklus érintőszenzorral vagy hangvezérléssel indulna, ám szándékosan nem ezt a megoldást választottam. Azért használtam infravörös távirányítót, mert azzal könnyen megvalósítható, hogy egyes szubrutinok és/vagy programrészek külön-külön is kipróbálhatók. Ez a "technológia" az összetettebb programok írása közben remekül bevált.  (Hasonló módszer a Bluetooth soros terminál használata, ám jelen esetben a TFT-LCD kijelző lefoglalja az Auriga alaplap egyetlen soros portját, így ahhoz a Bluetooth modul már nem csatlakoztatható. )

Nem egészen olyan, mint egy igazi. Abban ugyanis a fényforrás forog és a tenger felől nézve  ablako(ko)n vagy egy nyitott részen keresztül villódzó fény látszik. 

A robot változatnál a fényforrás forgatását a kábel csatlakozása miatt nem tudom megvalósítani, ezért az jelen esetben fix, viszont váltakozó magasságú, forgó hasábok fogják közre, így megvalósítva a váltakozó fényhatást.

Sőt, az elrendezés kétféle üzemmódot is lehetővé tesz: 

A videóban ezt a kétféle működést részletesebben is kifejtem és szemléltetem. 

Közel azonos hardveren alapszik ez a két - más-más funkciót teljesítő - robot. Mivel a videókban igyekeztem a működési elvüket részletesebben kifejteni és illusztrálni, így itt csak a felépítésük hasonlóságait és eltéréseit taglalom néhány szóban.

Mindkettő egy olyan "óraszerkezeten" alapszik, melyet két, mechanikus, de egymutatós óra imitáció és két számkijelző alkot. A mechanikus órákat léptetőmotorok mozgatják. A Sakkóra ezen kívül még két mikró szervomotort is tartalmaz, melyek a parti végét jelző zászlókat működtetik. 

A TFT-LCD kijelző a Világórában az adatbevitelt is támogatja, míg a Sakkórában csak különböző tájékoztató feliratok jelennek meg rajta.

A Világórában egy potméter és egy érintő szenzor segítségével választhatunk illetve vihetünk be adatokat, a Sakkórában ezt a szerepet - de főleg a működtetését - két érintő szenzor látja el.

A Világóra az időzónákkal játszik, azaz hat külföldi nagyváros 

Budapesthez viszonyított időeltolódását szemlélteti.

A Sakkóra egy klasszikus, mechanikus és egy digitális sakkóra imitált ötvözete. Működése azonban valósághű.

Bár abszolút nem vagyok militáns alkat, de egy hirtelen ötlettől vezérelve -amely ugyancsak a TFT kijelző sajátosságán alapul - elkészítettem a magam kis Lőterét.

Van tehát egy lőtér, van egy lövész és egy céltábla, szakszerűbben lőlap. A lövész 5 lövést ad le, és a "golyó ütötte lyukak", vagyis a találatok láthatóvá válnak a lőlap grafikáját tartalmazó kijelzőn. 

A TFT kijelző - mely egy szervomotorhoz van erősítve - a kiinduló, ferde helyzetében a szokásos logót és a robot elnevezését mutatja, azután hátradől, ekkor "kerül rá" a lőlap, majd a tábla függőleges helyzetbe áll. A lövész -  lényegében két mikro szervomotor alkotta kétcsuklós mechanizmus, mely egy harmadik, normál méretű szervomotorra épült - alaphelyzetében megtölti a fegyverét, kibiztosítja, majd a céltábla felé fordulva felveszi a lövőhelyzetét. Egy hosszú csavar jelképezi a fegyvert, melyet így bármilyen típusúnak képzelhetünk.

A lövész 5 db lövést ad le, a fegyver az egyes lövések során visszarúg, ezt egy kismértékű billenés jelképezi. A lövések időtartama alatt az alaplapi LED gyűrű zölden világít. Az egyes találatok a lőlapon láthatóak, de értékük egy számkijelzőn is megjelenik. Ha a lövész végzett, a zöld fény kialszik, és a számkijelző a találatok végösszegét mutatja. Ezt követően minden visszaáll az alaphelyzetébe.  A ciklust egyébként infra távirányítóval lehet elindítani, mely arra is alkalmas, hogy a videó felvételhez egyes - direkt erre a célra programozott - részműveleteket  is elindítson.

A lölapon megjelenő találatokat - azaz pöttyöket - a program random generálja. Először kiválaszt egy találati értéket, vagyis azt, hogy a pötty  az 1-től 10-ig terjedő tartományban melyik sávba (körgyűrűbe) essen. (Az egyértelműség miatt a határeseteket kizártam.) Mivel a lőlapot virtuálisan 12 * 30° - os szögtartományra osztottam, másodjára a szögértéket (tehát a 30° valamely többszörösét) választja ki. A két random paraméterből a program kiszámítja a találat középpontjának koordinátáit, mely köré kirajzolja a pöttyöt: ha az  fehér sávba esik, akkor fekete színnel, fekete sávba pedig fehér színnel. 

170 éve, ponosabban 1851. május 1-jén nyitotta meg Viktória királynő az első világkiállítást, melyet Londonban, a Hyde Parkban az erre a célra épült Kristály palotában rendeztek meg. 

A kiállítás  - mely az akkori technikai vívmányoknak és művészeti alkotásoknak adott helyt - ötletgazdája a férje,  Albert herceg  volt. 

Nos, a 170-ik robotom ennek a 170 éve történt eseménynek állít emléket.

 Az én mini kiállításomat lényegében négy fő egység alkotja:

A videó a TFT kijelzőről készült közeli felvétellel indul, majd a készülék felépítésének szemléltetése következik. Itt egy közeli felvételen a gőzgép és az eszterga működése is látható.

Ezt követi egy hangvezérlésre induló ciklus bemutatása. A folyamat:

Nem az első alkalom, hogy a Morze ABC-re alapozva építek robotot. (Lásd pl. ezen a linken!)

A Morze kód gyakorló egyrészt a kibővült készlet, másrészt az előrehaladt  programozási tapasztalataim okán született.

Nevéhez hűen, a készülék a Morze kódok gyakorlására alkalmas, háromféle képpen:


A készülék lelke a billentyű, melynek lenyomására  - a biztos működés és a kellő rugózás érdekében - két mikrokapcsoló bekapcsol, így aktivizálva az alaplap zümmerét. A megnyomás időtartamától függ, hogy rövid (ti) vagy hosszú (tá) jelet kapunk. A billentyű két oldalán egy-egy érintő szenzor található. A bal oldalival az 1., míg a jobb oldalival a 2.  folyamat indítható. A szóbevitel, tehát a 3. folyamat hangvezérlésre indul.

A TFT kijelző az éppen futó folyamat angol elnevezését és néhány paramétert jelenít meg. Tekintettel arra, hogy a programnyelv és a TFT kijelző  nem ismeri a hosszú ékezetes  karaktereket, a feliratok, szavak, stb. angol nyelvűek.

A bal oldali LED mátrixon minden esetben az éppen aktuális betű, a jobb oldalin az 1. és 2. üzemmódban a  pepötyögött kód helyes ("=") vagy helytelen ("<>") mivolta, míg a 3.-ban az aktuális  sorszám látható. 

A szóbevitelhez kiegészítés képpen még annyit: ha a lehetséges 7 db kódnál kevesebbet billentyűzünk be, akkor természetesen egy 7 betűsnél rövidebb szavunk van. A videóban a DOG, tehát egy 3 betűs szó bevitele látható. A szó a folyamat végén a TFT kijelző alsó sorában látható.

A programot úgy paramétereztem, hogy az első üzemmódban a szoros ABC első 5 betűjét, a második esetben az ABC utolsó 5 betűjét válassza ki. Természetesen lehetséges lenne a teljes ABC gyakorlása, akár random módon kiválasztott betűkkel is.

A rövid és hosszú jelek időtartamának aránya szabványos: 1/3, betűn belüli jelközök pedig 1 egység hosszúak. A programban egy egységnyi jelhossz 250 ms, tehát a rövid jelek és a jelközök 250 ms időtartamúak, a hosszú jelek pedig 750 ms-nyiak.

A videóban az 1. üzemmódról egy távolabbi felvétel látható a harmadik betű beviteléig, a 2. üzemmódról már egy közelebbi felvétel készült mind az öt betű beviteléről. Ahogy már említettem, egy 3 betűs szó (DOG) bevitelét láthatjuk a 3. üzemmódról készült, ugyancsak közeli felvételen.

    

Régóta azon törtem a fejem, hogy a meglévő hardver készletből hogyan tudnék egy klasszikus Sudokut megoldó robotot építeni. Rájöttem, hogy sehogy. Viszont nemrég véletlenül felfedeztem a neten egy lebutított Sudokut játszó készüléket. Bár annak más típusú a kijelzője és az adatbeviteli módja, de kipattintotta a fejemből a szikrát. Nos, így született meg az itt látható kütyü.

Egy 4 x 4-es, fehér vonalak alkotta négyzetrácsba úgy kell beírni az 1-től 4-ig terjedő számokat, hogy egy-egy sorban és oszlopban ugyan az a szám csak egyszer szerepeljen. Így minden sor és oszlop végösszege 10. 


Nehezítésképpen induláskor két random számot (fix számokat) generál a program, melyeket a négyzetrácsba az alapfeltételnek megfelelően helyez el.  A fix számok pirosak és nem írhatók át, a többi zöld és bármikor átírható. 

A hardver: TFT-LCD kijelző, infra távirányító az adatbevitelhez (tartható kézben, de egy tartó rekeszbe is becsúsztatható), egy számkijelző a lépésszám kijelzéséhez és az Auriga alaplap.

A játék menete:

A videóban - annak hosszát csökkentendő - távoli felvételen egy sor kitöltése látható 2-szeres gyorsításban, majd közeli felvételen normál sebességgel egy játszma, de két sort átugorva, végül egy teljes ciklus kétszeres sebességgel. Ezeket a rámontírozott feliratok is  jelzik.

Ez a robot, miután az Óév utolsó percét lefutatta (az utolsó 5 másodpercet hangjelzések kíséretében), a "naptárt" átállítja  az Újév első napjára. 

Ezt követően pedig 10 másodpercig az addig eltakart TFT kijelzőre  kiírja  a HAPPY NEW YEAR! feliratot, szavanként random módon változó színekkel

Azt a bizonyos utolsó percet egy "kifordított" analóg óra - mely egy strigulákkal skálázott forgó számlapból és egy alsó, külső mutatóból áll - teszi meg. A számlapot egy léptetőmotor elvileg másodpercenként, a gyorsabb lefutás érdekében azonban 1/2 másodpercenként lépteti. Az utolsó, tehát az éjfél előtti öt lépést az alaplap zümmere pittyegéssel kíséri. 

A naptár két számkijelzőből áll: a felső az évszámot, az alsó pedig a hónap/napot mutatja.

A TFT kijelzőt eltakaró, majd azt felfedő fedelet egy szervomotor nyitja/zárja. 

Ahogy a videóban is látható, a fentebb ismertetett módon először lepereg az év utolsó perce, majd a naptár átugrik a 2020 1231 napról 2021 0101 napra, aztán feltárul a csapóajtó, és a kijelzőn a bal oldalon ismertetett módon kiíratásra kerül a Boldog Új Évet! felirat angolul. Megjegyzem, hogy nemcsak a szavak, hanem a keret színei is random módon váltakoznak. Mindeközben a váz aljához erősített LED-csík is váltakozó színnel villog. (A ciklus indítása egyébként infra távirányítóval történik.) A folyamat végén minden visszaáll az alaphelyzetébe.

Két megjegyzés:

Elvileg lehetséges lenne a  TFT kijelzőn a karaktek színét egyenként váltogatni, de az sokkal több programsort igényelne. Ugyanis teljes szavaknál (stringeknél) elég az első karakter koordinátáját megadni, viszont egyedi karakterek vezérlése esetében külön-külön szükséges azokat megadni.

A másik a dátum formátuma. Kézenfekvő lenne 12.31 és 01.01 alakban kiíratni az alsó számkijelzőre. Igen ám, de lebegőpontos számként megjelenítve a 01.01 esetében az első 0-át nem írja ki. Így egy trükkel - karakterenkénti kijelzés - 0101 formában megjeleníthető, ilyenkor azonban a tizedes pontot el kell felejteni.

A legújabb robotom onnan kapta a nevét, hogy két, korábbról már ismert, két-két tárcsán átvetett gumihevedert tartalmaz, melyek 4, egymástól azonos távolságban lévő függöleges rúddal vannak összekötve. Ez teszi lehetővé, hogy ezt a kombót csupán egy léptetőmotor hajtsa meg. 

A rudakhoz  szögletek vannak erősítve, melyek vízszintes felületei összesen négy fekete-fehér színkombinációt tartalmaznak, melyeket a készülék jobb és bal oldalán elhelyezett szenzorok dekódolnak.

Az infra távirányítóval vezérelhető készülék működésének lényege, hogy a léptetőmotor által hajtott dupla szíjak olyan helyzetben állnak meg, amelyet a TFT kijelzőn megjelenő menüből lehet kiválasztani. A forgás tehát akkor áll le, amikor azok a színek (vagy kombinációik) kerülnek a két érzékelő alá, amelyeket a kiválasztott menüsor tartalmaz. A menüben az első oszlop a sorszámokat, a második a megcélzott színek kódjait, a harmadik pedig a színek angol rövídítéseit tartalmazza.  (Pl. a 2. sorban a 2 - 1 színkódokat és a BW-BW színkombinációkat láthatjuk. A kötőjel előtti szám és a BW a bal oldali, a kötőjel utániak pedig a jobb oldali szenzorhoz köthetők.)  

Ha a távirányító megfelelő gombját (0-tól 3-ig) megnyomjuk, akkor a kiválasztott menüsor előtt egy piros jelölőnégyzet tűnik fel. Ha a kiválasztott helyzet bekövetkezett, akkor a kijelzőn egy sematikus ábra jelenik meg, melyen a megfelelő színek a megfelelő helyen láthatók, sőt, a két szélső alatt a szenzorok által kiolvasott kódok is megjelennek. Az alaplapi LED-ek villogása is jelzi, hogy a forgás a kívánt helyzetben állt le. Mivel a forgórésznek nincs alaphelyzete, ezért ha a menüből olyan sort választunk, amely éppen az akkori helyzetet tükrözi, akkor nincs forgás, csupán az ábra jelenik meg és a villogás. (Ilyen helyzet látható a videó elején, amikor a 0. sort választjuk.) Az ábra és a villogás néhány másodperc múlva eltűnik és a kijelzőn ismét megjelenik a menü, így újabb menetet indíthatunk. Megjegyzem, hogy a már jól ismert logo csak az első indítás előtt jelenik meg.

Mivel a kijelző tartalma távolról rosszul látható, ezért a videót egy közeli felvétellel indítom, azt remélve, hogy az utána következő rész könnyebben érthető.


Tavaly nyáron készítettem az első Szókirakót, mellyel felcímkézett gyufásdobozokból lehetett kirakni az ARDUINO szót. Ez egy jó nagy,  robusztus szerkezet volt.

Most, hogy bővítettem a technikai hátteret, egy hirtelen ötlettől vezérelve olyan készüléket építettem, mely csupán elektronikai alkatrészekből áll, többek között a rövid ideig pihentetett TFT-LCD kijelzőből.

Ezzel a kis játékkal 5 betűs magyar(!)  állatneveket lehet kirakni, vagyis az összekevert betűket a helyes sorrendbe rendezni.

Az alaplapon kívül a TFT-LCD kijelző, egy érintő szenzor és a potméter alkotja a készüléket.

A program egy tizes listából véletlenszerűen kiválaszt egy állatnevet, majd annak szintén véletlenszerűen összekevert betűit megjeleníti a kijelzőn. A betűsor alatt egy kurzor is megjelenik, melyet a potméter állítgatásával lehet jobbra-balra mozgatni. A betűk sorba rendezésének folyamata: ha pl. a harmadik betűt az első helyre kell tenni, akkor a kurzorral ráállunk a 3. pozícióra, megérintjük az érintő szenzort, majd ráállunk az 1. pozícióra, és ismét megérintjük a szenzort. Ekkor a program már tudja, hogy melyik két betűt kell felcserélnie. (Természetesen a kijelölés fordított sorrendben is történhet.) Ezt követően az öt betű már a módosított sorrendben jelenik meg a kijelzőn. (Ha véletlenül egymás után ugyanazt a pozíciót jelöljük ki, akkor az alaplap fény- és hangjelzéssel figyelmeztet.) 

A program addig engedi a betűcseréket, amíg  mindegyik a helyére nem került. Ekkor a korábbiaktól eltérő színekben a kijelzőn hang- és fényjelzés kíséretében megjelenik a megfejtés, azaz az állatnév.

Egy-egy játékciklus elején megjelenik a már jól ismert logo, majd hangvezérlésre a kijelzőn az összekevert állatnév. Innentől kezdve lehet a betűket a fent leírt módon cserélgetni.

A videóban először két szó kirakását láthatjuk "nagytotálban", majd egy közeli felvételen egy harmadikét.

Még csak annyit: ennek a kis kütyünek a programozása során esett le a tantusz, azaz értettem meg igazán a karakter tömbök és a karakterláncok (stringek) közötti különbséget, illetve a string függvények lényegét.

A "Homokóra újratöltve" elkészülte után elhatároztam, hogy a TFT kijelzőt egy ideig talonba teszem. Ámde menet közben jött egy ötlet, úgyhogy a talon elfelejtve és megszületett az Ultrahang radar.

Ez a készülék egy pásztázó ultrahangos távérzékelő és a TFT kijelző összeházasítása révén egy valódi radar berendezés működését szimulálja.

A felépítése nagyon egyszerű: a távérzékelőt egy léptető motor tengelyére erősítettem, mellette található a kijelző és a motor jobb oldalán egy érintő szenzor, mellyel a pásztázás indítható, miután a kezdő képernyőn megjelenik az ULTRASONIC RADAR felirat.

A motor először a középhelyzetéből jobbra elfordul 45 fokkal, majd onnan balra, 2,25 fokos lépésenként összesen 90 fokot tesz meg. Eközben a  távmérő méri a látóterébe elhelyezett tárgy távolságát. Ez a folyamat ellenkező forgásirányban is lejátszódik.

A kijelzőn - a lépésekkel szinkronban - sugárirányú vonalak rajzolódnak ki. Ha az éppen aktuális szöghelyzetben a tárgy, vagy annak egy része 22 cm-nél távolabb van, akkor a hozzá tartozó vonal színe fehér, ha viszont van ennél közelebb eső része, akkor a vonal  színe az azzal arányos ponttól kezdve prosra vált. Ez tualjdonképpen azt jelenti, hogy a tárgy piros árnyékát látjuk.

Maga a pásztázás egy bal, majd egy jobb irányú szakaszos elfordulásból áll. Ezt követően a motor visszaáll az alaphelyzetébe, ismét megjelenik a kezdő képernyő, és az érintő szenzorral a folyamat újra indítható.

A videóban mindezekre láthatunk példákat  A végére - ahogy az lenni szokott -  a kijelzőről egy közeli felvételt is bevágtam.

2020 márciusában már készítettem egy numerikus kijelzőkkel működő homokóra imitációt, amely emlékeztetőül megtekinthető  itt .

Most, hogy már van egy remek programozható TFT-LCD kijelzőm, ennek felhasználásával  újra megépítettem, vagy ami ide jobban illik, újratöltöttem.


A kézzel átfordítható vázszerkezet hátoldalán az Auriga alaplap és a teleptartó található. Az előlapjához - amely egy átlátszó műanyag szerelőlap - erősítettem belülről a kijelzőt. Ezzel előállt egy igazi homokórára sokkal jobban hasonlító szerkezet, hiszen a kijelző animált grafikája az alakos üvegcsőben lecsurgó homokot jelképezi. Ha az alsó rész már megtelt - ez jelen esetben 21 mp-ig tart -, a dobozt a feje tetejére állítva újra indul a folyamat. Sőt, ha a készülék vízszintesen áll, a homok is vízszintesen tölti ki mindkét tartályrész bizonyos hányadát. 

A helyzetérzékelést az Auriga alaplapra integrált gyro szenzor biztosítja. A villogó kék fény ugyancsak az alaplap egyik LED-jétől származik. (Ez az alaplapi bluetooth modul üzemállapotát jelzi, ha villog, akkor a modul nem csatlakozik soros porthoz. Csak akkor vált folyamatos kék fényre, ha létrejön a bluetooth kapcsolat, mely viszont az eredeti mBot összeállítások - pl. a Ranger - esetében lehetséges. A zavaró villogást vélhetően ki lehetne iktatni, de ennek a módját még nem találtam meg.)

A TFT kijelző programozása sok fejtörést nem jelent ugyan, viszont a kirajzoltatáshoz szükséges koordináták meghatározása  - ahogy mondani szokás - igazi kulimunka...

Hát kérem tisztelettel, ez immáron már a 160-ik robotom. Hűen a hagyományokhoz, most is egy olyan szerkezetet szerettem volna kitalálni, mely valamilyen módon kötődik a nevezetes számhoz. 

Ezen elv mentén született meg a Szerencsekerék.

A készülék lelke egy encoder motor tengelyére erősített forgó tárcsa, mely a kerülete mentén 12 db háromjegyű számot - köztük a nevezetes 160-ast is - tartalmazza. A cél az, hogy a 30 fokonként lépkedő tárcsa úgy álljon meg, hogy a  160-as szám a 4 LED-es kijelző két, egymás alatti, zölden világító LED-jei vel egy vonalba essen. Hasonlóan egy valódi szerencsekerékhez, ez a megállítás sincs a vakvéletlenre bízva, azt némiképp a játékos befolyásolhatja. Itt ezt úgy oldottam meg, hogy a háttérben, láthatatlan módon a program egyesével léptet egy számlálót 0-tól 12-ig. Ez a folyamat addig tart, amíg az érintő szenzort meg nem érintjük. Ha ez 12-ig nem történik meg, a számlálás újra indul. A szenzor megérintése után a tárcsa annyiszor 30 foknyi szögelfordulást végez, amennyi a számláló befagyasztott értéke. A számláló 12 db lehetséges értékéhez a háromjegyű számok hozzá vannak rendelve, a 0-hoz a 110 (ez a tárcsa kiinduló helyzete), a 2-eshez a 160. Ha tehát a szenzort viszonylag "korán" érintjük meg, nagyobb az esélye a híres-nevezetes szám eltalálásának.

A készülék többi részét csupán a látványosság fokozása érdekében építettem be. Nevezetesen a bal oldali  "Nézőt", mely ki-be tud fordulni, bólogatni és a fejét csóválni, a TFT kijelzőt, mely legyező mozgást is végez, és a kezdő képernyőn kívül angol nyelvű feliratokat és grafikákat is megjelenít, és nem utolsó sorban az alaplapi zümmer által játszott dallamokat. Ezen kiegészítő egységeket 4 db (2 normál és 2 mikró méretű) szervómotor mozgatja.

Remélhetőleg a videóban látottakhoz nem szükséges további magyarázat, azok önmagukért beszélnek.  (A végén egy csokorba fűztem a TFT kijelzőn megjelenő feliratokat, ábrákat.)

Még mindig a TFT kijelző...

Ez a szerkezet háromféle órát jelenít meg, illetve imitál: egy digitálisat, egy "analóg" ingaórát és a BIG BEN-t. (Ez utóbbi nem a Westminster-palota óraszerkezetének, hanem annak harangjának a beceneve.)

Itt jegyzem meg: ismét bebizonyosodott, hogy a LED-es kijelzők nem "fotogének", a színhűség - és különösen a TFT- LCD esetében - a raszteresség  gondot okoz a videó készítésekor, főként az én nem túl fejlett kamerámmal. 

A talapzathoz rögzítettem a TFT kijelzőt, alatta egy szervómotor által hajtott, ingamozgást végző mechanizmust, egy mikró szervomotorhoz erősített, gombban végződő előre lendülő kart és két érintőszenzort. És persze az Auriga alaplapot.

Ha a bal oldali érintőszenzort megérintjük, akkor a kijelzőn kirajzolódik a digitális óra nemzeti színű (!) számlapja. Az óra indulásakor a kar előre lendül, 1 percnek 1/3 másodperc felel meg. Az óra  2 óráig mutatja az időt, amely ténylegesen 2 * 60 * 0,333 = 40 másodpercig tart.

Ha a jobb oldali szenzort érintjük meg, akkor először az ingaóra kezd működni, majd ezt követi a BIG BEN. Itt is igaz, hogy a számlapok kirajzolása után, az órák indulásakor a kar előre lendül.

Az ingaóra 6 óráig működik (egy órának itt 3 másodperc felel meg), minden egész órakor az alaplapi zümmer üt egyet. (A felvételen az ingát mozgató szervómotor hangja is hallatszik.)

A BIG BEN is 3 másodperc alatt tesz meg egy órát, és stílszerűen - a teaidőt jelezve - öt órakor felcsendül a jól ismert dallam. 

Az ingaóra és a BIG BEN esetében csak a kismutató mozog, a nagymutató 12-őn áll. Ugyanis egy mutatót úgy lehet animálni, hogy a pillanatnyi helyzetében egy középpontból induló fekete vonalat kell rajzolni, míg a megelőző poziciójában a fekete vonalat "ki kell radírozni", vagyis a számlap alapszínével egyező színű vonalat húzni. Ez egy mutató esetében még viszonylag könnyen megoldható, de két mutató, azaz vonal animációja már káoszt eredményezne a programozáskor.

A bal oldalon említett videós problémák ellenére megpróbáltam szemléletesen bemutatni az Órák működését.

Tovább kísérleteztem a TFT kijelzővel. 

Hosszas előtanulmányok és rengeteg próbálkozás után sikerült összehozni ezt a tisztán elektronikai alkatrészekből álló elrendezést. A fő attrakció a kijelzőn megjelenő grafika.

Az alapvető célom az volt, hogy két ultrahangos távolság mérő kimenő jeleit és egy potméter aktuális állását valós időben egy-egy oszlopdiagram jelenítse meg. 

A két szélső diagram, melyek magassága a távmérők jelével arányos, praktikus okokból a 19 cm feletti távolságokat már maximumként kezelik. A középső diagram pillanatnyi magassága a potméter állásával - amely egyébként a két, 4 LED-es kijelző fényerejére is kihat - lineárisan arányos, itt nincs korlát. Azt is sikerült megoldanom, hogy mindhárom oszlopdiagram felett jelenjenek meg számok formájában  a ténylegesen mért értékek. A látvány fokozása érdekében a színek eltérőek: balról jobbra haladva, rendre: sárga, fehér és vörös.

Ahogy a videóban is látható, az első kb. 10 másodpercben két nyitó képernyő látható, majd két rövid hangjelzés között,  20 másodpercig a mérési szakasz következik. Aztán újra indul a folyamat.

A kijelzőt színtorzulás nélkül szinte lehetetlen levideózni, ezen még a közeli záró képsorok sem sokat javítanak. A viszonylag alacsony képváltási frekvencia a program futásának, pontosabban a mérési  adatok érzékelésének és azok feldolgozásának a következménye, így az hardveres adottság. 

Hát ez a konstrukció kissé megizzasztott. 

Egyrészt hiányos zenei műveltségem miatt nem volt könnyű a Boci, boci tarkát leprogramozni, másrészt harmadszori próbálkozásra sikerült olyan hardvert összerakni, amely a dallammal szinkronban képes működni. Persze ez a program írásakor is sok kísérletezgetést követelt meg az időtartamokat és a késleltetéseket illetően.


Amúgy a szerkezet nem bonyolult. A bal oldalon található a Bábu, mely a Boci, boci tarkára ropja a táncot, a jobb oldalon pedig a Néző, aki türelmetlenül várja, majd figyeli a Bábu produkcióját. A figurákat encoder motorok forgatják és szervó motorok döntögetik jobbra-balra.

Induláskor a TFT kijelzőn háromszor váltogatva megjelenik a Makeblock logo, angolul a szerkezet neve és annak "alkotója". 

A Nézőnek ultrahangos távmérő "szemei" vannak, ehhez közelítve lehet a táncot  indítani a következő képpen: a Néző ide-oda "ugrálva" türelmetlenül várja a produkciót, amíg a szeme elé tartott kéz elég közel nem kerül hozzá. Ezt követően a Néző a Bábu felé fordul és figyeli annak táncát. A Boci, boci tarka dallamát az alaplap zümmere játsza le, és a Bábu annak ütemére, tehát azzal szinkronban mozog. Eközben a kijelzőn egy smiley látható.

A Boci, boci tarka, azaz a Bábu tánca után minden visszaáll alaphelyzetbe. 

A videó a TFT kijelzőn megjelenő logo illetve feliratok közelről felvett látványával indul, mert a ciklus során a távoli felvételen ezek nem igazán olvashatóak. Ezt néhány, magáról a készülékről készült felvétel követi, majd a fentebb említett módon lefut egy ciklus.

Két újabb alkatrészt próbáltam ki, e célból építettem meg ezt a - kissé nagyképűen - Meteorológiai állomásnak elkeresztelt berendezést. 

Az új elemek: egy hőmérséklet- és légnedvességmérő áramköri modul és egy mini ventillátor.

Az új alkatrészek a készülék jobb oldalán találhatók. A ventillátor - ha be van kapcsolva - a hőmérséklet- és légnedvesség mérőre fújja a levegőt. Felhasználtam még az Auriga alaplap egyik fényerősség mérőjét és hangerő érzékelőjét.

Egy mérési ciklus 30 másodpercig tart, az adatok másodpercenként frissülnek.  Egy-egy ciklus váltakozva fut le álló és forgó ventillátorral. A TFT kijelzőre vonatkozó angol nyelvű leírások meglehetősen szűkszavúak, így jobb híján magam kísérleteztem ki, hogy hogyan lehet fix szövegeken kívül változókat kiíratni, ugyanis a kijelző a frissülő mérési adatokat az adott paraméter angol elnevezése mellett jeleníti meg:  

Bekapcsolás előtt néhány lehellettel bepárásítottam az érzékelőt, a videóban látható, hogy ez az érték csökken, különösen forgó ventillátor mellett. Az sem meglepő, hogy a hangerő a ventillátor forgása alatt magasabb értéket mutat. 

A jobb olvashatóság érdekében a videó végén csak a TFT kijelző látható, gyenge megvilágítás mellett.

Ismét bővítettem a készletet. Ennek folyományaként néhány elektronikus modulból már két példány is van.

A mostani demó készülék immáron két LED mátrixból, két számkijelzőből, egy potencióméterből (népszerűbb nevén potméterből) és egy TFT-LCD kijelzőből, no meg az Auriga alaplapból áll. A fő attrakció a TFT-LCD kijelző, melyről bővebb ismertetés a jobb oldalon olvasható.


A Makeblock TFT-LCD kijelzőjének (thin-film-transistor liquid-crystal display) felbontása 320x240, azaz vízszintesen 320, függőlegesen 240, tehát összesen 76.800, egyenként programozható  képpontból áll. Megjeleníthet tetszőleges szöveget, grafikai elemeket és képet a lehetséges 65.536 db színből ill. árnyalatból. Gyárilag beállított kezdőképernyője van, ez a videóban is látható. Ezt követően a program által meghatározott elemeket jelenít meg.

A készülék bal oldali számkijelzője és az Aurigán található LED gyűrű 10 másodpercig a potméter állítgatására reagál: a kijelző a tényleges kimeneti értékét mutatja, a gyűrű LED-jei pedig ezzel arányos darabszámban vörös fénnyel világítanak. Mindeközben a bal oldali LED mátrixon a potméter áramköri jele látható, a TFT kijelzőn pedig különféle szövegek.

A következő 10 másodpercben a jobb oldal lesz aktív, a LED mátrixon egy "s" (a szekundum rövidítése) látható, miközben a számkijelző elszámol 10-ig. A TFT kijelzőn pedig ezalatt egy szimmetrikus grafikai ábra jelenik meg. 

Ezután ismét a bal oldal válik aktívvá, és így tovább...