Snabbprojekt ledmatris

Berätta om dina pågående projekt.
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Snabbprojekt ledmatris

Inlägg av mullemeck »

Blev så avundsjuk när jag hörde att många andra byggde på matriser och jag inte har gjort någon så det fick bli att rota fram ett gammalt projekt och sno alla lysdioderna därifrån och bygga sig en matris.

Till första versionen använde jag mig av två 4017 för att styra kolumnerna men då de även krävde en transistor per kolumn så gick jag senare över till att använda 2 74374:or istället.

matrisen är 7x18 men då 74374:orna endast klarar av att hantera 8 kolumner var så använder jag bara 16 rader.

I nuläget kan den visa 3 olika meddelanden som vardera är max 30 tecken långa.

Dessa meddelnaden skicka man in från ett litet program i datorn där man även ställer in scroll hastigheten och hur stor pause det ska va mellan meddelandena.

Credits till $tiff för halva teckentabellen..

lite bilder på schabraket:


Bild

Bild

Bild

Bild

Bild

Och en liten film
http://www.kakmonster.com/mulle/matris/ledmatris1.WMV


Och två bilder på den ultimata consolbaserade mjukvaran:D

Bild

Bild
Senast redigerad av mullemeck 14 augusti 2004, 21:07:38, redigerad totalt 1 gång.
Användarvisningsbild
Chribbe76
EF Sponsor
Inlägg: 1167
Blev medlem: 17 januari 2004, 22:43:17
Ort: Stockholm

Inlägg av Chribbe76 »

är 74374 en flip-flop???
Vad driver du med på radsidan?
Vilken Pic använder du?
Hur mycket ström matar du lysdioderna med?
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

74374:an är en Octal D-type flip-flop, hela namnet från elfa :D

På radsidan driver jag direkt från pic:en, nu har jag typ 150ohms motstånd i serie och när jag mäter då så går där ca 1-2mA, kan nog sänka värdet på de motstånden ganska kraftigt egentligen.

Just nu sitter det inkopplat på en Pic16f877a, men sen till den slutgiltliga matrisen ska en lite mindre PIC16LF876:a får agera Hjärna.
Användarvisningsbild
MadModder
Co Admin
Inlägg: 29995
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

Hoho! Fin pappskiva :D
Vad kör du med för programmerare och mjukvara? Picsy?
Själv tänkte jag börja med Olimex PIC PG2, baserad på JDM...
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

Har en fin Isp-Pro från elfa.. blev efter en stund trött på att inte få igång mina hemmabyggda programerare så det fick bli en färdigbyggd..

Sen så skriver jag koden för Pic:en i basic och för programmet i datorn i C++
Användarvisningsbild
MadModder
Co Admin
Inlägg: 29995
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

Ahaa... får väl se om jag har större tur då :D
99nvbjed
Inlägg: 70
Blev medlem: 27 maj 2004, 15:40:47

Inlägg av 99nvbjed »

Får man kika lite på källkoden? Har nyss börjat med PIC:ar och är lite sugen på att bygga en liknande sak, fast alla exempel jag hittat är skrivet i ASM vilket jag har lite svårt för :?. Skulle va kul att se hur koden ser ut i basic!
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

Jo kan du väll få, den är inte så vacker och flera namn på variablerna är inte de mest genomtänkta.. blev det som först poppade upp i huvudet efter en stund.

Om det är nått du inte fattar så kan jag försöka förklara det, om jag själv minns hur jag gjorde...:doh:


Här kommer hela koden som "ritar" ut bilden, sen efter slutet så är där ca 1400 rader teckentabell till som inte är så spännande att titta på.

Kod: Markera allt

DEFINE OSC 20
DEFINE DEBUG_REG PORTC
DEFINE DEBUG_BIT 3
DEFINE DEBUG_BAUD 115200
DEFINE DEBUG_MODE 1
out VAR BYTE[96]
out1 VAR BYTE[96]
tmp VAR BYTE
tmp1 VAR BYTE
moj VAR BYTE
scroll VAR BYTE
temp VAR BYTE
temp1 VAR BYTE
indata VAR BYTE[30]
num VAR BYTE
letters VAR BYTE
temp1 = 11
speed VAR BYTE
messnum VAR BYTE
mojn VAR BYTE[3]
tmp2 VAR BYTE
tmp3 VAR BYTE

delay VAR BYTE
delaylong VAR WORD



num = 0

TRISD = 0
TRISB = %00100000

intro:
IF PORTB.5 = 1 Then Inputt
GoSub memr

loop:
IF PORTB.5 = 1 Then Inputt
	'print pic
	For moj = 0 to speed
	
		For tmp1 = 0 to 15
		
			LookUp tmp1,[254,253,251,247,239,223,191,127,254,253,251,247,239,223,191,127],tmp3
			
			IF tmp1 < 8 Then
			PORTD = 255
			GoSub clock2
			PORTD = tmp3 
			GoSub clock1
			EndIF
			
			IF tmp1 >7 Then
			PORTD = 255
			GoSub clock1
			PORTD = tmp3
			GoSub clock2
			EndIF
			
		
								
			
			IF (tmp1 + scroll) < 95 Then
			PORTD = out(tmp1 + scroll)
			Else
			PORTD = out1(tmp1 + scroll - 96)
			EndIF
			Pause 1
			PORTD = 0
		
			
		Next tmp1
		
	
	Next moj
	
	scroll = scroll + 1
	IF scroll > temp1 Then
	scroll = 0
	GoSub memr
	EndIF
GoTo loop

clock1:
PORTB.0 = 1
PORTB.0 = 0
Return

clock2:
PORTB.1 = 1
PORTB.1 = 0
Return



memr:
		Read 92,speed
		Read 93,delay
