Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: 24 x 8 LCD via compoort  (gelezen 1855 keer)

Lithium

  • Gast
24 x 8 LCD via compoort
« Gepost op: 2008/02/10, 17:42:48 »
Beste forum gebruikers,

Ik ben momenteel bezig met een lcd schermpje van 24 x 8 LCD
Foto:
http://www.voti.nl/common/lcd-4-a.jpg

Die kan ik aan mijn computer aansluiten en er tekst op laten komen.
Nu heb ik daar een voorbeeld programma van dat is gebschreven met python maar het is voor windows.
Er staan wat error's in maar wat het betekent en wat ik moet veranderen weet ik niet.
Ik hoop dat iemand mij kan helpen dit probleem op de lossen....

De code:
def Bar( C, N ):
   S = ''
   for Dummy in range( 0, N ):
      S = S + C
   return S
   
def Special( C ):
   if C <= 0x20:
      return chr( 0x5C ) + chr( 0x20 + C )
   if C < 0x7F:
      return chr( C )
     
def Font( N ):
   return chr( 0x5C ) + chr( 0x43 ) + chr( 0x20 + N )  
     
     

CRLF      = chr( 0x0A ) + chr ( 0x0D )
Noscroll  = chr( 0x5C ) + chr( 0x41 ) + chr( 0x30 )
Clear     = chr( 0x5C ) + chr( 0x40 ) + chr( 0x20 ) + chr( 0x30 )

def Msg_1( Port ):
   Port.write( Clear + Noscroll + Font( 1 ))        
   Port.write( Special( 17 ) + Bar( Special( 22 ), 22 ) + Special( 16 )  + CRLF )
   Port.write( Special( 1 ) + "                      " + Special( 2 )+ CRLF )
   Port.write( Special( 1 ) + "     LCD display      " + Special( 2 )+ CRLF )
   Port.write( Special( 1 ) + "                      " + Special( 2 )+ CRLF )
   Port.write( Special( 1 ) + "   8 lines * 24 char  " + Special( 2 )+ CRLF )
   Port.write( Special( 1 ) + "      19k2 serial     " + Special( 2 )+ CRLF )
   Port.write( Special( 1 ) + "       interface      " + Special( 2 )+ CRLF )
   Port.write( Special( 30 ) + Bar( Special( 24 ), 22 ) + Special( 31 )  + CRLF )

def Msg_2( Port ):
   import sys, time
   if len( sys.argv ) > 4:
      Port.write(
         chr( 0x5C ) + chr( 0x40 ) + \
         chr( 0x20 + int( sys.argv[3] )) + chr( 0x31 + int( sys.argv[4] )))
   else:
      for N in range( 1, 4 ):
         for P in range( 0, 2 ):
            Port.write(
               chr( 0x5C ) + chr( 0x40 ) + \
               chr( 0x20 + N ) + chr( 0x31 + P ))
            time.sleep( 1 )

def Main():
   import sys, serial, time

   if len( sys.argv ) < 3:
      print "usage: lcd4 [

]"
      print " = com1, com2, com3, etc"
      print " = 1 : text 'LCD, 32 * 8, serial'"
      print " = 2 : font test, default: show all 3 fonts, pages 0 and 1"
      print "optional arguments when nr=2 : = font (1..3),

= page (0,1)"
      return
     
   Port = serial.Serial(
         port      = sys.argv[ 1 ],
         baudrate  = 19200,
         stopbits  = serial.STOPBITS_ONE,
         timeout   = 2.0 )
         
   Port.setDTR( 1 )
   time.sleep( 0.1 )
   Port.setDTR( 0 )
   time.sleep( 0.1 )
     
   exec( 'Msg_' + sys.argv[ 2 ] + '( Port )' )

   Port.close()
   
Main()
Dit is de error die ik krijg:

usage: lcd4 [

]
  = com1, com2, com3, etc
  = 1 : text 'LCD, 32 * 8, serial'
  = 2 : font test, default: show all 3 fonts, pages 0 and 1
optional arguments when nr=2 : = font (1..3),

= page (0,1)edit:
In windows heb je standaard een programma meegeleverd waarmee je data naar poorten kan sturen ben de naam helaas even kwijt.
Het zit bij bureau accesoires, is er ook zo iets alleen dan voor in ubuntu?

Mvg Lithium


Offline kennywest

  • Lid
    • http://kennywest.blogspot.com
24 x 8 LCD via compoort
« Reactie #1 Gepost op: 2008/02/10, 17:55:25 »
Je moet de nodige argumenten meegeven als je het programma uitvoert. Dus, bijvoorbeeld:
lcd4 com1 1Dit zal de communicatie via com1 proberen en een voorbeeld tekst tonen.

Lithium

  • Gast
24 x 8 LCD via compoort
« Reactie #2 Gepost op: 2008/02/10, 17:59:12 »
Hallo,

Bedankt voor de snelle reactie.

Na het proberen krijg ik de volgende error:
Traceback (most recent call last):
  File "/home/erik/lcd4.py", line 73, in
    Main()      
  File "/home/erik/lcd4.py", line 62, in Main
    timeout   = 2.0 )
  File "/home/erik/serialposix.py", line 181, in __init__
    raise serialutil.SerialException, "could not open port: %s" % msg
