Ik wil graag op een 2*16 lcd scherm teksten programeren zonder elke keer de PIC(16F628A) te moeten programeren.
Ik wil dat doen door een 3*4 toetsenbordje te gebruiken, waarmee ik dan de letters in voer(zoals bij het smsen).
Ik wil dus bijvoorbeeld de 2 gebruiken voor a, b of c. De 3 voor d, e of f enzovoort.

Weten jullie misschien hoe ik dat kan doen?

Ik dacht zelf de nummers eerst te koppelen aan de letters(hoe weet ik nog niet) Ik wil er ook een extra knopje bij maken voor de backspace en de enter(Print op LCD).
De teksten van de personen moeten na de Printactie op de eerste regel komen te staan waarna de andere persoon iets op de 2de regel kan schrijven.
Als de teksten te lang zijn wil ik se als Shifting tekst weergeven.

Kunnen jullie me daar een beetje mee op weg helpen?

Da's wel een hele open vraag...

Waar programmeer je in? C, assembler, PICBASIC...

[edit]
Eigenlijk is het een gesloten vraag met als antwoord ja of nee :-)

[Bericht gewijzigd door picsels op (35%)]

ik snap je eerste zin niet geheel, of je misbruikt je pic voor iets waar hij niet voor gemaakt is :)

Ik denk dat 'ie bedoelt: de PIC niet steeds her-programmeren.

Het lijkt me dat Jorim23 idd voor elke tekst zijn PIC opnieuw programmeert.

Ben je niet eenvoudiger uit door gewoon een PCtoetsenbord via een µC aan je LCD te hangen (met een compiler die een PS/2 library heeft is dat zo gepiept)?

Ik denk dat ik Jorim wel snap.
Hij wil de PIC zo programmeren dat hij zelf text kan weergeven op het scherm.
Dus een paar loopjes met inkey, waarbij er geteld wordt hoevaak een toets ingedrukt wordt. Dat correspondeert dan weer met een letter of een spatie.
Het Hekje bv als Backspace gebruiken etc...

Maar dan moet er ook weer iets bij dat de cursor 1 postitie opschuift.
Het is met wat nadenkwerk wel mogelijk...

vergeet dan de knopjes niet voor backspace, space, volgende regel, evt navigeren met pijltjes toetsen

mischien een MAX 232 eraan en dan via via de COM-opoort en een terminal programma even nieuwe tekst erop zetten

Of als je met PICBASIC werkt: gebruik een (sony) IR remote: genoeg knoppen voor alle functies (ervan uitgaande dat je met 0..9 de letters á la SMS erop zet).

Op 1 oktober 2007 19:35:47 schreef shiptronic:
vergeet dan de knopjes niet voor backspace, space, volgende regel...

Worden beide gedaan via de "0" toets.
Backspace kan met het hekje...
Navigeren zou mogelijk horizontaal kunnen. Vertikaal lijkt me onnodig met een 2 regel-displaytje

Ik bedoel inderdaat hetzelfde als Fantomaz zegt alleen zeg ik t iets anders :p, maar de bedoeling is gelukkig duidelijk.

Wat ik me nu trouwens af vraag, kan dit wel met een 16F628?Of is die te klein qua aansluitingen(voor het lcd-tje 6, knopjes een stuk of wat)

Op 1 oktober 2007 19:52:24 schreef jorim23:
Wat ik me nu trouwens af vraag, kan dit wel met een 16F628?Of is die te klein qua aansluitingen(voor het lcd-tje 6, knopjes een stuk of wat)

het kan prima, als je het LCD in 4-bits mode aansluit en de knopjes als matrix, waarbij je de datalijnen van de LCD wee kan hergebruiken. of je neemt geen knopjesmatrix maar een PC toetsenbord, kost maar 2 pinnen.

Ik heb hier een knopjesmatrix liggen. Hoe moet je een LCD in 4-bits mode aansluiten dan? Is dat zoals beschreven staat in de picbasic cursus?

Op 1 oktober 2007 19:59:45 schreef jorim23:
Ik heb hier een knopjesmatrix liggen. Hoe moet je een LCD in 4-bits mode aansluiten dan? Is dat zoals beschreven staat in de picbasic cursus?

Ja.
4 datalijnen. Een R/W en een EN(able).
Mochten die datalijnen en die andere twee in de weg zitten met het toetsenbordje, kun je de defaults van de datalijnen en de R/W en EN aanpassen zodat ze via een andere weg aangestuurd kunnen worden.

@ picsels: Ik programeer met basic.
@fantomaz: Kijk ff in je inbox.

