TFT kijelzős robotok Android vezérléssel
Fejlettebb hardver, programozási technika és kétféle működésmód.
Egyszerűbben fogalmazva: újratöltve...
Ez a legújabb plotter fejlettebb, mint a korábbiak. Tud ferde vonalakat és kört is rajzolni.
A videóból minden kiderül, legalábbis remélem.
Itt csak egy rövid kiegészítést fűzök hozzá:
az Android applikáció az adatokat három-három számjegyből álló csoportokban adja át a robotnak. Ezért, ha valamelyik paraméter ennél kevesebb számjegyből áll, akkor a korrekt működés érdekében eléjük egy ún. vezető nullát kell írni a beviteli mezőbe.
Megtetszet a Bináris óra algoritmusa, úgyhogy némi átalakítással csináltam belőle decimálisból bináris, oktális éa hexadecimális számrendszerbe konvertáló kütyüt.
Olyan robotot most csináltam először, melyet két módon lehet vezérelni:
vagy a robot négygombos moduljával,
vagy egy Android applikációval.
A videó a már megszokott módon mtatja be az eszközt, példákkal illusztrálva.
Megint visszanyúltam a múltba. Egy közel 3 éves, Kockajáték elnevezésű robotomat (https://sites.google.com/view/robotepites/legfrissebbek) gondoltam újra, és néhány újdonságot is bevetettem (TFT kijelző, vezérlés Android app-al).
Mivel a videóból szándékosan kihagytam a működtető motorok felsorolását, ezt most itt pótolom.
Az egymáshoz képest merőlegesen mozgó görgős szánokat fogasszíjhajtáson keresztül két léptetőmotor hajtja. A kilökő kart pedig egy szervómotor billegteti.
Eltérően a korábbi változattól, ennél a kivitelnél két rekesz van, a bennük lévő kockák színkódjait és azok sorrendjét egy kétdimenziós tömbben tárolja a program. Ez szükséges a TFT kijelzőn a megfelelő szinek megjelenítéséhez és a shifteléshez is.
A videóban olvasható leírás és a két játékmenet példa ezen kiegészítésekkel együtt - reményeim szerint - elegendő a robot működésének megértéséhez.
A Hatoslottón felbuzdulva most egy olyan mozgó alkatrész nélküli eszközt készítettem, mellyel - egy Androidos tablettel kiegészítve - Luxort lehet játszani.
Annak a kedves követőmnek, aki nem játszott még Luxort illetve nem ismeri a szabályait, annak javasolom, hogy ide kattintva olvasson utána, és a megszerzett információk birtokában jobban fogja érteni a készülék működését illetve magát a játékot.
Ezen kívül itt egyéb kiegészíteni valóm nincs, talán csak annyi, hogy vélhetően ez lett az eddigi legkomplexebb Arduino/Android programom. A hangsúly a véletlen számok generálására helyeződött, a tetszőlegesen megadott 20 db tipp szám és a bónusz nullák szelvényen történő elrendezésétől egészen a kisorsolt számokig. Ennek következtében az is a véletlenen múlik, hogy a Képet vagy a Keretet érjük-e el először és hány találat kell a Luxorhoz.
Ezzel az egyszerű felépítésű robottal és az Androidos tablettel hatoslottót lehet játszani. A szabályok megegyeznek az igazival.
A videóban látható és olvasható infókhoz néhány kiegészítés.
A sorsológép szerepét betöltő tárcsát egy léptetőmotor mozgatja néhány, random módon meghatározott fordulatig jobbra, majd balra. A felgyorsítást és a lassítást egy eleddig általam még nem használt utasítás készlet teszi lehetővé.
A véletlenszerűen kisorsolt nyerőszámok emelkedő sorrendbe rendezését a program egy ún. "buborék rendező algoritmussal " végzi, mely lényegében két egymásba ágyazott ciklusból áll.
Mivel a robot csak a nyerőszámokat sorsolja ki, az eredményt, vagyis a találatok számát viszont a tableten futó alkalmazás határozza meg, így ez utóbbi jóval komplexebb, mint a korábbi Android applikációk.
Csak megjegyzem, hogy a hatoslottóban három találat alatt nincs nyeremény, afölött viszont a nyerőosztálytól és a nyereményalaptól függően fizet.
Bevetettem egy programozási trükköt: a TFT kijelző 76 800 db egyedi pixeljeiből 5 x 5- ös, színezhető négyzeteket képezve 3 072 db virtuális pixelt lehet előállítani. Így maximum ennyi koordináta megadásával bármilyen grafikát megjeleníthetünk, természetesen kis felbontással.
A készülék - mely tableten futó Androidos vezérlő programmal működik - remélem elég jól szemlélteti ezt az alapelvet.
Ami a videó magyarázó szövegeiből (részben) kimaradt:
Egy virtuális pixelt egy 5 x 5 fizikai pixelből álló négyzet alkot, melynek középpontjához (vagyis az átlói metszéspontjához) rendelhető a virtuális (X, Y ) koordináta. A program kiszámítja a négyzet bal felső és jobb alsó sarokpontjainak fizikai koordinátáit, és a kijelző egy belső utasítását felhasználva, egy kóddal megadott színnel kitöltve kirajzolja.
Minden vezérlő gomb a megnyomásakor színt vált. A "Pixel" feliratú gomb mindaddíg fekete marad, amíg mind a 3 db virtuális pixel (VP) összes adatát meg nem adtuk. (A "Send color" gomb megnyomása után a beviteli mezők törlődnek, és az adatküldő gombok "visszasárgulnak".)
A "Pixel" gomb megnyomása után egy szám (1-től 3-ig) jelenik meg, ami azt jelzi, hogy hányadik VP-nél tartunk.
Ha egy koordinátát véletlenül a limit felett adunk meg, a beviteli gomb ("Send X" vagy "Send Y" ) azt nem küldi el, hanem a beviteli mezőt kitörli, és csak akkor lesz aktív, amikor az érték már helyes. (Erre példa is látható, amikor Y = 45 helyett 48-at adok meg a harmadik pontnál.)
A "Pixel" gomb bal oldalán mankóként feltüntettem a virtuális koordináták maximális értékét. Ezek azért nem a 64-es ill. a 48 -as számok, mert mindkettő a 0-val indul.
A színusz görbe pontjainak virtuális koordinátáit a program egy megfelelően paraméterezett színusz függvénnyel számítja ki.
Magyarország határvonalát azonban nem lehet egy függvénnyel leírni. Ezért annak pontjait egy megfelelő ábra és egy négyzetrács összeházasítása révén határoztam meg. A vonal 154 db (!) virtuális pixelből áll, melyek koordinátáit egy kétdimenziós tömbben tárolja a program.
Ez a készülék egy korábbi változat, a Zászlórúd (ld. https://sites.google.com/view/robotepites/legfrissebbek) felújítása. A fejlettebb alkatrész készlet és az Androidos vezérlő applikáció révén sokkal egyszerűbb és látványosabb robot született .
Az applikációval 10 európai országból lehet választani. A robot jobb oldalán alul elhelyezett LED mátrixon megjelenik az adott ország nemzetközi betűjele, a TFT kijelzőn pedig a (trikolór) zászlaja. Ezt követően a kijelző magasabb pozícióba kerül, vagyis a zászlót a készülék felvonja a zászlórúdra, majd kis késleltetés után leengedi. Újabb késleltetés után a zászló eltűnik, a TFT kijelzőn megjelenik a cím felirat, a LED mátrixon pedig egy kérdőjel látható, és a jobb oldalon felül lévő 4 LED pirosról zöldre vált. Ekkor lehet a következő országot kiválasztani.
Az applikációban kihasználtam azt a lehetőséget, hogy egy gomb megnyomása után annak alapszíne pirosra váltson. Így követhető, hogy mely ország nem volt még kiválasztva. A gombok feliratai közül a dőlt betűsek olyan országot jelentenek, melynek zászlaja három függőleges csíkból áll.
A fentieket igyekeztem a videóban - 5 ország példáján keresztül - érhetően illusztrálni. (A színtorzulásokért viszont nem tudok felelősséget vállalni...)
Ezzel a mechanikailag egyszerű készülékkel egy csapásra két legyet lehet ütni: random arab számot római számmá, illetve random római számot arab számmá konvertálni.
A hardver mindkét esetben ugyan az, de a programnak és az adatbevitelre szolgáló Androidos alkalmazásnak két változata van. A program által random módon generált szám (akár arab, akár római) nemcsak a TFT kijelzőn, hanem az applikáció felületén is megjelenik. Az általunk átkódolt (római vagy arab) számot az alkalmazás Bluetooth kapcsolaton keresztül átküldi a készüléknek, mely ezt követően összehasonlítja a "saját megoldásával", amely szintén megjelenik a TFT kijelzőn, majd a két eredményt összehasonlítja.
A viedóban mindkét működésmódra 3 - 3 példát mutatok az alapvető funkciók ismertetése mellett.
A videóban a lehetséges számtartományról teszek említést ugyan, de annyi magyarázat még tartozik hozzá, hogy a felső határ azért 3999 illetve MMMCMXCIX, mert a római számokra vonatkozó szabályok maximum ezen értékig tarthatók be.
Ez a rendszer a Geometria továbbfejlesztett változata. Itt már nem előre megadott méretű alakzatokat lehet a TFT kijelzőn megjeleníteni, hanem a dedikált koordinátáik megadása révén a robot ennek megfelelően jelenít meg tetszőleges egyenes szakaszt, négyszöget vagy kört.
A Bluetooth soros port karaktereket vagy karakter láncokat tud továbbítani vagy fogadni. A tabletre készült Android alkalmazás a megadott koorditátákat egy 4 x 3 =12 db karakterből (kör esetén 3 x 3 = 9 db-ból) álló karakterláncba fűzi és azt továbbítja a robotnak. Az Arduino program ezeket "visszafejti" és az így kapott értékeket használja fel az alakzatok kirajzolásához.
Ez a karakterlánc formájában történő Bluetooth-os adat továbbítás és annak visszaalakítása jelentette számomra az újdonságot, mind az Android applikáció, mind az Arduino program elkészítésekor.
Lényegében ez az oka a Geometria 2.0 elkészültének. Mivel a kitöltött alakzatok és a változtatható színek az új programozási módszer elsajátítása szempontjából irrelevánsak, ezért ezen opciókat elhagytam.
Ez az egyszerű szerkezet azt bizonyítja, hogy igenis lehet a TFT kijelzőt és a Bluetooth modult egyidejűleg működtetni.
Egyúttal ez azt jelenti, hogy TFT -s robotokat is lehet Android applikációval vezérelni.
Az itt bemutatott készülék kijelzőjén egyszerű geometriai alakzatok jeleníthetők meg, melyeket az applikáció legördülő listájából választhatunk ki.
Amennyiben kitöltött síkidomot fogunk kijelölni, (pl. tele kört), először a kitöltő színt kell egy ugyancsak legördülő listából kiválasztani. Persze nem szükséges mindig színt váltani, akár az összes alakzatot kitölthetjük egyazon színnel.