# HG changeset patch # User František Kučera # Date 1479591002 -3600 # Node ID 0a06481eec13142df6f6493aa4803b374a427b64 # Parent 03757ff746945d5efd2ba16cc9104af8689808a9 led-displej: vylepšení diff -r 03757ff74694 -r 0a06481eec13 c++/led-displej/led-displej.cpp --- a/c++/led-displej/led-displej.cpp Sat Nov 19 22:29:10 2016 +0100 +++ b/c++/led-displej/led-displej.cpp Sat Nov 19 22:30:02 2016 +0100 @@ -12,7 +12,7 @@ */ const int BRZDA = 100000; -void zapisSeriove(bool hodnoty[]); +void zapisSeriove(bool hodnoty[], int n); void zapisData(bool hodnota); void zapisClock(bool hodnota); void cekej(int mikroSekund); @@ -21,15 +21,11 @@ std::cout << "spouštím program LED Displej" << std::endl; bool hodnoty[] = {1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1}; - - std::cout << "velikost pole: " << sizeof(hodnoty) << std::endl; // vypíše 36 - - zapisSeriove(hodnoty); + zapisSeriove(hodnoty, sizeof(hodnoty)); } -void zapisSeriove(bool hodnoty[]) { - std::cout << "velikost pole ve funkci: " << sizeof(hodnoty) << std::endl; // vypíše 8 - for (int i = 0; i < sizeof(hodnoty); i++) { +void zapisSeriove(bool hodnoty[], int n) { + for (int i = 0; i < n; i++) { zapisData(hodnoty[i]); cekej(1); zapisClock(true); @@ -38,26 +34,37 @@ cekej(1); std::cout << "---" << std::endl; } + std::cout << "vypsáno hodnot: " << n << std::endl; } +/** + * TODO: použít jiné než datové piny (tam lze zapsat jen celý bajt najednou) + */ void zapisData(bool hodnota) { std::cout << "DATA = " << hodnota << std::endl; if (hodnota) { - // TODO: zapsat na LPT + // TODO: zapsat na LPT (a nevymazat CLOCK) } else { - // TODO: zapsat na LPT + // TODO: zapsat na LPT (a nevymazat CLOCK) } } +/** + * + */ void zapisClock(bool hodnota) { std::cout << "CLOCK = " << hodnota << std::endl; if (hodnota) { - // TODO: zapsat na LPT + // TODO: zapsat na LPT (a nevymazat DATA) } else { - // TODO: zapsat na LPT + // TODO: zapsat na LPT (a nevymazat DATA) } } +/** + * Čeká zadaný čas v mikrosekundách. + * Je možné zpomalit konstantou BRZDA. + */ void cekej(int mikroSekund) { usleep(mikroSekund*BRZDA); }