Trumpas eksperimentas su kiniškais, individualiai kontroliuojamai (addressable) RBG LEDais. T.y. tai kaip ir ilga juostele su RGB LEDais kuriuose sumontuota maža mikroschema kuri leidžia užprogramuoti trijų RGB šviesos diodų intensivumą. Šviesos diodai (ir pati juostelė) valdosi tik per vieną duomenų laidą, t.y. protokolas asinchroninis ir jo veikimas priklauso nuo teisingo taimingo.
Pradžioje galvojau rašyti viską nuo nulio, bet poto nutariau ne vargti ir pasiieškojau source code internete. Radau kažkokį universalų, AVR procesoriukams. Nors pats kodas kaip ir universalus, ir turėtu duoti ispėjimus, kai makrosai nesuskaičiuoja, tačiau net kokią valandą kankinausi su kodu, nes signalai nesigavo su teisingais intervalais. Pasirodo, kad mano turimas ATMEGA162, grojantis ant 3,686MHz (cominis) yra kaip tik ant tos ribos, kada softas dar mano, kad sugebės taimingus suformuoti, bet WS2812 mikroschema visiškai su tuom nesutinka. Pakeitus kvarcą į 12MHz (USBinis), viskas iškarto pradėjo veikti.
Tavo vamzdyje arba tu vamzdis (Youtube) pilna filmukų, kur iš tokių LED eilučių pasidaro ištisus ekranus. Tačiau, norint pasidaryti normalios raiškos LED ekraną reikia investuoti į gana daug tokių LED eilučių. Gaunasi brangokas projektas. O ir tada su paprasta ATMEGA neprasisuksi, nes reikia organizuoti video informacijos apdorojimą ir video buferį atmintyje.
Ir aišku: WS2812 AVR ATMEGA source code ir kompiliuotas hex failas.
P.S. Vienas bugas WS2812 juostelėje- kažkodėl neteisingai veikia kai maitinimo įtampa daugiau kaip ~4V. Pradeda fušeruoti. Gal dėl to, kad sujungtas Vcc ir Vled juostelėje, muša stiprius trigdžius? Nes teoriškai, turi veikti net ir nuo 7V…