Angående Ditt problem med att få lysdioderna att lysa ordentligt. Jag har ett liknande problem. Mitt problem är att få alla dioderna, oavsett färg att lysa lika starkt.
På ELFA fann jag två intressanta kretsar för detta. Dessa kan även lösa Ditt problem med för få I/O-pinnar. Kretsarna är LED-drivkretsar av typen shiftregister med seriell ingång.
73-337-35 8 bitar
73-337-43 16 bitar
Båda är stackbara så till vida att de har en datautgång som kan kopplas vidare till nästa chips dataingång. Med tre I/O-pinnar (fyra med OE, Output Enable) på PIC:en kan Du då styra ett mycket stort antal lysdioder.
I kretsen finns det en strömregulator som styrs med ett yttre motstånd. Det yttre moståndet avgör hur stor ström utgångarna kommer leverera, samma storlek på strömmen på samtliga utgångar, upp till 90 mA. De dioder som kretsarna kan hantera har ett spänningsfall mellan 0.9-4.0 V. Man kan koppla in olika typer av lysdiodrar till en och samma krets, men då kan de också lysa olika starkt beroende på att olika typer av dioder emiterar olika mycket ljus vid samma ström, lägg därtill att ögat har olika perception för olika våglängder.
Hur detta löser problemet med olika typer av lysdiodrar:
Koppla alla dioder av samma typ till ett chip och anpassa strömregulatormotståndet efter dessa och koppla alla dioder av den andra typen till nästa chip och anpassa strömregulatormotståndet efter dessa osv. Viola, Ditt problem med olika typer av lysdiodrar i Ditt projekt är ett minne blott

och om Du är nogrann med strömbegränsningsmotstånden kan Du få de att lysa ungefär lika starkt
Hur man shiftar in data:
Data kan shiftas in med upp till 20 Mhz (tror de menar 20 Mbit/s

). I kaskadkoppling ligger max på 10 Mhz (tror de menar 10 Mbit/s

).
Först shiftar man in bitarna med Serial Data In och Clock.
Sedan ändrar man Latch Enable från låg till hög och bitarna shiftas då från det "inre" registret till utgångarna.
På det viset kan man shifta in nya bitar utan att utgångarna antar felaktiga värden under tiden.
När Output Enable är låg är utgångarna aktiva, och när Output Enable är hög är utgångarna inaktiva, ej inkopplade. På så sätt kan man "tända" och "släcka" samtliga utgångar utan att dessa förlorar sina lagrade värden. En rutin för att få Din diodfigur att blinka blir då nästan löjligt enkel, OE låg eller hög
Lästips i manualen för seriell data, avseende PIC16F631/677/685/687/689/690:
Kapitel 13.0-13.5.
Du kommer ha Din PIC i Master Mode.
Äntligen! Mitt första inlägg på detta forum
Edit: Rättade det språkliga. Var tydligen för trött när jag skrev inlägget så det blev lite otydligt med vad jag menade.