Stránka 2 z 3

Re: XOD

Napsal: 05 led 2019, 17:18
od pavel1tu
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 ...

Re: XOD

Napsal: 05 led 2019, 19:10
od Swat
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

Re: XOD

Napsal: 07 led 2019, 11:26
od gilhad
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!")

Re: XOD

Napsal: 10 led 2019, 00:21
od Swat
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 6340 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

Re: XOD

Napsal: 10 led 2019, 07:31
od AstroMiK
... 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]);
  }

Re: XOD

Napsal: 15 led 2019, 18:25
od Swat
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 5725 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

Re: XOD

Napsal: 19 led 2019, 22:52
od Swat
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 5621 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

Re: XOD

Napsal: 20 led 2019, 21:35
od Swat
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

Re: XOD

Napsal: 21 led 2019, 22:35
od petan
Teď, když sis to celý napsal, není jednodušší už zůstat u "céčka"? :D

Re: XOD

Napsal: 21 led 2019, 22:50
od Swat
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