c++/led-displej/led-displej.cpp
changeset 35 ef8152d84946
child 37 0a06481eec13
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/c++/led-displej/led-displej.cpp	Sat Nov 19 22:28:08 2016 +0100
     1.3 @@ -0,0 +1,64 @@
     1.4 +#include <stdlib.h>
     1.5 +#include <iostream>
     1.6 +
     1.7 +/**
     1.8 + * Slouží k ovládání LED displeje pomocí řadiče M5482 připojeného na LPT port.
     1.9 + * Používají se jen dva piny: DATA a CLOCK signál.
    1.10 + */
    1.11 +
    1.12 +/**
    1.13 + * = 1 → normální běh
    1.14 + * > 1 → zpomalené pro ladění
    1.15 + */
    1.16 +const int BRZDA = 100000;
    1.17 +
    1.18 +void zapisSeriove(bool hodnoty[]);
    1.19 +void zapisData(bool hodnota);
    1.20 +void zapisClock(bool hodnota);
    1.21 +void cekej(int mikroSekund);
    1.22 +
    1.23 +int main() {
    1.24 +	std::cout << "spouštím program LED Displej" << std::endl;
    1.25 +	
    1.26 +	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};
    1.27 +	
    1.28 +	std::cout << "velikost pole: " << sizeof(hodnoty) << std::endl; // vypíše 36
    1.29 +	
    1.30 +	zapisSeriove(hodnoty);
    1.31 +}
    1.32 +
    1.33 +void zapisSeriove(bool hodnoty[]) {
    1.34 +	std::cout << "velikost pole ve funkci: " << sizeof(hodnoty) << std::endl; // vypíše 8
    1.35 +	for (int i = 0; i < sizeof(hodnoty); i++) {
    1.36 +		zapisData(hodnoty[i]);
    1.37 +		cekej(1);
    1.38 +		zapisClock(true);
    1.39 +		cekej(1);
    1.40 +		zapisClock(false);
    1.41 +		cekej(1);
    1.42 +		std::cout << "---" << std::endl;
    1.43 +	}
    1.44 +}
    1.45 +
    1.46 +void zapisData(bool hodnota) {
    1.47 +	std::cout << "DATA  = " << hodnota << std::endl;
    1.48 +	if (hodnota) {
    1.49 +		// TODO: zapsat na LPT
    1.50 +	} else {
    1.51 +		// TODO: zapsat na LPT
    1.52 +	}
    1.53 +}
    1.54 +
    1.55 +void zapisClock(bool hodnota) {
    1.56 +	std::cout << "CLOCK = " << hodnota << std::endl;
    1.57 +	if (hodnota) {
    1.58 +		// TODO: zapsat na LPT
    1.59 +	} else {
    1.60 +		// TODO: zapsat na LPT
    1.61 +	}
    1.62 +}
    1.63 +
    1.64 +void cekej(int mikroSekund) {
    1.65 +	usleep(mikroSekund*BRZDA);
    1.66 +}
    1.67 +