Ledsnurra av Jeda007
Ledsnurra av Jeda007
Hej!
Nu har jag börjat få till en egen ledsnurra!
Blev lite besviken först men resultatet blev mycket bättre när jag tittade lite på avstånd, satt med andra ord för nära!
Jag använder en PIC16F877A samt 30 st 5mm lysdioder.
Jag programerar i PICBasic.
Men jag körde fast lite när jag nu vill få till en snyggare programering!
Idag gör jag som så att jag tänder eller släcker alla lysdioder på en rad, pausar lite, släcker alla paus igen osv! tills jag fått ut min bokstav eller mönster!
Min tanke var att istället använda mig av en array, skapade en bit array med 30 segment, men det som var så klart i huvudet förut är inte det längre, jag tänkte mig att jag skulle kunna använda arrayen som ett 30 bitars ord med en lysdiod för varje bit, tänkte jag helt fel?
Hur kan man ge alla arrayelement värde 1? utan att skriva till varje element?
Jag kanske är helt ute och cyklar man kanske kan använda Ascii kod för varje bokstav eller kanske två 16 bitars ord där varje diod är en bit?
Kan man använda tex en bmp bild med 30pixlar gånger vad delningen är på ett varv, hur tusan skall man isåfall läsa ut bmp bilden?
Som ni förstår har jag kört fast riktigt ordentligt nu!
mycket tacksam för en liten puff i rätt riktning
Mvh jeda007
Nu har jag börjat få till en egen ledsnurra!
Blev lite besviken först men resultatet blev mycket bättre när jag tittade lite på avstånd, satt med andra ord för nära!
Jag använder en PIC16F877A samt 30 st 5mm lysdioder.
Jag programerar i PICBasic.
Men jag körde fast lite när jag nu vill få till en snyggare programering!
Idag gör jag som så att jag tänder eller släcker alla lysdioder på en rad, pausar lite, släcker alla paus igen osv! tills jag fått ut min bokstav eller mönster!
Min tanke var att istället använda mig av en array, skapade en bit array med 30 segment, men det som var så klart i huvudet förut är inte det längre, jag tänkte mig att jag skulle kunna använda arrayen som ett 30 bitars ord med en lysdiod för varje bit, tänkte jag helt fel?
Hur kan man ge alla arrayelement värde 1? utan att skriva till varje element?
Jag kanske är helt ute och cyklar man kanske kan använda Ascii kod för varje bokstav eller kanske två 16 bitars ord där varje diod är en bit?
Kan man använda tex en bmp bild med 30pixlar gånger vad delningen är på ett varv, hur tusan skall man isåfall läsa ut bmp bilden?
Som ni förstår har jag kört fast riktigt ordentligt nu!
mycket tacksam för en liten puff i rätt riktning
Mvh jeda007
Senast redigerad av jeda007 16 februari 2006, 21:12:00, redigerad totalt 1 gång.
Här kommer min kod för min gamla (och kassa) ledsnurra, skriven för en 877:a i PicBasic. Varning för att koden säkert är skitkass, då jag vid denna tid faktiskt var sämre än vad jag är nu.
Bilden (12x20) läggs in (lite snett) i "tabellen" i början av koden. Sedan kollar den när en läsgaffel bryts och börjar då rita upp bilden. Detta kanske allafall kan ge dig någon ide om hur koden kan se ut. Då detta faktiskt funkade riktigt bra för mig
Bilden (12x20) läggs in (lite snett) i "tabellen" i början av koden. Sedan kollar den när en läsgaffel bryts och börjar då rita upp bilden. Detta kanske allafall kan ge dig någon ide om hur koden kan se ut. Då detta faktiskt funkade riktigt bra för mig
Kod: Markera allt
DEFINE OSC 20
p_01 var PORTD.4
p_02 var PORTD.5
p_03 var PORTD.6
p_04 var PORTD.7
p_05 var PORTB.0
p_06 var PORTB.1
p_07 var PORTB.2
p_08 var PORTB.3
p_09 var PORTB.4
p_10 var PORTB.5
p_11 var PORTB.6
p_12 var PORTB.7
RW var bit[12]
x var word
POS var word
DATA 1
DATA 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
DATA 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1
DATA 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1
DATA 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1
DATA 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1
DATA 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1
DATA 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1
DATA 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
DATA 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0
DATA 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1
DATA 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1
DATA 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0
DATA 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
DATA 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1
DATA 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1
DATA 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1
DATA 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1
DATA 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1
DATA 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1
DATA 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
TRISB = 0
TRISA = 1
TRISD = 0
ADCON1= %00000111
PORTB = 0
PORTD = 0
LOOP:
if PORTA.0 = 0 then
For POS = 0 TO 228 step 12
for x = 1 to 12
READ POS+x,RW[x]
next x
p_01=RW[1]: p_02=RW[2]: p_03=RW[3]: p_04=RW[4] : p_05=RW[5] : p_06=RW[6]
p_07=RW[7]: p_08=RW[8]: p_09=RW[9]: p_10=RW[10]: p_11=RW[11]: p_12=RW[12]
PAUSEUS 1000
NEXT POS
PORTB = %00000000
PORTD = %00000000
endif
goto LOOP
Hej!
jack
Tycker det såg rätt stiligt ut med Data upplägget vad jag förstår så blir bilden som den syns med ettorna och nollorna?
Har alldrig använt datakomandot såg inte riktigt hur kopplingen fungerade mellan arrayen och data, men jag får väl labba lite ikväll och se om jag kommer på det!
mullemeck
vad använde du för program för att göra en råformatbild?
finns det något sätt att se hur bilden blir i kodformat?
För att göra bokstäver så kan man väl göra var för sig och sedan hoppa dit?
Kan man inte göra en timmer i en pic typ som i en PLC?
Mvh Jens
jack
Tycker det såg rätt stiligt ut med Data upplägget vad jag förstår så blir bilden som den syns med ettorna och nollorna?
Har alldrig använt datakomandot såg inte riktigt hur kopplingen fungerade mellan arrayen och data, men jag får väl labba lite ikväll och se om jag kommer på det!
mullemeck
vad använde du för program för att göra en råformatbild?
finns det något sätt att se hur bilden blir i kodformat?
För att göra bokstäver så kan man väl göra var för sig och sedan hoppa dit?
Kan man inte göra en timmer i en pic typ som i en PLC?
Mvh Jens
Hej!
Jag hade inte testat alla 30 dioder, redan där uppstod problem!
Några felkopplingar en liten kortis samt jag kan inte få porta.4 att tända, den blinkar bara till med ca 0,13v och det räker inte så långt!
Alla andra fungerar hoppar jag över porta.4 så fungerar alla!
Här ar programmet jag gjorde för att se att alla dioder fungerade samt var kopplade i rätt ordning!
DEFINE OSC 20
ADCON1 = 7
TRISB = %00000000
TRISD = %00000000
TRISC = %00000000
TRISE = %00000000
TRISA = %00000001
' TID SOM DIODERNA ÄR TÄNDA
tid VAR BYTE
tid=1000
loop:
LOW portB.7
LOW portB.6
LOW portB.5
LOW portB.4
LOW portB.3
LOW portB.2
LOW portB.1
LOW portB.0
LOW portD.7
LOW portD.6
LOW portD.5
LOW portD.4
LOW portC.7
LOW portC.6
LOW portC.5
LOW portC.4
LOW portD.3
LOW portD.2
LOW portD.1
LOW portD.0
LOW portC.3
LOW portC.2
LOW portC.1
LOW portC.0
LOW portE.2
LOW portE.1
LOW portE.0
LOW portA.5
HIGH portA.4
LOW portA.3
LOW portA.2
if portA.0=0 then goto loop
high portB.7
PAUSE TID
high portB.6
PAUSE TID
high portB.5
PAUSE TID
high portB.4
PAUSE TID
high portB.3
PAUSE TID
high portB.2
PAUSE TID
high portB.1
PAUSE TID
high portB.0
PAUSE TID
High portD.7
PAUSE TID
high portD.6
PAUSE TID
high portD.5
PAUSE TID
high portD.4
PAUSE TID
high portC.7
PAUSE TID
high portC.6
PAUSE TID
high portC.5
PAUSE TID
high portC.4
PAUSE TID
high portD.3
PAUSE TID
High portD.2
PAUSE TID
high portD.1
PAUSE TID
High portD.0
PAUSE TID
high portC.3
PAUSE TID
high portC.2
PAUSE TID
high portC.1
PAUSE TID
high portC.0
PAUSE TID
high portE.2
PAUSE TID
high portE.1
PAUSE TID
high portE.0
PAUSE TID
high portA.5
PAUSE TID
high portA.4
PAUSE TID
high portA.3
PAUSE TID
high portA.2
PAUSE TID
GOTO loop ' Go back to loop and blink LED forever
End
Inte den snyggaste programsnutt jag sett men den fungerar förutom Porta.4!
Jack !
hur många sådana där data rader får man plats i minnet ungefär i ditt exempel så blir det ju ca en bokstav samt så har jag tretio dioder blir det problem att skriva långa namn tro?
Mvh jeda007
Jag hade inte testat alla 30 dioder, redan där uppstod problem!
Några felkopplingar en liten kortis samt jag kan inte få porta.4 att tända, den blinkar bara till med ca 0,13v och det räker inte så långt!
Alla andra fungerar hoppar jag över porta.4 så fungerar alla!
Här ar programmet jag gjorde för att se att alla dioder fungerade samt var kopplade i rätt ordning!
DEFINE OSC 20
ADCON1 = 7
TRISB = %00000000
TRISD = %00000000
TRISC = %00000000
TRISE = %00000000
TRISA = %00000001
' TID SOM DIODERNA ÄR TÄNDA
tid VAR BYTE
tid=1000
loop:
LOW portB.7
LOW portB.6
LOW portB.5
LOW portB.4
LOW portB.3
LOW portB.2
LOW portB.1
LOW portB.0
LOW portD.7
LOW portD.6
LOW portD.5
LOW portD.4
LOW portC.7
LOW portC.6
LOW portC.5
LOW portC.4
LOW portD.3
LOW portD.2
LOW portD.1
LOW portD.0
LOW portC.3
LOW portC.2
LOW portC.1
LOW portC.0
LOW portE.2
LOW portE.1
LOW portE.0
LOW portA.5
HIGH portA.4
LOW portA.3
LOW portA.2
if portA.0=0 then goto loop
high portB.7
PAUSE TID
high portB.6
PAUSE TID
high portB.5
PAUSE TID
high portB.4
PAUSE TID
high portB.3
PAUSE TID
high portB.2
PAUSE TID
high portB.1
PAUSE TID
high portB.0
PAUSE TID
High portD.7
PAUSE TID
high portD.6
PAUSE TID
high portD.5
PAUSE TID
high portD.4
PAUSE TID
high portC.7
PAUSE TID
high portC.6
PAUSE TID
high portC.5
PAUSE TID
high portC.4
PAUSE TID
high portD.3
PAUSE TID
High portD.2
PAUSE TID
high portD.1
PAUSE TID
High portD.0
PAUSE TID
high portC.3
PAUSE TID
high portC.2
PAUSE TID
high portC.1
PAUSE TID
high portC.0
PAUSE TID
high portE.2
PAUSE TID
high portE.1
PAUSE TID
high portE.0
PAUSE TID
high portA.5
PAUSE TID
high portA.4
PAUSE TID
high portA.3
PAUSE TID
high portA.2
PAUSE TID
GOTO loop ' Go back to loop and blink LED forever
End
Inte den snyggaste programsnutt jag sett men den fungerar förutom Porta.4!
Jack !
hur många sådana där data rader får man plats i minnet ungefär i ditt exempel så blir det ju ca en bokstav samt så har jag tretio dioder blir det problem att skriva långa namn tro?
Mvh jeda007
mullemeck > sen gjorde jag ett litet c++ program som läser av txt-filerna och skickar ut bilderna som 150byte
Menar du att du skickar bildinformationen från programmet via seriellporten/liknande till Ledsnurran?l
I så fall låter som ett program som kan vara bra till framtida projekt. Om det är möjligt så skulle jag gärna ta en titt på ditt program.
/
Jeppsson
Menar du att du skickar bildinformationen från programmet via seriellporten/liknande till Ledsnurran?l
I så fall låter som ett program som kan vara bra till framtida projekt. Om det är möjligt så skulle jag gärna ta en titt på ditt program.
/
Jeppsson
Hej!
Här kommer min nya snutt!
Känner mig riktigt nöjd skall utöka till två ord på höjden (32Dioder) kanske även bredda bokstavsfältet.
Har gjort en(mall) i Excell som är rutat sätter jag ett kryss får jag ut den binära koden rad för rad, något liknande era förslag kanske!
**********************************************************
DEFINE OSC 20
ADCON1 = 7
TRISB = %00000000
TRISD = %00000000
TRISC = %00000000
TRISE = %00000000
TRISA = %00000001
' TID SOM DIODERNA ÄR TÄNDA
tid VAR BYTE
tid=1000
led var word[10]
LED_N VAR WORD
X VAR BYTE
LOOP:
PORTB=0
PORTD=0
PORTC=0
PORTE=0
PORTA=0
if portA.0=0 then goto loop
gosub a
FOR X = 0 TO 9
LED_N = LED[X]
portB.7 = led_N.0 : portB.6 = led_N.1 : portB.5 = led_N.2
portB.4 = led_N.3 : portB.3 = led_N.4 : portB.2 = led_N.5
portB.1 = led_N.6 : portB.0 = led_N.7 : portD.7 = led_N.8
portD.6 = led_N.9 : portD.5 = led_N.10 : portD.4 = led_N.11
portC.7 = led_N.12 : portC.6 = led_N.13 : portC.5 = led_N.14
portC.4 = led_N.15
PAUSEUS 1000
nEXT X
GOTO LOOP
A:
led[0] = 3
led[1] = 12
led[2] = 48
led[3] = 208
led[4] = 784
led[5] = 784
led[6] = 208
led[7] = 48
led[8] = 12
led[9] = 3
return
**************************************************
Det där med open drain försod jag inte riktigt hur fungerar det? är det omvänt på något vis?
Låter intressant med visual basic men jag tycker det är bökig att få till det!
har försökt några gånger.
Mvh jeda007
Här kommer min nya snutt!
Känner mig riktigt nöjd skall utöka till två ord på höjden (32Dioder) kanske även bredda bokstavsfältet.
Har gjort en(mall) i Excell som är rutat sätter jag ett kryss får jag ut den binära koden rad för rad, något liknande era förslag kanske!
**********************************************************
DEFINE OSC 20
ADCON1 = 7
TRISB = %00000000
TRISD = %00000000
TRISC = %00000000
TRISE = %00000000
TRISA = %00000001
' TID SOM DIODERNA ÄR TÄNDA
tid VAR BYTE
tid=1000
led var word[10]
LED_N VAR WORD
X VAR BYTE
LOOP:
PORTB=0
PORTD=0
PORTC=0
PORTE=0
PORTA=0
if portA.0=0 then goto loop
gosub a
FOR X = 0 TO 9
LED_N = LED[X]
portB.7 = led_N.0 : portB.6 = led_N.1 : portB.5 = led_N.2
portB.4 = led_N.3 : portB.3 = led_N.4 : portB.2 = led_N.5
portB.1 = led_N.6 : portB.0 = led_N.7 : portD.7 = led_N.8
portD.6 = led_N.9 : portD.5 = led_N.10 : portD.4 = led_N.11
portC.7 = led_N.12 : portC.6 = led_N.13 : portC.5 = led_N.14
portC.4 = led_N.15
PAUSEUS 1000
nEXT X
GOTO LOOP
A:
led[0] = 3
led[1] = 12
led[2] = 48
led[3] = 208
led[4] = 784
led[5] = 784
led[6] = 208
led[7] = 48
led[8] = 12
led[9] = 3
return
**************************************************
Det där med open drain försod jag inte riktigt hur fungerar det? är det omvänt på något vis?
Låter intressant med visual basic men jag tycker det är bökig att få till det!
har försökt några gånger.
Mvh jeda007
Hej!
Sitter och pillar med min ledsnurra igen!
Den fungerar fint med text som står still använder en läsgaffel som trigg varje varv.
Men nu vill jag låta en text med 5 bostäver flyta runt hela tiden,problemet somjag ser det är triggpunkten, det kommer bli en konstig skarv där eller så skrivs texten bara vart annat varv för att man missat triggen mitt i texten.
Det bästa jag fick till var att hoppa över triggen men det blev lite svårt att ställa in!
Mina ideer har sinat behöver hjälp!
Sitter och pillar med min ledsnurra igen!
Den fungerar fint med text som står still använder en läsgaffel som trigg varje varv.
Men nu vill jag låta en text med 5 bostäver flyta runt hela tiden,problemet somjag ser det är triggpunkten, det kommer bli en konstig skarv där eller så skrivs texten bara vart annat varv för att man missat triggen mitt i texten.
Det bästa jag fick till var att hoppa över triggen men det blev lite svårt att ställa in!
Mina ideer har sinat behöver hjälp!
Absolut. Korta versionen:jeda007 skrev:Hej!
Är det någon som kan förklara hur open drain fungerar?
Går den att använda som vanlig ingång, men inte utgång?
Mvh Jeda007
Open-drain innebär att utgångssteget är kopplat med endast en transistor. Denna kan antingen vara stängd, eller öppen (naturligtvis). Om transistorn är stängd, dvs inte leder, får du ingen signal alls på utgången. Varken matningsspänning eller jord. Om transistorn är öppen så leder den mot jord och du får jord på utgången.
Så, om du kopplar en lysdiod från pinnen till jord, så kommer ingenting alls att hända eftersom du inte kan få något annat än jord på utgången. Vänder du däremot på dioden så kommer det att fungera.