Goedemiddag heren,
Als eindwerk moet ik een propellor klok maken.
Hardwarematig is alles af (spanningsoverdracht, printplaatje...) en werkt ook allemaal.
Nu zit ik echter een beetje in de knoei met de software kant van het geheel.
Momenteel doe ik het zo:
Als de IR fototransistor een interrupt geeft (PCINT0), start ik een timer (Timer1) en laat deze lopen. Bij de volgende interrupt lees ik deze timer uit, en weet ik hoe lang 1 rotatie heeft geduurd.
Door dan deze timer terug op nul te zetten, kan ik in mijn main routine heel de tijd deze timer uitlezen, delen door de totale tijd en dat vermenigvuldigen met het aantal plaatsen dat ik heb in mijn afbeelding-array:
De array IMG is gedimd als 120 bytes.
Op de juiste plaatsen in de array plaats ik dan streepjes die de wijzers van de klok voorstellen.
Nu neem ik aan dat dit niet de meest efficiënte manier is om een propellor klok te maken... Heeft er misschien iemand een tip waarmee het beter kan? Ik gebruik een Atmega168 microcontroller, geprogrammeerd in Bascom, met een 16MHz kristal. De tijd wordt bijgehouden door een DS1307.
Alvast bedankt,
Stijn
Als eindwerk moet ik een propellor klok maken.
Hardwarematig is alles af (spanningsoverdracht, printplaatje...) en werkt ook allemaal.
Nu zit ik echter een beetje in de knoei met de software kant van het geheel.
Momenteel doe ik het zo:
Als de IR fototransistor een interrupt geeft (PCINT0), start ik een timer (Timer1) en laat deze lopen. Bij de volgende interrupt lees ik deze timer uit, en weet ik hoe lang 1 rotatie heeft geduurd.
Door dan deze timer terug op nul te zetten, kan ik in mijn main routine heel de tijd deze timer uitlezen, delen door de totale tijd en dat vermenigvuldigen met het aantal plaatsen dat ik heb in mijn afbeelding-array:
code:
1
2
3
4
5
| Do Positie = Timer1 / Rondetijd Positie = Positie * 120 Portd = Img(positie) 'Op Portd zitten de leds aangesloten Loop |
De array IMG is gedimd als 120 bytes.
Op de juiste plaatsen in de array plaats ik dan streepjes die de wijzers van de klok voorstellen.
Nu neem ik aan dat dit niet de meest efficiënte manier is om een propellor klok te maken... Heeft er misschien iemand een tip waarmee het beter kan? Ik gebruik een Atmega168 microcontroller, geprogrammeerd in Bascom, met een 16MHz kristal. De tijd wordt bijgehouden door een DS1307.
Alvast bedankt,
Stijn