Vytvoření čísla kombinací vstupů
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Vytvoření čísla kombinací vstupů
Dobrý den, chtěl bych poprosit o radu - mám za to že je to něco jednocuchého a že mi to jen o kousek uniká, ale po dni hledání a bádání...tedy:
mám 8 vstupů a každé kombinaci těchto vstupů bych rád přidělil jedno číslo. Ideálně to vzít jako dvojkové číslo, nějak takhle:
vstupy: 2 3 4 5 6 7 8 9
hodnoty: 0 0 1 1 0 0 1 1
Výsledné číslo 51
Jak by se toho dalo dosáhnout? Děkuji za odpovědi.
mám 8 vstupů a každé kombinaci těchto vstupů bych rád přidělil jedno číslo. Ideálně to vzít jako dvojkové číslo, nějak takhle:
vstupy: 2 3 4 5 6 7 8 9
hodnoty: 0 0 1 1 0 0 1 1
Výsledné číslo 51
Jak by se toho dalo dosáhnout? Děkuji za odpovědi.
Re: Vytvoření čísla kombinací vstupů
Áno, už jenom vypsáním svého problému na internet se v člověku cosi pohne...jeden nápad mám, tak jestli to nejde jednodušeji
Re: Vytvoření čísla kombinací vstupů
Den hledání a bádání? Vždyť na tohle stačí úplné základy - cyklus, bitový posun... něco na tenhle způsob:
Kód: Vybrat vše
int cislo = 0;
for (int i = 2; i <= 9; i++)
cislo = (cislo << 1) | vstup(i);
Re: Vytvoření čísla kombinací vstupů
Díky
Ono když člověk neví co hledat...nejsem tak zběhlej a z 90% samouk a to se lecos v základech přeskočí, třeba bitový posun .
Ono když člověk neví co hledat...nejsem tak zběhlej a z 90% samouk a to se lecos v základech přeskočí, třeba bitový posun .
Re: Vytvoření čísla kombinací vstupů
ono, pokud na to nechceš jít přes "vyšší logiku", tak stačí obyčejný IF
Kód: Vybrat vše
byte cislo = 0; //inicializovat na 0 před začátkem testu vstupů
if(digitalRead(9)) cislo += 1;
if(digitalRead(8)) cislo += 2;
if(digitalRead(7)) cislo += 4;
if(digitalRead(6)) cislo += 8;
if(digitalRead(5)) cislo += 16;
if(digitalRead(4)) cislo += 32;
if(digitalRead(3)) cislo += 64;
if(digitalRead(2)) cislo += 128;
//zde má proměnná [i]cislo[/i] přiřazenou hodnotu podle stavu vstupů
Re: Vytvoření čísla kombinací vstupů
A jestli chceš zamachrovat, tak stačí tohle:
Využívá se v tom toho, že je možné přečíst celý blok po sobě jdoucích pinů jako jeden registr.
v registru PINB jsou stavy pinů D7 až D0 (D0 a D1 jsou využité pro sériovou komunikaci) a v registru PIND jsou stavy pinů D13 až D8 (dva nejvyšší bity-piny jsou využity pro krystal).
Pak tyhle dva registry stačí správně oříznout a seskládat do jednoho bajtu a získáš stav pinů D2 až D9.
Kód: Vybrat vše
byte cislo = (PINB & 0b00000011) << 6 | PIND >> 2;
v registru PINB jsou stavy pinů D7 až D0 (D0 a D1 jsou využité pro sériovou komunikaci) a v registru PIND jsou stavy pinů D13 až D8 (dva nejvyšší bity-piny jsou využity pro krystal).
Pak tyhle dva registry stačí správně oříznout a seskládat do jednoho bajtu a získáš stav pinů D2 až D9.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 24 hostů