XOD
- pavel1tu
- Příspěvky: 2054
- Registrován: 26 říj 2017, 08:28
- Reputation: 0
- Bydliště: Trutnov
- Kontaktovat uživatele:
Re: XOD
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 ...
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"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: XOD
Já si budu muset prohlédnout, co tu vlastně všechno máte/máme
. Vlítnul jsem sem jako pes do Masny
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ý ![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
![Smile :)](./images/smilies/icon_e_smile.gif)
![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
Re: XOD
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
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 a až LED g)
Swat
a pak ji začal převádět do XODu - tohle je převedený segment "a"
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
... 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
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) :
![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
Pocdhopitelně, uživatel pak vidí pouze jediný složený node (to je komplet 7 segmentů + DP), kde si může nastavit porty:
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 ![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
Re: XOD
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
). 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:
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:
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:
A co dál? Dodělám to pro kompletní 7 (8) segmentový displej, protože mne to zatím nepřestalo bavit ![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
Swat
![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
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);
}
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);
}
![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
Swat
Re: XOD
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".
Swat
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 217 x
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 18 hostů