Sida 1 av 1

Enkel USB-ansluten display

Postat: 28 februari 2008, 20:13:37
av PHermansson
Som en del i mitt pågående väderstationsbygge har jag fixat den display som ska sitta på väggen och visa väderdata. Samma dator som samlar in väderinfo spelar även internetradio och annat, så displayen används även för att visa låtinformation. För detta används inte LCDProc som inte fungerade bra med displayen, istället används ett PHP-script som skriver till displayen via ett serieportsbibliotek.

Kretsen som används för att konvertera HD44780->USB är enkel:

Bild

Schemat finns här: http://forums.bit-tech.net/showthread.php?t=115461.
Dremeln fick slita lite för att displayen skulle få plats i lådan, trångt var ordet :) Men skam den som ger sig, den gick ned till slut. Fick uppfinna ett nytt sätt att skruva ihop lådan för att det skulle funka...

Bild

Dessa billiga svarta plastlådor är inte särskilt snygga, särskilt inte sedan man satt Dremeln i dem (naturligtvis slinter man lite och så...). Tanken var att måla den med svart sprayfärg, men någon sådan stod inte att finna. Vad som däremot fanns var en gråmelerad fälgfärg. Tja, varför inte? Resultatet blev bra, men kunde naturligtvis blivit bättre. Man ska inte stressa med sprayfärg...
Har idag kodat en del och testat att displayen fungerade. Visst blev det fint?

Bild

Tyvärr blev färgen på lådan inte så bra på bilden, den är mörkare och mer levande i verkligheten. Displayen visar låtinfo från MPlayer, data från 1-wire-nätet (DS2481 + DS2450/MPXA4115) och datum+tid.

Postat: 28 februari 2008, 20:55:57
av squiz3r
Nice!

Postat: 28 februari 2008, 21:02:33
av probe
Ett råttbo, men blev snyggt och verkar fungera bra. Hur driver du displayen från PC-sidan?

Postat: 28 februari 2008, 22:26:46
av PHermansson
Ett råttbo javisst, den ska med fördel betraktas från framsidan :)
Den dyker upp som en virtuell serieport i datorn och emulerar en Matrix Orbital LCD. För att skriva till displayen skickar jag ren text till serieporten, sedan finns det kommandon för att välja rad, rensa skärmen osv. Jag använder ett serieportsbibliotek för PHP nu, mest för att kunna läsa av den enkoder som jag ännu inte monterat. En exempel på kod:

Kod: Markera allt

include "php_serial.class.php";

$serial = new phpSerial;

$serial->deviceSet("/dev/ttyACM0");

$serial->deviceOpen();

$row1 = date("ymd-H:i:s");
$command=chr(254).chr(71).chr(1).chr(1);
$serial->sendMessage($command);
$serial->sendMessage($row1);

Postat: 29 februari 2008, 21:02:52
av probe
Tusan vad trevligt... *börjar fundera på saker att använda den till*

Känns som något man bara måste bygga iaf - skönt att slippa äckliga parallelportar iaf...

Postat: 1 mars 2008, 04:08:00
av JimmyAndersson
Probe:
Det är väl inget fel på parallellportar? Många av mina bästa vänner är parallellportar!


PHermansson:
Mycket trevligt projekt. :tumupp:
Det serieportsbiblioteket använder jag till bl.a att styra en webkamer.
Men hur fungerar $row och $command? Kan du bestämma på vilken rad som det du skickar ska hamna?

Postat: 1 mars 2008, 16:35:07
av PHermansson
Tackar!
Ja det är gott att slippa parallellporten, en utdöende port som trots stor kontakt och fet kabel inte ens erbjuder en vettig strömförsörjning.

Jimmy: $row använder jag som en lokal variabel för att ange vad det ska stå på raden ifråga. $command använder jag för styrkoder till displayen, dessa är kompatibla med Matrix Orbital's USB-displayer.

Kod: Markera allt

Supported commands:
Position: 254 71 [col] [row]
Home: 254 72
Underline on: 254 74
Underline off: 254 75
Blink on: 254 83
Blink off: 254 84
Define custom: 254 78 [c] [8Bytes]
Clear display: 254 88
Backlight on: 254 66 [mins] (mins is just discarded)
Backlight off: 254 70
Backlight brightness: 254 152 [value]
GPO off: 254 86 [1-4]
GPO on: 254 87 [1-4]
Set GPO PWM: 254 102 [1-4] [0-100] (works as a percentage)
Buzzer off: 254 86 5
Buzzer on: 254 87 5
Så jag kan välja rad med "Position: 254 71 [col] [row]", alltså "$command=chr(254).chr(71).chr(1).chr(1);
$serial->sendMessage($command);" i min kod.