XOD

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: XOD

Příspěvek od pavel1tu » 05 led 2019, 17:18

Mne u Arduina doslova SEROU ty knihovny ....
Pokud se člověk snaží vycházet z nějakého projektu, mají tam knihovny upavené a ohnuté ke svému projektu.

Bohužel se mnohokrát stane, že původní knihovna byla dále opravována, laděna, vylepšována ... ale ten klon již ne.

Proto si ke každému projektu schovávám knihovny ...
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Uživatelský avatar
Swat
Příspěvky: 31
Registrován: 31 pro 2018, 01:02
Reputation: 0

Re: XOD

Příspěvek od Swat » 05 led 2019, 19:10

Já si budu muset prohlédnout, co tu vlastně všechno máte/máme :) . Vlítnul jsem sem jako pes do Masny :D a kromě těch mých dvou vláken nic nesleduju, což musím napravit. Mým nejbližším "projektem" je po sestavení plastikového modelu skříňového náklaďáku, dát mu trochu "rozumu", takže by na různé podněty a pokyny přímo nereagoval, ale "vstřebával" je a neposlouchal jen vysílačku. Např., když mu dám signál přeřadit do kopce na vyšší rychlost a motor by to, bez přetížení, nezvládl, tak nepřeřadí. Stavebnici ještě čajníci nedodali a stejně nevím, kam dřív skočit, ale plán je to krásný :D

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: XOD

Příspěvek od gilhad » 07 led 2019, 11:26

Swat píše:
05 led 2019, 16:42
to gilhad: po přečtení Tvého blogu (mimochodem, nemáš po roce v šuplíku pokračování?), jsem dalek toho Ti oponovat :D
Nemám, z toho jednoduchého důvodu, že přisly jiné věci a já na něj od té doby nesáhnul a trčí mi tu jako bolavý palec. Ale doufám, že jednou, určitě, možná, snad ... v tom budu pokračovat a zase to zdokumentuju, jak budu chodit, i kdyby se to nakonec ukázalo být slepou cestou vývoje.

(Jára da Cimmerman byl velkým průkopníkem slepých cest. Nyní třeba již víme, že foukáním tabákového kouře do umyvadla vody zlato nevznikne, ale musel tu být někdo, kdo to jako první zkusil a prohlásil "Tudy ne, přátelé, tudy cesta nevede!")

Uživatelský avatar
Swat
Příspěvky: 31
Registrován: 31 pro 2018, 01:02
Reputation: 0

Re: XOD

Příspěvek od Swat » 10 led 2019, 00:21

Našel jsem řadu videí, pro zajímavost, např. tohle ukazuje krok za krokem tvorbu knihovny pro zobrazení číslic 0 až 9 na 7-segmentovce, rozsvěcením segmentů. Autor si vytvořil tabulku, jak se ten který segment zúčastňuje na zobrazení dané číslice (LED aLED g)
XOD0.jpg
XOD0.jpg (9.68 KiB) Zobrazeno 6342 x
a pak ji začal převádět do XODu - tohle je převedený segment "a"
XOD1.jpg
jistě si domyslíte, že to pokračuje obdobně "směrem doprava", jen s obměněnými konstantami. Za zmínku stojí použití nodu "constant-number" (horní řada nodů) na 2. vstupu nodu "equal". Patřičné číslo se mohlo zadat přímo, pomocí Inspektora, autor ho ale dal "viditelně", kvůli čitelnosti programu. Třetí a další řady nodů obsahují prvek "or" Princip vyhodnocení je jasný i mně, začátečníkovi, ale kdyby to přece jen někoho zajímalo, rád odpovím. Kvalita obrázků není nic moc, ale je to print screen z toho videa.
Swat

AstroMiK
Příspěvky: 592
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: XOD

Příspěvek od AstroMiK » 10 led 2019, 07:31

... a u nás, v "normálním" světě, napíšeme tu funkci pro jeden segment na 2 řádky:

Kód: Vybrat vše

void displej(byte cislo)
  {
    //                         0    ,    1    ,   2   ,    3    ,    4    ,   5    ,   6    ,    7    ,   8    ,   9   
    boolean definice_A[] = {  true  ,  false  ,  true ,   true  ,  false  ,  true  ,  true  ,  false  ,  true  ,  true };    

    digitalWrite(pin_segment_A, definice_A[cislo]);
  }

Uživatelský avatar
Swat
Příspěvky: 31
Registrován: 31 pro 2018, 01:02
Reputation: 0

Re: XOD

Příspěvek od Swat » 15 led 2019, 18:25

