Pagina's

zaterdag 15 februari 2020

LCD display 40x4

15-2-2020.

Ik wil op twee plaatsen een flink display plaatsen: In de huiskamer als algemeen bekijk- en bedienstation, en in mijn werkkamer als masterstation.

Nu ben ik al aardig lang bezig om het gekochte display werkend te krijgen.
Op internet is best wel veel te vinden hierover (ik had geen gegevensbladen), het kan bijna niet mis gaan.
Maar bij mij ging het dus mis.

Ik bleek te beschikken over een bijna niet bestaand display. Tenminste, niets ervan op internet te kunnen vinden.
Nu blijken er verschillende pin-layouts te bestaan voor de displays 40x4. En als jouw display nergens te bekennen is op internet, wordt het toch erg moeilijk.

Diverse fora op internet zijn nauwelijks ervaren met dit grote display.
De één heeft het over het "gewoon aansluiten op de I2C bordje" en het ontkennen van problemen, tot het diep ingaan op het verschijnsel 40x4. Want, er zitten hier 2 stuks stuur-ic's in, elk steeds voor 2 regels. En er moet hier bewust op geschakeld worden.
De éne heeft het over buitenom schakelen van de E-lijnen (want hierover gaat het), de ander gebruikt de niet gebruikte RW-lijn als tweede E-lijn.

Nu heb ik al iets gevonden waar ik straks wat aan heb, en kan ik zelfs met I2C werken. En dat kost me geen I/O-lijnen, want I2C heb ik al in gebruik, en plug ik er zo bij.

Na overleg met de leverancier van het display, heb ik de display's teruggestuurd. Want ook zij zelf kwamen er niet uit.

Bij een andere webwinkel heb ik er 2 gekocht. jaja, nu wel met documentatie.
Ze hadden er zelfs twee, elk met een tegengestelde pin-layout van de datapennen. Maar wel duidelijk!

Het is dus nu wachten op het display.
_____________________________________________________
7-3-2020.

De nieuwe displays heb ik reeds binnen. Het is een veel gebruikte versie, dus dat gaat helemaal goed komen.
Binnenkort ga ik er mee aan de slag.
_____________________________________________________
30-3-2020

Na een drukke periode en een tussengeschoven project "koelkast", heb ik afgelopen week tijd kunnen vinden om eens met een display aan de gang gaan.

Dit display is in ieder geval een gangbaar type; is veel te vinden op internet.
"Dat gaat dus goedkomem"..... jaja...

Natuurlijk met I2C aan de gang gegaan. Die kreeg ik echt niet werkend. Ja, chinese tekens (is 2e tekenset in het geheugen), maar europees... ja, uiteindelijk wel íets. Maar het leek wel alsof er 2 datalijnen verdraaid waren. En dat klopte ook wel als ik naar de tekenset keek. Het waren de 2 laagste bits van de 4 datalijnen.
Dan zou je denken, dan draai je gewoon die twee om? Ja, eigenlijk wel zou je denken. Maar die 4 datalijnen worden ook gebruikt voor de commando's. Dus als ik twee datalijnen omdraai, heb ik gewoon helemaal niets meer, want het display weet dan echt niet meer wat het moet doen.
Conclusie: Vergeet het I2C maar!!

Toen werd het spannend.
Schema's (van internet) opgezocht, hoe aan te sluiten.
Oei, erg veel variaties hoor. Maar ook heel erg veel commentaren in fora's. Doolhof alom dus.

Resultaat was wel een meer stabiele display, maar steeds 2 regels tekst. Ook mijn bilbliotheken voor het aansturen van dit display waren een puinhoop geworden.

De bibliotheek was een verhaal appart!
Een bibliotheek is een verzamelplaats van stukken programma met heel specifieke taken. (klok, display, vochtsensor, temperatuur en ga zo maar verder). Zo'n taak kan je gewoon opnemen in je eigen programma.
En binnen zo'n takenpakket zijn er ook weer heel erg veel varianten, En dit is dus écht een nadaal van open-source. Dus wederom een zoektocht....