serialutil.SerialException: could not open port: [Errno 2] No such file or directory: 'com1'
Werkt het anders dan in windows of is dat hetzelfde?
Als er een andere manier is om de compoort aan te sturen is dat ook geen probleem, maar ik moet wel weten hoe ik er tekst naar toe kan sturen.

Offline kennywest

  • Lid
    • http://kennywest.blogspot.com
24 x 8 LCD via compoort
« Reactie #3 Gepost op: 2008/02/10, 18:47:33 »
Probeer eens:
lcd4 /dev/ttyS0 1ttyS0 zou de eerste com poort moeten zijn.

Lithium

  • Gast
24 x 8 LCD via compoort
« Reactie #4 Gepost op: 2008/02/10, 19:25:35 »
Hallo,

Ik ben ondertussen ook op internet wezen zoeken.
ik kwam dit tegen:
http://pyserial.sourceforge.net/
Dat heb ik geinstalleerd en heb het geprobeerd, ben nu wat aan het solderen.
Zou dat ook werken of moet het persee met het bestand wat ik heb?


Wat u neergezet had werkt overgens!
Bedankt!

Offline Dirk Tas

  • Lid
24 x 8 LCD via compoort
« Reactie #5 Gepost op: 2008/02/10, 20:03:05 »
Citaat van: Lithium
Hallo,

Ik ben ondertussen ook op internet wezen zoeken.
ik kwam dit tegen:
http://pyserial.sourceforge.net/
Dat heb ik geinstalleerd en heb het geprobeerd, ben nu wat aan het solderen.
Zou dat ook werken of moet het persee met het bestand wat ik heb?


Wat u neergezet had werkt overgens!
Bedankt!
Hallo,


Op Phoronix staat een artikeltje over een matrix orbital display, misschien eens interesant om lezen
http://www.phoronix.com/scan.php?page=article&item=146&num=3

Er zit blijkbaar ook iets in de Universe pakketten, Package: lcdproc (0.4.5-1) [universe]
dat leid naar de volgende site
http://www.lcdproc.org/

en dit ziet er ook goed uit, http://www.cyberciti.biz/tips/download-linux-lcd-display-driver.html misschien heb jer er iets aan.
Ubuntu User #14670

Lithium

  • Gast
24 x 8 LCD via compoort
« Reactie #6 Gepost op: 2008/02/10, 20:09:32 »
Hi,

Bedankt voor de links

Ik zal er eens doorheen neuzen.

Ik ben al iets verder dan de vorige keer.
Als ik het bestand open dan krijg ik wel een aantal tekens op het scherm maar het is willekeurig en altijd anders.

ook als ik ser.write("Hello") doe krijg ik iets anders dan Hello op me scherm

Ligt dit aan de baud breette?

Offline eendje

  • Lid
24 x 8 LCD via compoort
« Reactie #7 Gepost op: 2008/02/10, 21:19:24 »
Kan die display ASCII karaketsr wel omzetten in het laten oplichten van de goede beeldpunten? Je kunt ook gewoon hexadecimale tekens direct schrijven zoals in je eerdere programma staat, bijv:

ser.write("\x07") voor hexadecimale 7

Let op date altijd door pySerial een return wordt toegevoegd aan het eind.

Je kunt ook via interceppty volgen welke data uit je programma er naar de seriƫle poort wordt gestuurd. Zie daarvoor ook mij blog: http://dorpsplein.blogspot.com/search/label/Python
Een dag niets geleerd is een dag niet geleefd!
Ik blog dus ik besta!
__________________________________________________________
Een vraag? Heb je al eens gekeken op: http://wiki.ubuntu-nl.org/FAQ?

Lithium

  • Gast
24 x 8 LCD via compoort
« Reactie #8 Gepost op: 2008/02/10, 21:27:58 »
Ik dacht dat ik mijn probleem gevonden had...
Ik heb een max232 die de data omzet en die had geen spanning op de voedings pinnen maar dat maakt geen verschil... :(

De hex decimaal code werkt helaas ook niet.

edit:
Ik heb je link eens bekeken en gedaan wat er stond het werkt allemaal prima en krijg netjes in mijn termial terug wat ik stuurde.

Dan denk ik dat het probleem ergens anders ligt? maar waar?
Door degene die iets van elektronica afweten heb ik een pdf bestand met daarin uitleg en andere dingen over het scherm

http://www.voti.nl/docs/lcd-4.pdf

Ik hoop dat dit wat opheldering brengt?

Lithium

  • Gast
24 x 8 LCD via compoort
« Reactie #9 Gepost op: 2008/02/11, 15:38:57 »
Hallo,

Even een dubbel post van mijn kant.
De volgende dag en ik probeer het lcd scherm eens op 9600baud en hij werkt perfect hahah
Overal staat dat ik hem nodig heb op 19200 baud maar op 9600 doet hij het dus

Bedankt!

Nu eens knutselen of ik wat kan maken

Misschien een domme vraag maar waar haal ik alle commando's vandaan?

Ik kom er achter dat ik 1 probleem heb, als ik een spatie in mijn tekst zet en dat naar mijn lcd stuur krijg ik de tekst tot aan de spatie en verder krijg ik niks meer.
Bijv. testing lcd screen
Die ik alleen testing staan
Wat kan daar het probleem van zijn?