Hallo allemaal,
Ik wil 5 verschillende led-groepen aansturen dmv een PIC. De PIC 16f877 wil ik daarvoor gebruiken. Nu zat ik zo te bedenken dat dmv verschillende ic's per groep de leds aangestuurd kunnen worden. Maar nu weet ik niet welke IC ik daarvoor kan gebruiken.
Ik heb zelf al een de TC4427A gebruikt om een motortje aan te sturen, dus zou ik die daarvoor kunnen gebruiken? Of weten jullie een betere oplossing hiervoor?
Dit geheel wil ik met 1 schakelaar aansturen, maar weet niet helemaal hoe ik dit erin moet programmeren. Normaal gesproken is het if switch enz. enz. maar als ik de schakelaar voor meerdere dingen wil gebruiken hoe moet ik dat dan erin programmeren? Dus bijv. 1 keer drukken, alles aan en blijft aan voor onbepaalde tijd. Twee keer drukken is een loop die afspeeld met allerlei knipper effekten over de 5 led groepen. En drie keer drukken is uit bijvoorbeeld. Het lijkt mij top dat ik dit erin kan zetten maar het programmeer werk doorzie ik nog niet helemaal. Als het 3 verschillende drukschakelaars waren dan had ik het nog wel geweten.
Het zijn een hoop vragen, ik hoop dat iig deels een antwoord krijg.
Gr,
Jort
Oh, PS Ik programmeer met de taal JAL
Jort,
Voor het aansturen met een 16f877 van een groep led's zou ik opteren voor een ULN2803.
Voor de aantal drukkingen zou ik eens zoeken hoe je een flankdetectie kan doen.
Jimmy
Hoi,,
Hoeveel leds ga je aansturen en welke zijn het , misschien ga je wel over de max. stroom van een uln 2803 , en is die onbruikbaar voor jou.
Dan zou je een transistor of een fet kunnen nemen met bijbehorende basis weerstand.
Software:
Als je een drukknop programmeert (met ontdendering ) kun je ook 1 drukknop programmeren , die je in een kleine lus plaatst .
Misschien heb je hier iets aan, het is dan wel geen jal
while 1 =1
TART
for tijd = 1 to 200 : ......lus waarin vaker op een knop geduwd kan worden.
if drukknop = high then teller = teller + 1 : .......teller verhogen
endif
next
If teller = 0 or teller = >5 then goto START : ..........wachten op een drukknop
if teller = 1 goto ...
if teller = 2 goto ...
wend
end
bert.
[Bericht gewijzigd door bert!ne op (11%)]
Om een drukknop te ontdenderen kan je ook volgend stukje C-code gebruiken
[code=C]
if(button == 1) //er wordt op een drukknop gedrukt
{
antiBounceDelay(); //delay
while(button == 1); //wacht tot drukknop losgelaten wordt
teller++; //drukknop niet meer ingedrukt doe nu een actie
}
void antiBounceDelay(void)
{
unsigned char count;
for(count=0; count < 1000 ; count++)
continue;
}
[/code]
Afhankelijk van de toestand van de teller kan je dan een bepaald licht effect selecteren. Bv.:
[code=C]
switch(teller)
{
case : 0 Effect1();break;
case : 1 Effect2();break;
case : 2 Effect3();break;
default : LedsOff();break;
}
[/code]
Het zijn 5 led groepen;
2 groepen van 12 stuks
2 groepen van 16 stuks
1 groep van 15 stuks
Ok, ik begrijp nu hoe ik het kan programmeren, nu wil ik nog weten hoe ik dit met een pic aan kan sturen.
Bedankt iig,
Jort
Het zijn normale led's die ik gebruik, met een weerstand ertussen van 470 ohm zodat ik de leds op 12 volt kan gaan gebruiken.
De tech data van de led is:
wit;
5mm;
24000 mcd;
3,1-3,5V;
20 mA
Mvg,
Jort
Kan je niet voor de eenvoud het aantal leds van 71 reduceren naar 64. Het zou de oplossing stukken eenvoudiger maken.
Ik zou het zo aanpakken: 8 groepen maken van 8 leds. Vervolgens 2 8-bit schuifregisters nemen (74HC595) en deze in serie zetten zo bekom je een 16-bit schuifregister. Dit wordt dan aangestuurd via de SPI van de PIC16F877.
De eerste 8 bit die ingeschoven worden selecteren een groep (bv groep1) de laatste 8 bits sturen dan de leds die je wil laten oplichten van de geselecteerde groep.
Let wel op dat je de stroom van de leds niet uit de schuifregisters kan trekken ja gaat nog wat moeten voorzien met bv. transistoren, mosfet, ULN2803,... .