Oke, ik heb het invoeren van nummers door. Nu heb ik nog 2 vraagjes.
1. Hoe kan ik de nummers die ik invoer omzetten naar letters? Bijvoorbeeld: ik druk 1 keer op de 2 en krijg een a. Ik druk 2 keer op de 2 en ik krijg een b. etc.

2. Hoe kan ik er voor zorgen dat ik na een punt automatisch een hoofdletter krijg?

1. gebruik LOOKUP nummer, [ "abc" ]
2. gebruik LOOKUP nummer, [ "ABC" ]

waarom gebruik je niet gelijk T5 ? dat is een stuk simppeler met indrukken, wel een extra woorden boek aan leggen natuurlijk :)

@ picsels: Ik denk dat ik het niet helemaal snap wat je bedoelen. Zou je het iets gedetailleerder kunnen uitleggen?

@ shiptronic: Dat lijkt me meer een optie voor later, maar wel een goed idee. Dank je.

[Bericht gewijzigd door jorim23 op (35%)]


dim var as byte
var = 0
start:
gosub toetsherkenning
if toets = 2 then             ;als de toets ingedrukt is dan...
 gosub toetsherkenning
 while toets = 2              ;afdwingen toets los te laten
  wend
 inc var                       ;variabele vergroten
  if var = 1 then print at x,y, "A"
  if var = 2 then print at x,y, "B"
  if var = 3 then print at x,y, "C"
  if var = 4 then var = 1      ;vaker dan 3x wordt weer 1
endif
goto start

Even een opzetje hoor...
Die gosub zou naar een lookup commando moeten gaan, en daar zou gezien moeten worden welke toets ingedrukt wordt.
Je zou voor elke toets zo'n stukje code neer kunnen planten. Ieder uiteraard met zijn eigen corresponderende letters en/of opdrachten.
Je moet er nog een timertje in verwerken die je dwingt elke herindrukking van een toets binnen een gestelde tijd te doen omdat hij anders de dan aanwezige letter neerzet en een positie verder gaat.
Zoals je mobiel dat ook doet.

Verder moet je de XY assen van de printopdracht moeten laten verschuivenwanneer er een letter gezet wordt.
MAar dit is even de basis...

Dat lookupverhaal ken ik niet.
het kan zijn dat het wat anders is dan wat ik bedoel.
Ik heb ook de instructie INKEY in mijn hoofd en mogelijk dat ik de boel doorelkaar haal.

letter = LookUp var, [ "ABC" ]
Print At x,y, letter

Op 2 oktober 2007 22:45:30 schreef picsels:

letter = LookUp var, [ "ABC" ]
Print At x,y, letter

Wat doet lookup in dat verhaal??

even offtopic. in dit topic zitten erg veel posts van members... :D

Ik lees alleen even mee over dat loopup gedeelte

[Bericht gewijzigd door Mitchell S op (28%)]

Misschien even de help raadplegen?

Syntax
Variable = LOOKUP Index , [ Constant { , Constant... etc } ]

Overview

Look up the value specified by the index and store it in variable. If the index exceeds the highest index value of the items in the list, then variable remains unchanged.

Operators

  • Variable - a constant, variable, or expression. This is where the retrieved value will be stored.
  • Index - a constant or variable. This is the item number of the value to be retrieved from the list.
  • Constant(s) - any 8-bit value (0-255).A maximum of 255 values may be placed between the square brackets, 256 if using a 16-bit core device.

Oh ja, tip: gebruik niet de LOOKUPL, daar zit een bug in.

Op 2 oktober 2007 23:24:33 schreef Fantomaz:
[...]

Wat doet lookup in dat verhaal??

Fantomaz, LOOKUP is gewoon een instructie, kijk dus even in de handleiding.
Kortgezegd komt het hierop neer.
De waarde van 'Index' bepaalt welk karakter wordt gekozen uit de opgegeven lijst (0 is het eerste karakter, 1 het tweede, enz.)

Dus:
PietJanHein = LOOKUP Index, ["ABCDEF"]

Als 'Index' de waarde 0 heeft, dan krijgt 'PietJanHein' de waarde 65 (dat is de ASCII code voor 'A')

Als 'Index' de waarde 1 heeft, dan krijgt 'PietJanHein' de waarde 66 (dat is de ASCII code voor 'B')

Als 'Index' de waarde 4 heeft, dan krijgt 'PietJanHein' de waarde 69 (dat is de ASCII code voor 'E')

Lees ook LOOKUPL beter in sommige situaties.

EDIT:
LOOKUPL een bug?
Dat is nieuw voor mij.