Sida 1 av 2

hjälp: Datorkontrollerat ljus

Postat: 2 december 2007, 20:40:37
av th
Hej.
Jag vill bygga en matris med lampor eller LEDs som jag kan koppla till någon port på datorn (usb eller typ skrivarporten).
Lamporna måste gå att kontrollera individuellt, de kan alltså inte vara seriekopplade.
Sen ska det ju gärna vara en del lampor också, typ 5x10 eller så.

Tanken är att jag sedan ska skriva ett program i C, eller C++ som sedan kontrollerar matrisen. Programmeringen har jag inga problem med då jag är ganska skicklig programmerare, det är byggandet av matrisen som är problemet.

Någon som kan hjälpa mig med detta?

Postat: 2 december 2007, 21:01:48
av JimmyAndersson
Jag gjorde just det här schemat till en liknande grejj:

Bild

Det fungerar fint även för lampor.

Vill man tända LED18 så kopplar man in spänning på COL_3 och kopplar RAD_4 till GND.

edit:
Tyvärr finns det inte så många utgångar som behövs på parallellporten (som har flest utgångar), men det finns andra sätt att lösa det. En variant är att koppla en A/D-omvandlare till serie-porten och koppla någon form av drivning (t.ex en transistor) mellan matris-kopplingen och A/D-omvandlaren.

edit 2: Råkade byta plats på RAD_4 och COL_3 i texten ovan.

Postat: 2 december 2007, 21:05:58
av th
perfekt, tror jag kan lösa detta med hjälp av en annan guide jag hittade på nätet.

Blev lite knepigare när jag läste din edit, inte speciellt kunnig när det gäller elektronik

Postat: 2 december 2007, 21:12:50
av MadModder
Vill man verkligen styra varje lampa individuellt utan att scanna genom en matris, fixar man det enkelt med lite latchar.
Först de 8 bitarna i parallellporten, och så har man 4 styrsignaler utöver det. 3 av dessa 4 bitar till en 3-till-8-linje demultiplexer, och den fjärde som klocka. Så har jag till ett styrkort i en 486:a, och jag får då 64 individuella bitar. :)

finns i det här schemat. De intressanta delarna är U2, U3 och U4. De utgör själva styrningen. U2 och U3 är bara buffrar för att avlasta parallellporten. Sen på varje "kanal" måste man ha U1 i det här schemat. Blir ganska många kretsar...
Funkar som så att först sätter man de 8 databitarna, sen väljer man kanal med de 3 styrbitarna, och sen klockar man ut detta med den fjärde biten. Sen är de bitarna så tills nästa gång man väljer att ändra. :)

Postat: 2 december 2007, 21:37:27
av th
MadModder: nu blev jag helt borta

Postat: 2 december 2007, 21:45:24
av MadModder
Så blir det när man inte ska ha nån PIC eller så inblandad. Då blir det många IC-krestar. Riktiga män gör det med logik... :lol:

Alltså, de 8 databitarna (pin 2-9) är parallellkopplade till alla åtta 74374.
Tre bitar styr en 74238. De 8 utbitarna från den går till varsin 74374. Man kan då med tre bitar styra vilken 74374 man vill ändra bitarna på.
Den sista biten från porten är kopplad till aktiveringsingången på 74238.
När man ställt databitarna och valt krets, klockar man sista biten, och en klockpuls styrs ut till rätt krets, som då latchar in databitarna på sina utgångar och låser dem där. Tadaa! Ett 64bits minne...

Postat: 2 december 2007, 21:52:53
av JimmyAndersson
Så sant. :D

Men det är en riktigt snygg lösning. :)

Postat: 2 december 2007, 21:56:59
av th
Borde jag inte kunna programmera någon krets som kör ett test, och sen skickar ström på något sätt som tänder rätt lampa?

Tänkte att man kör med binärkod för att styra lamporna då.
har jag 8 portar (skrivarkabel) jag kan skicka ström från på datorn så kan jag ha en otrolig massa lampor.

00000001 = 1, lampa nr1
00000011 = 3, lampa nr3
10000001 = 65, lampa nr65
11111111 = 64+32+16+8+4+2+1 = 127, lampa nr127

1=ström på
0=ström av

if(port1 == true)
{
//tänd lampa 1
}
if(port1 == true && port2 == true)
{
//tänd lampa 3
}
if(port1 == true && port2 == true && port3 == true /.../ && port8 == true)
{
//tänd lampa 127
}

Postat: 2 december 2007, 22:04:37
av MadModder
Då kan du bara ha en enda lampa åt gången tänd. Du måste ha någon krets som håller kvar biten också, och du måste ha en klocksignal som talar om NÄR det är dags att ändra. Och förresten blir det 255 med 8 ettor. ;)
Vet ingen krets som har så många utgångar. Du måste använda latchar som minneskretsar om du ska ha så många lampor. Om du inte ska scanna genom en matris då.

Du har 12 bitar att tillgå som utgångar i parallellporten...

Postat: 2 december 2007, 22:34:04
av maha
En av Sodjans LED-matriser hade ju inte varit helt fel här. De kan man ju koppla in rakt på parallellporten om man vill, bara programmeringen kvar.

Postat: 2 december 2007, 22:36:46
av anlamotte
Det finns något liknande som använder ett plugin till winamp...

http://discolitez.com/
Titta under hardware -> deluxe för schema

Postat: 2 december 2007, 22:44:21
av MadModder
Ja, discolitez. funkar ungefär så som jag förklarade med latchar.
http://discolitez.com/pmwiki/pmwiki.php ... e.Deluxe32

Postat: 3 december 2007, 05:48:18
av th
MadModder skrev:Och förresten blir det 255 med 8 ettor. ;)
ja, så sant så.. glömde den första ettan på 128.
MadModder skrev:Du har 12 bitar att tillgå som utgångar i parallellporten...
Men, då kan jag göra som JimmyAndersson skrev, jag kan ha 12 kolumer bara jag har jordat alla raderna, eller hur?

edit: det går ju inte kom jag på, eftersom jag då skulle tända en hel rad då jag inte kan styra 12 jordningar på parallellporten.

men, 7*7 borde fungera.

edit2:
eller 12*7

Postat: 3 december 2007, 10:37:17
av limpan4all
Använd en MAX7221, då får du tre pinnar mot PC´n och möjlighet till 64 lysdioder. Ytterligare 64 lysdioder kräver bara ytterligare en pinne mot PC´n osv. så på bara de 8 databitarna på en parallellport får man 384 lysdioder maximalt.

EDIT: Använd en MAX7219 och kaskadkoppla alla kretsarna (DOUT till DIN på nästa SCLK och LOAD till alla). Och med en kollektiv LOAD-signal så klara du dig på 3 pinnar mot PC´n och har inga begränsningar i antalet lysdioder.

Postat: 3 december 2007, 17:59:24
av MadModder
Var får du dom där 7 ifrån då i 12*7?
En matris måste styras med både rader och kolumner. Utan extra logikkretsar är det största antalet lampor 36, 6*6.
Använder du klockade räknare (t.ex. 4017) kan du i princip bygga upp en oändligt lång matris som är 11 hög. En bit måste användas som klocka.