Nu kent Arduino twee plaatsen voor de bibliotheek. Eén bij de installatiebestanden van Arduino, en één in een zelfgemaakte map arduino/librarys in documenten. Arduino accepteert beide.

Het grote nadeel daarvan is dat je niet weet waar arduino die gegevens vandaan haalt. Als je meerdere versies in die vereiste mappen hebt staan, dan wordt het dus erg lastig voor de programmeur (ik dus). Je denkt een goed programma gevonden te hebben, installeerd die en....... doet wéér niks. Maar ondertussen neemt arduino gewoon het oude programma, terwijl je denk dat het de nieuw neemt, of eigenlijk niet zo bij nadenkt.

Uiteindelijk ben ik hier achtergekomen. Ik heb alle bilbliotheekprogramma's in een tijdelijke bibliotheekmap gezet (want weggoien leek me te rigoreus), zodat ik zeker wist dat arduino het door jou gekozen programma zou nemen.

Ik had inmiddels al gezien dat er veel te licht wordt gedacht in fora's over dit grote display.
Ik herinnerde me iets gezien te hebben over twee keer een grogramma voor een 40x2 te gebruiken. Want een goed werkend programma voor een 40x2 heb ik, alleen wist ik niet hoe ik er twee moest benoemen.
Na een korte zoekactie bleek ik zelf de link van dat forumbericht opgeslagen te hebben.
Een voorzichtig hoera..... en.... HET WERKT!!!!!
Ppppppfffffffff..........

En dan nu maar even een fotootje erbij gemaakt. Dit is één van de teksten die ik gebruikte in het projectje "laatste werkweek".

Het is welliswaar geen I2C, maar ik ben zeer verheugd met dit resultaat.
Hiervoor moet ik 7 datalijnen van de arduino gebruiken. En ik zal dus in complexere projecten aan de slag moeten met uitbreidings-ic's. Nu heb ik er pas 2 gekocht (kosten geen drol), dat gaat dus goedkomen.
Een voorbeeld waar ik zo'n ic kan gaan inzetten is het toetsenbord. Maar dat is een ander blog.

Het programma hiervoor is wat complexer dan gewoonlijk.
Normaal geef je een positie op in een kolom,rij-combinatie, en je geeft een print. Die tekst begint dan op die plaats die je hebt opgegeven.

Maar zoals ik even terug al zei, ik heb de bibliotheek gebruikt voor een 40x2 display, dat ik 2x gebruik.
In de definities van het te schrijven programma, moet je dus ook 2 displays benoemen, bijvoorbeelt als LCD1 en LCD2. En die moet je ook steeds goed uit elkaar houden, wat anders komt er tekst op een plaats te staan die je helemaal niet wilt.
Het programma wordt daardoor best complex. Het wordt al helemaal lastig als je naar posities op het display wilt rekenen, dus het programma zelf laten bepalen waar iets gezet moet worden. En dat komt best wel vaak voor.

Nu hebben ze functies, of routines, bedacht in de programmeertalen. En die zijn daardoor heel mooi te gebruiken.
Zo heb ik de plaatsbepaling al in één enkele functie kunnen stoppen.
De print is een ander ding, maar daar zal ik ook wel uitkomen. Want ik heb er nog niet echt veel tijd in gestoken.
_____________________________________________________
5-4-2020
En dat is nu gelukt voor de meest gangbare data. Dit betekend dan voor vaste teksten en voor variabelen zonder opmaak.

Ik heb nog iets bijzonders gezien: ik kan twee routines met dezelfde naam opnemen in mijn programma, maar met verschillende opmaak.
Voor zowel de vaste tekst als voor de variabelen heb ik twee verschillende functies gemaakt. Arduino neemt zelf de juiste. En dat is een meevaller.

1 opmerking: