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.