led-displej: vylepšení
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sat, 19 Nov 2016 22:30:02 +0100
changeset 370a06481eec13
parent 36 03757ff74694
child 38 6ec32ee08feb
led-displej: vylepšení
c++/led-displej/led-displej.cpp
     1.1 --- a/c++/led-displej/led-displej.cpp	Sat Nov 19 22:29:10 2016 +0100
     1.2 +++ b/c++/led-displej/led-displej.cpp	Sat Nov 19 22:30:02 2016 +0100
     1.3 @@ -12,7 +12,7 @@
     1.4   */
     1.5  const int BRZDA = 100000;
     1.6  
     1.7 -void zapisSeriove(bool hodnoty[]);
     1.8 +void zapisSeriove(bool hodnoty[], int n);
     1.9  void zapisData(bool hodnota);
    1.10  void zapisClock(bool hodnota);
    1.11  void cekej(int mikroSekund);
    1.12 @@ -21,15 +21,11 @@
    1.13  	std::cout << "spouštím program LED Displej" << std::endl;
    1.14  	
    1.15  	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.16 -	
    1.17 -	std::cout << "velikost pole: " << sizeof(hodnoty) << std::endl; // vypíše 36
    1.18 -	
    1.19 -	zapisSeriove(hodnoty);
    1.20 +	zapisSeriove(hodnoty, sizeof(hodnoty));
    1.21  }
    1.22  
    1.23 -void zapisSeriove(bool hodnoty[]) {
    1.24 -	std::cout << "velikost pole ve funkci: " << sizeof(hodnoty) << std::endl; // vypíše 8
    1.25 -	for (int i = 0; i < sizeof(hodnoty); i++) {
    1.26 +void zapisSeriove(bool hodnoty[], int n) {
    1.27 +	for (int i = 0; i < n; i++) {
    1.28  		zapisData(hodnoty[i]);
    1.29  		cekej(1);
    1.30  		zapisClock(true);
    1.31 @@ -38,26 +34,37 @@
    1.32  		cekej(1);
    1.33  		std::cout << "---" << std::endl;
    1.34  	}
    1.35 +	std::cout << "vypsáno hodnot: " << n << std::endl;
    1.36  }
    1.37  
    1.38 +/**
    1.39 + * TODO: použít jiné než datové piny (tam lze zapsat jen celý bajt najednou)
    1.40 + */
    1.41  void zapisData(bool hodnota) {
    1.42  	std::cout << "DATA  = " << hodnota << std::endl;
    1.43  	if (hodnota) {
    1.44 -		// TODO: zapsat na LPT
    1.45 +		// TODO: zapsat na LPT (a nevymazat CLOCK)
    1.46  	} else {
    1.47 -		// TODO: zapsat na LPT
    1.48 +		// TODO: zapsat na LPT (a nevymazat CLOCK)
    1.49  	}
    1.50  }
    1.51  
    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 +		// TODO: zapsat na LPT (a nevymazat DATA)
    1.60  	} else {
    1.61 -		// TODO: zapsat na LPT
    1.62 +		// TODO: zapsat na LPT (a nevymazat DATA)
    1.63  	}
    1.64  }
    1.65  
    1.66 +/**
    1.67 + * Čeká zadaný čas v mikrosekundách.
    1.68 + * Je možné zpomalit konstantou BRZDA.
    1.69 + */
    1.70  void cekej(int mikroSekund) {
    1.71  	usleep(mikroSekund*BRZDA);
    1.72  }