Al langere tijd heb ik in mijn fietswiel een apparaatje zitten bestaande uit 7xrode en 7x blauwe leds. Hier kan ik texten en figuren zetten welke dan tijdens het rijden zichtbaar worden.


Op de foto zie je nog wat bugs, die zijn er tegenwoordig gelukkig wel uit
Het was een heel simpel ontwerp, geen snelheidscontrole/aanpassing en slechts 2 kleuren. Daarnaast heb ik geen AVR programmer thuis, dus moest ik hem op mijn stage programmeren. Een ander nadeel was dat hij 1 zijdig was en slechts 1 "lichtspaak". Waardoor het beeld niet echt stabiel is.
Nu ik dus meer bekend aan het worden ben op het gebied van microcontrollers wil ik een nieuwe versie bouwen. Ik heb al 40 RGB leds besteld, PIC 16F628 etc. heb ik ook liggen en ik heb al wat ideeen bedacht.
Het idee:
Als 1e wil ik nu registreren wanneer het wiel op een bepaald punt is, en dan de text schrijven. Op zich lijkt mij snelheidsaanpassing overbodig, de text zal dus wel langer of korter zijn als je harder of zachter rijd, maar ik heb met de gebouwde versie al gemerkt dat dat niet zoveel uitmaakt. Scheelt weer een hoop programmeer werk, je hoeft nu namelijk alleen op een schakelpulsje te wachten, en geen berekeningen uit te voeren, en toch zal de text stilstaan (tenzij je remt/optrekt)
Daarnaast wil ik dit keer 2 modules maken, daardoor hoef je maar 50% van je wiel te bestrijken, en zal het beeld dus 2x hogere refresh rate hebben.
En als laatste dus dubbelzijdig. Text staat dan dus aan de ene kant gespiegeld, maar dat maakt op zich niet zoveel uit, je wiel loopt rond, en als het dan dus aan de voor/achterkant van het wiel staat is de text 90 graden gedraaid ten opzichte van de grond, en dan valt het van beide kanten te lezen. Daarnaast kun je het ook nog laten scrollen, dan loopt het zeg maar rondjes in je wiel.
De aansturing van de led's wil ik dus DMV een pic16f628 doen. Deze heeft uiteraard niet genoeg uitgangen voor 40 RGB led's. Daarom wilde ik er 74hc595's achter hangen. Dat zijn schuifregisters met latch, je stuurt serieel data in, en het komt er parallel uit als je een latch puls geeft. Hierdoor kun je met 3 pinnetjes talloze uitgangen creeéren.
Voor elke kleur is dus 1 schuifregister nodig, dus met 3 van die IC's kun je 8 led's onafhankelijk aansturen, verder gaan er nog 3 draadjes naar de andere kant van je wiel waar ook 3 schuifregister zitten om zo de andere helft van je wiel ook aan te sturen. Zo kom je dus op 4x8=32 led's in totaal uit. Kun je met de laatste 8 nog wat anders maken
Allereerst nog wat voorbeelden om een idee te krijgen hoe het er uit ziet:
http://www.drewish.com/bl...03/17/2sided_pov_toy.html
http://www.ladyada.net/make/spokepov/index.html
http://home.planet.nl/~heuv0283/scandisplay.html
http://www.ianpaterson.or...pokepov20050704/index.htm
En dan nu verder met het technische deel
Ik heb een opstelling gemaakt met een PIC en 595, dat werkt, alleen kan ik nog niet op een eenvoudige en snelle manier, ik stuur stuk voor stuk bitjes uit:
Dat werkt, en dat is al mooi, maar zo kun je natuurlijk nooit complete texten erin zetten. Wat dus uitgevogeld moet worden is hoe je met zo min mogelijk regels serieel de data eruit gooit. Er is 1 datalijn, daarop stuur je dus elke kleur/led aan of uit, en na het ingeven van die bit moet er een clockpuls gegeven worden. Nadat je de byte, (3x byte in ons geval) hebt verzonden geef je een latch waarmee de waardes richting de leds worden geschoven.
Daarnaast zijn er 2 mogelijkheden voor het programmeren van de texten als ik het goed heb: programmeren in de PIC (zoals hierboven), of schrijven in de EEPROM. Nu heb ik met dat laaste al helemaal geen ervaring, al zal het dan denk ik makkelijker zijn om via rs323 nieuwe gegevens te laden.
Hoe zit het qua snelheidsaanpassing? Zoals ik al eerder schreef leek het mij overbodig om een berekening erop los te laten waarbij het plaatje meer "uitgerekt" wordt naarmate het wiel langzamer draait. Maar in hoevere zou dit daadwerkelijk uit maken? Als je een leuk partoon in je wiel zet, zoals pijltjes, \\\\\\\\ of een soort van golfvorm zal het al helemaal weinig uitmaken.
Wat ik met dit topic wil bereiken is IIG wat hulp bij het programmeren
ik vroeg het al op CO, en daar wezen ze me op de USART aansluiting, die spuugt makkelijk serieel uit schijnt. Maar daarvoor is mijn ervaring blijkbaar niet toereikend, ik had gewoon verwacht dat ik net zo makkelijk als bij het stukje code hierboven een complete byte kan versturen, maar dat viel even tegen
De code van bovenstaande websites is best aardig gedocumenteerd, maar ik begrijp nog steeds niet helemaal hoe het werkt. Daarnaast is het denk gewoon een heel leuk project om samen uit te werken, want een ander is bijv. weer heel goed in het maken van een programma'tje om snel texten/figuren om te zetten naar begrijpbare code voor de PIC. Net zoiets als het Blinkenled project dus
Op de foto zie je nog wat bugs, die zijn er tegenwoordig gelukkig wel uit
Het was een heel simpel ontwerp, geen snelheidscontrole/aanpassing en slechts 2 kleuren. Daarnaast heb ik geen AVR programmer thuis, dus moest ik hem op mijn stage programmeren. Een ander nadeel was dat hij 1 zijdig was en slechts 1 "lichtspaak". Waardoor het beeld niet echt stabiel is.
Nu ik dus meer bekend aan het worden ben op het gebied van microcontrollers wil ik een nieuwe versie bouwen. Ik heb al 40 RGB leds besteld, PIC 16F628 etc. heb ik ook liggen en ik heb al wat ideeen bedacht.
Het idee:
Als 1e wil ik nu registreren wanneer het wiel op een bepaald punt is, en dan de text schrijven. Op zich lijkt mij snelheidsaanpassing overbodig, de text zal dus wel langer of korter zijn als je harder of zachter rijd, maar ik heb met de gebouwde versie al gemerkt dat dat niet zoveel uitmaakt. Scheelt weer een hoop programmeer werk, je hoeft nu namelijk alleen op een schakelpulsje te wachten, en geen berekeningen uit te voeren, en toch zal de text stilstaan (tenzij je remt/optrekt)
Daarnaast wil ik dit keer 2 modules maken, daardoor hoef je maar 50% van je wiel te bestrijken, en zal het beeld dus 2x hogere refresh rate hebben.
En als laatste dus dubbelzijdig. Text staat dan dus aan de ene kant gespiegeld, maar dat maakt op zich niet zoveel uit, je wiel loopt rond, en als het dan dus aan de voor/achterkant van het wiel staat is de text 90 graden gedraaid ten opzichte van de grond, en dan valt het van beide kanten te lezen. Daarnaast kun je het ook nog laten scrollen, dan loopt het zeg maar rondjes in je wiel.
De aansturing van de led's wil ik dus DMV een pic16f628 doen. Deze heeft uiteraard niet genoeg uitgangen voor 40 RGB led's. Daarom wilde ik er 74hc595's achter hangen. Dat zijn schuifregisters met latch, je stuurt serieel data in, en het komt er parallel uit als je een latch puls geeft. Hierdoor kun je met 3 pinnetjes talloze uitgangen creeéren.
Voor elke kleur is dus 1 schuifregister nodig, dus met 3 van die IC's kun je 8 led's onafhankelijk aansturen, verder gaan er nog 3 draadjes naar de andere kant van je wiel waar ook 3 schuifregister zitten om zo de andere helft van je wiel ook aan te sturen. Zo kom je dus op 4x8=32 led's in totaal uit. Kun je met de laatste 8 nog wat anders maken
Allereerst nog wat voorbeelden om een idee te krijgen hoe het er uit ziet:
http://www.drewish.com/bl...03/17/2sided_pov_toy.html
http://www.ladyada.net/make/spokepov/index.html
http://home.planet.nl/~heuv0283/scandisplay.html
http://www.ianpaterson.or...pokepov20050704/index.htm
En dan nu verder met het technische deel
Ik heb een opstelling gemaakt met een PIC en 595, dat werkt, alleen kan ik nog niet op een eenvoudige en snelle manier, ik stuur stuk voor stuk bitjes uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| MOVLW B'00000100' ; bit 1 op pin 14/DS MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000101' ; store bit 1 op pin 11/sh_cp MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000000' ; bit 2 MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000001' ; store bit 2 MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000100' ; etc |
Dat werkt, en dat is al mooi, maar zo kun je natuurlijk nooit complete texten erin zetten. Wat dus uitgevogeld moet worden is hoe je met zo min mogelijk regels serieel de data eruit gooit. Er is 1 datalijn, daarop stuur je dus elke kleur/led aan of uit, en na het ingeven van die bit moet er een clockpuls gegeven worden. Nadat je de byte, (3x byte in ons geval) hebt verzonden geef je een latch waarmee de waardes richting de leds worden geschoven.
Daarnaast zijn er 2 mogelijkheden voor het programmeren van de texten als ik het goed heb: programmeren in de PIC (zoals hierboven), of schrijven in de EEPROM. Nu heb ik met dat laaste al helemaal geen ervaring, al zal het dan denk ik makkelijker zijn om via rs323 nieuwe gegevens te laden.
Hoe zit het qua snelheidsaanpassing? Zoals ik al eerder schreef leek het mij overbodig om een berekening erop los te laten waarbij het plaatje meer "uitgerekt" wordt naarmate het wiel langzamer draait. Maar in hoevere zou dit daadwerkelijk uit maken? Als je een leuk partoon in je wiel zet, zoals pijltjes, \\\\\\\\ of een soort van golfvorm zal het al helemaal weinig uitmaken.
Wat ik met dit topic wil bereiken is IIG wat hulp bij het programmeren