delaylong = delay * 1000
Pause delaylong

	IF num = 0 Then
		mojn(0)=29
		mojn(1)=0
		mojn(2) = 28
	EndIF
	IF num = 1 Then
		mojn(0)=60
		mojn(1)=30
		mojn(2) = 59
	EndIF
		IF num = 2 Then
		mojn(0)=91
		mojn(1)=61
		mojn(2) = 90
		EndIF

tmp2 = 0

Read mojn(0),letters
For tmp = mojn(1) to mojn(2)
	Read tmp,indata(tmp2)
	tmp2 = tmp2 + 1
Next tmp
num = num + 1
IF num >2 Then
	num = 0
EndIF
temp1 = 11
GoSub emtybuffert
GoSub inibuffert

Return



Inputt:
		PORTD = 55
		
		SerIn2 PORTB.4,16780,[wait("H"),STR indata\29,num,speed,delay]
		letters = 0
		
		
		For tmp = 0 to 28
		
			IF indata(tmp) = 10 Then 
				letters = letters - 1
				GoTo after
			EndIF 
			IF indata(tmp) < 123 Then
				letters = letters + 1
				indata(tmp) = indata(tmp) - 32
			EndIF
			
			IF indata(tmp) <155 AND indata(tmp) > 131 Then
			letters = letters + 1
			EndIF
							
		Next tmp
		
		after:
		IF num = 0 Then
		mojn(0)=29
		mojn(1)=0
		mojn(2) = 28
		EndIF
		IF num = 1 Then
		mojn(0)=60
		mojn(1)=30
		mojn(2) = 59
		EndIF
		IF num = 2 Then
		mojn(0)=91
		mojn(1)=61
		mojn(2) = 90
		EndIF
		
		Write 92,speed
		Write 93,delay
				
		Write mojn(0),letters
		tmp2 = 0
		For tmp = mojn(1) to mojn(2)
		Write tmp,indata(tmp2)
		tmp2 = tmp2 + 1
		Next tmp
		num = 0
	
		
Return

inibuffert:
	
		For tmp = 0 to letters
		
			IF indata(tmp) = 134 Then
				GoSub aring
			EndIF
			IF indata(tmp) = 132 Then
				GoSub auml
			EndIF
			IF indata(tmp) = 148 Then
				GoSub ouml
			EndIF
			IF indata(tmp) = 143 Then
				GoSub austor
			EndIF
			IF indata(tmp) = 142 Then
				GoSub aeistor
			EndIF
			IF indata(tmp) = 153 Then
				GoSub aoustor
			EndIF
			
			
BranchL  indata(tmp),[space,utrops,citta,kohage,cash,proc,och,apostrof,parantesstart,parantesend,_
star,plus,comma,minus,punkt,division,zero,one,two,three,four,five,six,seven,eight,nine,kolon,semikol,_
arrowleft,equal,arrowright,questionmark,at,aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll,mm,nn,oo,pp,qq,rr,ss,tt,uu,_	vv,ww,xx,yy,zz,klammerleft,slach,klammerright,tak,underline,acsang,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,_
			u,v,w,x,y,z]
		
			afterbranch:
			GoSub fit
			temp = 0
			GoSub fit
		Next tmp
		scroll = 0
GoTo loop


fit:
IF temp1 < 95 Then
out(temp1) = temp
Else
out1(temp1 - 96) = temp
EndIF
temp1 = temp1 + 1
Return





emtybuffert:
For tmp= 0 to 95
out(tmp) = 0
out1(tmp) = 0
Next tmp
temp1 = 15
Return



a:
temp = %00000010
GoSub fit
temp = %00010101
GoSub fit
'temp = %00010101
GoSub fit
'temp = %00010101
GoSub fit
temp = %00001111
GoTo afterbranch
99nvbjed
Inlägg: 70
Blev medlem: 27 maj 2004, 15:40:47

Inlägg av 99nvbjed »

Aaa, tack så mycket! Det var ju några rader :)
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

Jo det blev en del.. och teckentabellen gjorde att det blev väldigt ont om plats i pic:en också så jag fick vänd å vrida på all kod för att få in allt..
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

Ja då var den slutgiltliga versionen av matrisen färdig.

Den består av 119 ytmonterade lysdioder som är fastlimmade på vinylplast och sen ihoplöddade med någerlunda flexibel kopplingstråd.

Styrning och mjukvara är den samma som för tidigare varianten..

bilder, Klicka för större..
Bild
Bild
Bild
Bild
Bild

Och så en film på den i action:
http://www.kakmonster.com/mulle/matris/matris.avi [ca 5,17 mb]

och så en liten film på hur den är byggd på 8min 56sekunder
http://www.kakmonster.com/mulle/matris/film.avi [ca 60mb]

/mullemeck
Användarvisningsbild
MadModder
Co Admin
Inlägg: 29995
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

gör om, gör rätt. Inga backslashar ;)

Sygg matris det där

[edit]
Sådärja :D
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

Det var visst lite klabb med servern jag hade bilderna och filmerna på så de har inte riktigt funkat..

men nu ska problemet vara fixat..
Användarvisningsbild
Lindqvist
EF Sponsor
Inlägg: 236
Blev medlem: 6 juli 2004, 19:19:53

Inlägg av Lindqvist »

Mycket roligt att få se din arbetstakt mullemeck, du har verkligen fått upp frekvensen! :D Det var också en påhittig teknik du använde för att få ihop matrisen, bra gjort. :tumupp:

Hoppas bara att assistenten inte åt upp alla kakor för dig.
Användarvisningsbild
PaNiC
Inlägg: 2565
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Inlägg av PaNiC »

Är det Jönssonligans största kupp man hör i bakgrunden? :)
Skriv svar