Heey Tinus016
Het gene wat mijn programma doet is als volgt:
Dit is gewoon mijn 'Hoofdprogramma'
pic basic code:
Main:
For Row = 1 To 7
Inc Teller
If Teller = 200 Then
Teller = 0
GoSub Scrollen
EndIf
GoSub RowOn
SHOut DataPin, ClockPin, msbfirst, [Variabele1[Row]]
PulsOut Latch, 5
GoSub RowOut
Next
GoTo Main
vanuit hier word 1 schuifregister voor de kolommen en 1 ULN2803 om de rijen aangestuurd. zoals je hier ziet is het een 'For..next' situatie die van 1 tot 7 telt. Dit zijn me rijen die om en om worden aangestuurd. afhankelijk van de teller stuur je elke rij dus aan maar ook welk ledje daarbij hoort. Dit word gedaan via 'Gosub Scrollen'
pic basic code:
Scrollen:
For Scroll = 1 To 7
Select Tekst[Keuze]
Case "A" : BD1 = LetterA[Scroll] : BitWaarde = 6
Case "B" : BD1 = LetterB[Scroll] : BitWaarde = 6
Case "C" : BD1 = LetterC[Scroll] : BitWaarde = 6
Case "D" : BD1 = LetterD[Scroll] : BitWaarde = 6
Case Else: BD1 = 0
End Select
Bitnr[0] = BD1.7
Bitnr[1] = BD1.6
Bitnr[2] = BD1.5
Bitnr[3] = BD1.4
Bitnr[4] = BD1.3
Bitnr[5] = BD1.2
Bitnr[6] = BD1.1
Bitnr[7] = BD1.0
Variabele1[Scroll] = Variabele1[Scroll] << 1
BD2 = Variabele1[Scroll]
BD2.7 = Bitnr[Loop]
Variabele1[Scroll] = BD2
Next
Loop = (Loop + 1)
If Loop > BitWaarde Then
Loop = 0
Keuze = (Keuze + 1)
EndIf
If Keuze > 4 Then Keuze = 0
Return
zoals je hier ziet is het weer een 'For..next' situatie. weer van 1 tot 7. dan komt het scrollgedeelte.
Het begint met 'Select tekst[keuze]' Tekst is de zin die je wilt laten zien op het display en keuze staat voor elke letter. Tekst moet dus een Array zijn, gevult met jouw tekst. Dus als je je display opstart staat keuze op 0. Stel dat je tekst = ABCD en keuze staat op 0 dan is dus de eerste letter die die pakt een A
Scroll is 1. Dus BD1 zoekt letter A, in dit geval is scroll 1, dus worden alle bitjes van letter A[1] in 'BitNr' gestopt.
Daarna kom je aan bij Variabele1 = Variabele1 << 1. Dit betekent dat alle bitjes in variabele1, 1 plek naar links schuiven, wat dus betekent dat je aan het scrollen ben. Na het verschuiven van 1 plek word het volgende bitje wat je dus heb geladen in 'BitNr' toegevoegd. Om ervoor te zorgen dat nu het 2e bitje van de letter komt is er een teller genaamd 'Loop' die bijhoudt welke 'BitNr' aan de beurt is.
pic basic code:
Case "A" : BD1 = LetterA[Scroll] : BitWaarde = 6
tevens word er achter elke letter een 'Bitwaarde' meegegeven. De bitwaarde bepaalt uit hoeveel bitjes een letter + spatie bestaat.
Als 'Loop' dus evengroot als 'Bitwaarde' is zal 'Keuze' dus met 1 worden verhoogt en zal loop weer 0 zijn. Nu Keuze is verhoogt zal de volgende letter op het display komen.
Uiteindelijk als Keuze groter is dan het aantal letters dat je in je zin heb zal deze weer opnieuw opstarten en kan je dus weer opnieuw beginnen.
Ik zelf had Keuze nog extra verhoogt zodat alle letters uit beeld waren. hoeveel je verhoogt is natuurlijk afhankelijk van hoeveel displays je hebt.
Verder lijkt het een gecompliceerd programma maar als je alle stappen goed leest en eventueel test zal je merken dat het opzich niet een heel moeilijk systeem is. Ik weet dat het misschien anders/makkelijker kan, maar ik heb hiervoor gekozen en het bevalt me goed.
Mijn lichtkrant werkt nog via dit systeem maar is wel hier een daar flink aangepast. had te maken met de Scroll manieren.
Mijn tekst was bij wijs van spreken zo opgebouwd: 'Hallo ik heet Sjors'
Voordat de tekst begon met scrollen had ik eerst geteld uit hoeveel letters me zin bestond. In dit geval 19 letters, dus is me keuze aantal is 19. Dan had ik zeg maar bij Sjors laten stoppen. dus bij keuze 14 moest ie wachten en dan na paar seconden liet ik Sjors naar beneden scrollen i.p.v. naar links. Zo zijn er natuurlijk vele mogelijkheden maar je moet eerst het idee erachter snappen.
De tekst werd ingevoerd via een eigen gemaakt computer systeem. Dit had ik gemaakt via Visual Basic. (helaas heb ik dit programma niet meer vanwege computercrash toen.) Maar het stelde niet veel voor hoor was alleen tekst invoeren en de Scroll tijd.
Het scrollen deed ik allemaal via het hoofdprogramma en de communicatie met PC deed ik via interrupts.
Mocht je nog meer vragen hebben dan hoor ik het wel.
Heb zelf de echte code ook niet meer vanwege crash maar ik kan je wel aardig eind op weg helpen. Uiteindelijk moet je gewoon paar dingen onthouden. Dat is welke letter je bent, daarvan moet je een weten welke bit je nodig heb. Als je hier een goede manier in vindt dan kan je allerlei manieren van scrollen verzinnen.
MVG Sjors