27. 9. 2013

WTM2002A LCD řadič...

WTM2002A, CM2002 nebo MC2002 jsou řadiče/moduly pro LCD zobrazovače. Typický modul je zobrazen na obrázku a obsahuje driver HD44780:
Tyto moduly umožnují zobrazit text a slouží jako uživatelské rozhrání. Prakticky všechny tyto moduly mají společný protokol. Jeden z datasheetu co používám pro tyto moduly naleznete zde: Datasheet 2002 LCD driver. K dispozici je i český návod/manuál pro tento display na stránkach Pandatron.cz (Ovládání znakových LCD s řadičem HD44780 – 1. díl).

Jeden hezký projekt s podobným display-em naleznete zde: Display tweets on a character LCD
V tom projektu naleznete všechny zdrojáky a schéma zapojení a tak si můžete vytvořit svůj vlastní projekt.
Na webu Space invaders played on a 16×2 character display dokonce hrají známou hru Space Invaders.

S pozdravem
ViaExplore - Tomáš Kamenický


18. 9. 2013

Programování C/C++. Parameter funkce odkazem

Vsadím se, že jste to zaisté zkoušeli, předát parameter funkce pomocí její reference v prostředí pro ANSI C případně C99 a hodilo Vám to hlášku (třeba v překladači Mingw):

... error: expected ';', ',' or ')' before '&' token ...

,protože jste se snažili zkompilovat následující ukázku programu:

void test(u8 &a) {
 a++;
}

Důvod, proč to nejde zkompilovat, je ten že předávání parametru funkce pomocí reference, jde pouze u jazyku C++ a ne u jazyka C a ani u jazyka objective-C.

A když už jsme u reference, tak se podívejte na následující ukázku:

int main(void) {
 u8 b=1;
 test(b);
 cout << "b=" << b << endl;
}

Po spuštění programu bude hodnota b=2. A to je z toho důvodu že se vezme reference lokální proměnné b. Ta se předá jako parameter do funkce test, tam se inkrementuje hodnota na kterou reference ukazuje a tím se změní i hodnota proměnné b protože reprezentuje to samé pamětové místo.

Zdroj: Passing arguments by reference
S pozdravem
ViaExplore - Tomáš Kamenický

11. 9. 2013

Použít GOTO v C...čku?

Určitě jste už někdy někde slyšeli zda použít "GOTO" příkaz (jump neboli skok) v programovacím jazyku C.
Odpověď zní Ano!, ale jen za podmínky že bude na první pohled jednoznačné co daná funkce dělá. Pokud píšete stavový automat, tak se často používá "switch case statement". Nicméně použití "GOTO" i v tomto případě není na škodu.
Uvedu příklad, kde příkaz "GOTO" často používám:

int main(int argc, char **argv) {
  if ( funkce_A() != USPECH ) goto EXIT_CHYBA;
  if ( funkce_B() != USPECH ) goto EXIT_CHYBA;
  ...
  uvolni_zdroje_A();
  return EXIT_SUCCESS;

 EXIT_CHYBA:
  uvolni_zdroje_A();
  return EXIT_FAILURE;
}


Ukázka reálného použití příkazu goto:

S pozdravem
ViaExplore - Tomáš Kamenický

4. 9. 2013

Změna je život...

Rozhodl jsem se pro několik změn na svém blogu a youtube kanálu.
1) Již budu psát jen "česky" a kdo nerozumí ten si to v pravo přeloží :)
2) Vytvořil jsem stejnoměnný název na YouTube kanálu. Do svého osobního kanálu budu přispívat pouze věci které jsou z mého soukromného života a do kanálu ViaExplore budu přispívat ty zajímavé věci. Ty které Vás doufám budou bavit.

Dále jsem chtěl zmínit že jsem narazil na velice šikovný web: https://www.circuitlab.com/
Na webu circuitlab.com můžete snadno a jednoduše naskicovat jakékoliv schéma a sdílet jej s ostatníma. To je velice užitečné a plánuji to používat při svých videiích.

S pozdravem,
T.Kamenický
ViaExplore