to AstroMiK: Tak jsem se trochu vzdělal v mém XOD světě a zjistil jsem, že ta knihovna patrně vznikla v době, kdy ještě nebyly funkce OR AND atd. s více vstupy v jednom nodu, tak jsem knihovnu přepsal podle nynějších možností (tohle je jeden segment) :
1segment.JPG
Pocdhopitelně, uživatel pak vidí pouze jediný složený node (to je komplet 7 segmentů + DP), kde si může nastavit porty:
7segment.JPG
7segment.JPG (12.66 KiB) Zobrazeno 5727 x
Pořád mne ta knihovna neuspokojuje a rád bych se pokusil napsat node "SWITCH" (pokud už neexistuje), který by nahradil ty nody "equal", pak by odpadl i ten OR a dostal bych se tím na Tvou úroveň zápisu. Snad to půjde, budu dál bádat :D

Uživatelský avatar
Swat
Příspěvky: 31
Registrován: 31 pro 2018, 01:02
Reputation: 0

Re: XOD

Příspěvek od Swat » 19 led 2019, 22:52

Vzpomínáte, že jsem si předsevzal vytvořit v XODu nový node "switch"? Už předtím jsem trochu nahlédl do tvorby vlastních nodů (to je moje slabina od mládí - základy čehokoliv mne moc nebaví a vrhnu se na to složitější a později pak lituju :D ). Nody se dají vytvořit z již v XOD existujích nodů, tam jsem nějak neuspěl, tak jsem se vrhnul na tvorbu nodů v C++ a tam to šlo hladce. Na obrázku uvidíte celou strukturu příkazu switch:

Kód: Vybrat vše

struct State {
};

{{ GENERATED_CODE }}

void evaluate(Context ctx) {
    //auto inValue = getValue<input_IN>(ctx);
    int x = getValue<input_X>(ctx);
    switch (x)
    {
    case 0: result = true; break;
    case 1: result = false; break;
    case 2: result = true; break;
    case 3: result = true; break;
    case 4: result = false; break;
    case 5: result = true; break;
    case 6: result = true; break;
    case 7: result = true; break;
    case 8: result = true; break;
    case 9: result = true; break;
    default: result = false;
    }
    //emitValue<output_OUT>(ctx, inValue);
    emitValue<output_OUT>(ctx, result);
}
Funguje to, protože je to "normální" switch, ale je to zase spousta řádků a rozhodně to není tak elegantní, jak to vyřešil AstroMiK. Tak jsem mu to prostě ukradl a zde je výsledek:

Kód: Vybrat vše

struct State {
};

{{ GENERATED_CODE }}

void evaluate(Context ctx) {
    //auto inValue = getValue<input_IN>(ctx);
    int x = getValue<input_X>(ctx);
    int res[] = {1, 0, 1, 1, 0, 1, 1, 1, 1, 1};
    bool result = res[x];
    }
    //emitValue<output_OUT>(ctx, inValue);
    emitValue<output_OUT>(ctx, result);
}
Na dalším obrázku je, jak to vidí uživatel, když už je node v provozu (tedy zatím ten jeden segment) - jako black box se vstupem a výstupem:
node-cpp-segment-a.JPG
node-cpp-segment-a.JPG (13.66 KiB) Zobrazeno 5623 x
A co dál? Dodělám to pro kompletní 7 (8) segmentový displej, protože mne to zatím nepřestalo bavit :D
Swat

Uživatelský avatar
Swat
Příspěvky: 31
Registrován: 31 pro 2018, 01:02
Reputation: 0

Re: XOD

Příspěvek od Swat » 20 led 2019, 21:35

Tady je kompletní patch pro ovládání 7 segmentovky. To "hlavní hnací" je uprostřed. Dovnitř jde číslo, které se má zobrazit, ven 7 výstupů, které budí odpovídající segmenty displeje. Osmý segment, desetinná tečka je buzena zvlášť.Nad tím je ještě 7(8) vstupů na kterých si uživatel nastaví, z kterých pinů Arduina bude segmenty budit. Ty zvláštní šipky, to je tzv. BUS (čte se bas), neboli sběrnice. Vlastně to jen nahrazuje změť křížících se spojovacích linek a dává schematu určitou "štábní kulturu".
7segment-test.JPG
Pokud to někoho trochu zajímá a nainstaloval si XOD, může si s programem pohrát, stačí si stáhnout projekt "7-segment.xodball", ani nemusí mít ten displej (např. LSD056AAG-101), na ověření funkce stačí i jedna ledka.
Swat
Přílohy
7-segment.zip
(2.85 KiB) Staženo 215 x

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Reputation: 0
Kontaktovat uživatele:

Re: XOD

Příspěvek od petan » 21 led 2019, 22:35

Teď, když sis to celý napsal, není jednodušší už zůstat u "céčka"? :D

Uživatelský avatar
Swat
Příspěvky: 31
Registrován: 31 pro 2018, 01:02
Reputation: 0

Re: XOD

Příspěvek od Swat » 21 led 2019, 22:50

to petan: :D zásah! Problém je, že co jsem v c++ uměl, to jsem už zapomněl :D. Kruci, pustil jsem si čištění systémových souborů a teď mne to nepouští ani ke psaní. Pak se ozvu.
Swat

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 9 hostů