Velleman kit 124 (Lichtkrant): nu tot 128 tekens en nooit meer tekst kwijt!

foto van VMK124

Velleman Kit 124 (MK124) is een kitje van een lichtkrantje. Het display is 7 rijen breed en 5 hoog, elke pixel is een 3mm rode LED. Oorspronkelijk kunnen er teksten tot 16 tekens in geprogrammeerd worden, die daarna met instelbare snelheid over het scherm scrollen. De oorspronkelijke standaardtekst is "(pijltje) I (hartje) MINIKITS (pijltje)". Elke keer als de spanning van de kit werd gehaald kwam deze standaardtekst terug en was de eigen tekst weg. De enige verdere functionaliteit bedroeg een standbystand waarin geen tekst werd weergegeven.

De functionaliteit is met de nieuwe firmware toegenomen: De tekst mag nu tot 128 tekens lang zijn. Bovendien wordt de tekst bewaard in EEPROM, waardoor deze behouden blijft als de spanning weg valt. Lege batterij? Tekst blijft!

De tekst blijft uiteraard instelbaar, evenals de scrollsnelheid, op dezelfde manier als met de software van Velleman. Ook de standbystand is behouden (Al is het nu een knipperende led ipv. een looplichtje. Dit kan uiteraard aangepast worden, een link naar de source staat onderaan deze pagina.)

Eigen software

16 tekens vond ik wat weinig, en ook het telkens opnieuw instellen van de tekst kon beter. In mei 2007 ben ik begonnen om te proberen eigen software te schrijven voor deze minikit. Dat leverde toen echter alleen ellenlange spaghetticode op, die niet (goed) werkte en ook veel te groot was om in een PIC16F648A (laat staan '628A) te passen. Inmiddels (december 2010) ben ik wat ouder en wijzer en kan ik wat beter programmeren. Ik heb het projectje dus weer opgepakt. De huidige code werkt, is kleiner dan 1k, en past zodoende met gemak in een 16F628A of 16F627A. (in een 16F648A past 4k code, in een '628A 2k, en een '627A 1k.) Een 16F84A kan ook, maar deze heeft slechts 64 bytes EEPROM waardoor er ook "slechts" 64 tekens in passen.

In de huidige code wordt de tekst bewaard in EEPROM. Hiervoor gebruik ik 1 byte per letter. Dit byte is een verwijzing naar de juiste letter (bestaand uit 3 bytes) opgeslagen in het FLASH geheugen van de microcontroller. Op een microcontroller met meer EEPROM zouden dus ook meer tekens passen. En de look up list met lettertekens kan worden aangepast, elk teken dat in een 3*5 raster past is mogelijk. Hiervoor moet echter de sourcecode gewijzigd worden en de microcontroller opnieuw geprogrammeerd. Om de in EEPROM opgeslagen tekst te wijzigen is dit niet nodig, dit kan met de [set] knop op de minikit. Gebruik vervolgens de "up" en "down" toetsen om een teken te selecteren. Met "set" naar het volgende teken gaan, en als laatste teken een "<" invoeren.

Zorg voor een paar spaties aan het einde van de tekst, tenzij u een eindeloos doorlopende tekst wilt. (Het verhaal van de 7 rovers, bijvoorbeeld)

voorbeeldje

In 16 tekens past "Dit is een voorb".
In 128 tekens past: "Dit is een voorbeeld van waarom 16 tekens te weinig zijn. Soms wil je gewoon meer tekst. Tussen haakjes: Caution: wet floor!    ".

Of een nuttiger voorbeeld: "Waarschuwing: na" versus: "Waarschuwing: natte vloer, waarschijnlijk glad. Loop voorzichtig! Wij zijn echt niet aansprakelijk voor eventuele gevolgschade  ".

Filmpjes waarin de werking te zien is staan op youtube: V 3.11, V 3.12

Sourcecode etc.

Download hier de sourcecode of de hexcode om direct in de microcontroller de laden. Plaats deze microcontroller vervolgens in de mk124 in plaats van de oorspronkelijke. De minikit zelf is te verkrijgen bij de lokale Vellemandealer (of online), en kost ongeveer €15.

V3.12 voor PIC16F628A

Sourcecode V3.12 is hier te vinden. Je kunt ook deze HEX file direct in een PIC16F628A programmeren. (of dat laten doen, als je geen PIC programmer hebt).

Versie 3.12 heeft de volgende volgende verbeteringen t.o.v. 3.11.

V3.12 voor PIC16F628

Hexcode voor de 16F628 is er ook. Let wel op dat de 16F628 een ander kloksignaal nodig heeft, zie het kopje "klokproblemen met de 16F628". Er zijn voor de 16F628 geen wijzigingen aan de source afgezien van de device declaratie en config. Aangezien de '628 en '628A vrijwel gelijk zijn zou het goed kunnen dat de hexcode ook niet verschilt, maar aangezien ik dat niet makkelijk kan controleren heb ik voor de zekerheid maar gewoon opnieuw gecompileerd.

V3.12 voor PIC16F84A

Voor wie nog een 16F84A heeft liggen en aan 64 tekens genoeg heeft heb ik ook een versie voor de 16F84A gecompiled: .BAS en .HEX. Hierbij is behalve de device declaratie en config ook de EEPROM grote aangepast. Om zelf voor een andere PIC te compileren is deze versie aan te raden: de eepromgrote is in deze versie als een constante gedefinieerd en kan dus eenvoudig gewijzigd worden.

V3.11 voor PIC16F628A

De oude source en oude hex zijn nog online ter referentie. Let op, deze oude versie heeft minder tekens, een lelijker font, geen easteregg, geen bootlogo, en een vervelende spatie bug... Ik raad dus iedereen de nieuwe versie aan.

Klok problemen met 16F628

De PIC op de vellemankit wordt geklokt d.m.v. een RC circuitje, te weten R10, de potmeter en C2. In het config word van de PIC moet dit ingesteld worden als RC oscillator. De PIC16C58B die velleman gebruikt ondersteunt deze klokoptie, evenals o.a. de 16F628A en de 16F84A. De 16F628 (zonder A) ondersteunt deze klokoptie niet, maar gebruikt een weerstand van de klokingang (pin 16) naar de -, dit is de ER klok optie.

Mocht u dus dus een 16F628 willen gebruiken, plaats dan een weerstand van pin 16 naar de GND. Verwijder R10 en C2 van de printplaat en plaats een brugje tussen die poot van de potmeter en van c2 die het dichts bij elkaar liggen. Vervang de potmeter door een exemplaar van 50K. De kloksnelheid is daarmee regelbaar van ongeveer 3-10Mhz. (Met de 4k7 potmeter van velleman loopt de klok te snel en de tekst dus ook).

Mocht ook hiermee de klok niet lopen, probeer dan de PIC te configureren voor interne 4MHz klok of plaats een extern kristal. Op 4Mhz klok loopt de tekst met een goed leesbare snelheid. De snelheid is met deze klokoptie uiteraard niet meer instelbaar.

Ander probleem met dit project?

Neem contact met me op.



Om deze pagina te kunnen printen, zonder de rest van de frameset, voeg &print toe aan de url, of klik deze link: print. Kleur wordt als het goed is genegeerd (spaart inkt). Zoniet: stuur me a.u.b. even een (liefst niet al te boos) mailtje en ik pas het aan.