Tema: Re: vaiduokliai
Autorius: Laimis
Data: 2014-06-09 00:37:40
ejs rašė:
> 2014-06-08 22:25, ig rašė:
>> void LED_oneDigitWrite(byte digit, byte value) {
>>      for (byte digCount = 0; digCount < 4; ++digCount) {
>>        digitalWrite(anode[digCount], four_digits[digit-1][digCount]);
>>      }
>>      for (byte segCount = 0; segCount < 7; ++segCount) {
>>        digitalWrite(cathode[segCount], seven_segments[value][segCount]);
>>      }
>>      delay(delDisplayTime);
>> }
>
> IMHO, šioje vietoje būtina gesinti bent jau anodą prieš įrašant reikšmę.

Būtent. Pirma uždega seno skaitmens reikšmę naujoje pozicijoje ir labai 
greitai ją pataiso. Nelabai gerai ir pavienius segmentus nuosekliai 
degioti (gal irgi prie mirgėjimo prisideda). Aš pirma užgesinčiau visus
anodus, tada nustatyčiau segmentus ir tik tada uždegčiau atitinkamą anodą.

> gal net ir katodus junginėti cikle neefektyvu, nors programa ir atrodo
> korektiškai.

Neefektyvu, bet gal kitaip negali. *Jei* segmentai kaba ant vieno porto, 
tai pakanka į jį tą portą vienu ypu nusiųsti reikšmę, kuri visus 
segmentus iš karto ir uždega taip, kaip reikia.