Enkel USB-ansluten display

Berätta om dina pågående projekt.
Användarvisningsbild
PHermansson
EF Sponsor
Inlägg: 4340
Blev medlem: 22 december 2004, 00:46:38
Ort: Särestad Grästorp
Kontakt:

Enkel USB-ansluten display

Inlägg 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.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Nice!
probe
Inlägg: 282
Blev medlem: 2 februari 2008, 21:04:26
Ort: Stockholm

Inlägg av probe »

Ett råttbo, men blev snyggt och verkar fungera bra. Hur driver du displayen från PC-sidan?
Användarvisningsbild
PHermansson
EF Sponsor
Inlägg: 4340
Blev medlem: 22 december 2004, 00:46:38
Ort: Särestad Grästorp
Kontakt:

Inlägg 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);
probe
Inlägg: 282
Blev medlem: 2 februari 2008, 21:04:26
Ort: Stockholm

Inlägg 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...
Användarvisningsbild
JimmyAndersson
Inlägg: 26548
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg 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?
Användarvisningsbild
PHermansson
EF Sponsor
Inlägg: 4340
Blev medlem: 22 december 2004, 00:46:38
Ort: Särestad Grästorp
Kontakt:

Inlägg 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.
Skriv svar