Sida 2 av 2
Postat: 18 december 2005, 01:37:52
av sodjan
> Enda nackdelen är väll att det vart väldigt lång kod då jag tänder lysdioderna en för en.
Men varför gör du det då ?
Ett tidigare inlägg visade ju hur du kommer runt det "problemet"...
Postat: 18 december 2005, 22:26:20
av Cryptomaster
Jag får inte det att funka.
Skriver jag:
Då får jag fel vid kompileringen.
Men skriver jag:
Då funkar kompileringen men bara 1 diod tänds.
Postat: 18 december 2005, 22:36:16
av mullemeck
skumt, PORTB = 0b00111111 borde funka..
Skriv PORTB = 63 istället så ska alla tändas.
Postat: 18 december 2005, 23:04:33
av Cryptomaster
Skrev PORTB = 63
Tyvärr så tänds bara en (1) diod.

Postat: 18 december 2005, 23:13:00
av sodjan
> Skriver jag:
> code: PORTB = 0b00111111 'Tänder portb
> Då får jag fel vid kompileringen.
Vadå "fel" ???
Säger den ingenting mer ?
Ger den inget fel i klartext eller någon felkod ??
Postat: 18 december 2005, 23:21:24
av Cryptomaster
Den säger:
ERROR Line 29: Syntax error.
Postat: 18 december 2005, 23:47:43
av mullemeck
hehe nu kom jag på felet.. det ska va PORTB = %00111111 det är i c man använder 0b för decimala tal..
dock så borde det funkat att köra PORTB = 63
har du satt alla pinnar till utgångar?
Testa lägg till TRISB = 0 innan du börjar sätta PORTB..
Postat: 8 januari 2006, 00:29:56
av Cryptomaster
Ok, har inte kunnat svara på länge pga av mycket att göra under jul och nyår. Och så har jag varit bortrest ett tag också.
Först av allt så vill jag tacka er alla för hjälpen. Nu funkar det problemfritt.
Koden vart då så här:
Det är då morseloop: som är den omtalade.
Kod: Markera allt
define osc 4
CMCON = 7
input PORTA.0
INPUT PORTA.1
INPUT PORTA.2
SW1 VAR PORTA.0
SW2 VAR PORTA.1
SW3 VAR PORTA.2
main:
IF SW1 THEN morseloop
IF SW2 THEN blinkningar
if sw3 then fade
GoTo main
fade:
led VAR portb.0
steps VAR WORD
cycles CON 2
up:
For steps=0 TO 255
PWM led,steps,cycles
Next
High led
Pause 200
low led
pause 200
high led
down:
For steps=255 TO 1 STEP -1
PWM led,steps,cycles
Next
Low led
Pause 2500
GoTo fade
morseloop:
TRISB = 0
Pause 1000
PORTB = %00111111 'Tänder portb
PAUSE 300
PORTB = 0 'släcker hela portb
PAUSE 300
PORTB = %00111111 'Tänder portb
PAUSE 300
PORTB = 0 'släcker hela portb
PAUSE 300
PORTB = %00111111 'Tänder portb
PAUSE 300
PORTB = 0 'släcker hela portb
Pause 800
PORTB = %00111111 'Tänder portb
PAUSE 900
PORTB = 0 'släcker hela portb
PAUSE 900
PORTB = %00111111 'Tänder portb
PAUSE 900
PORTB = 0 'släcker hela portb
PAUSE 900
PORTB = %00111111 'Tänder portb
PAUSE 800
PORTB = 0 'släcker hela portb
Pause 300
PORTB = %00111111 'Tänder portb
PAUSE 300
PORTB = 0 'släcker hela portb
PAUSE 300
PORTB = %00111111 'Tänder portb
PAUSE 300
PORTB = 0 'släcker hela portb
PAUSE 300
PORTB = %00111111 'Tänder portb
PAUSE 300
PORTB = 0 'släcker hela portb
Pause 2000 'Väntar 2 s
GoTo morseloop 'Loopar
blinkningar:
High PORTB.0 'Tänder lysdiod 1
PAUSE 40 'Väntar 0,040 s
LOW PORTB.0 'Släcker lysdiod 1
HIGH PORTB.5 'Tänder lysdiod 6
PAUSE 40 'Väntar 0,040 s
LOW PORTB.5 'Släcker lysdiod 6
HIGH PORTB.3
PAUSE 40
LOW PORTB.3
HIGH PORTB.1
PAUSE 40
LOW PORTB.1
HIGH PORTB.4
PAUSE 40
LOW PORTB.4
HIGH PORTB.2
PAUSE 40
LOW PORTB.2
GOTO blinkningar 'Loopar stycket med blinkningar
Som ni kanske ser så har jag experimenterat lite med pwm och fått det att funka problemfritt på 1st lysdiod. Men jag skulle vilja få det som ett rinnande ljus effekt.
1.Fadea lysdiod 1 på portb.0
2.Fadea lysdiod 2 på portb.1
3.Fadea lysdiod 3 på portb.2....
osv ända upp till lysdiod nr 6.
Jag har funderat lite på om man kunde få en FOR-NEXT sats att ändra siffran i variabeln:
LED VAR PORTB.0
Tacksam för svar

Postat: 8 januari 2006, 01:12:15
av Jine
Heej Cryptomaster!
Inte visste jag att du hade hittat hit! (Eller va det jag som rekomenderade Elektronikforumet till dig?

)
Nog om det..
Ang koden..
Det går med FOR NEXT osv.. Dock så vet jag inte hur.. jag kom aldrig så långt i min pickariär

(Blinkande led, Blinkande led i olika hastigheter, Sen byggde ajg en robot

)
Postat: 8 januari 2006, 01:45:40
av Cryptomaster
Hehe jo jag har vart och smygtittat lite då och då här i några år, men jag vart inte medlem förens, hmm det var några månader sedan tror jag.
Och jo det borde ju gå att få ihop det med FOR-NEXT.
Liksom få en for next sats att ändra siffran i PORTB.0 till PORTB.1 Och sedan nästa gång den körst till PORTB.2 osv...
Postat: 8 januari 2006, 13:18:53
av sodjan
Vad menar du med "siffran i PORTB.0" ?
PORTB.0 kan bara vara logiskt hög ("1") eller låg ("0"), är det det du menar ?
Eller är det själva pin-numret som skall ändras ? Alltså "0", "1", "2" o.s.v ?
Det kan vara lite svårt, eftersom pin-numret inte är variabelt i instruktionerna.
Postat: 8 januari 2006, 14:36:52
av Cryptomaster
Ok, jo det är pin numret som jag var ute efter att ändra.
Men ett alternativ är ju att skriva hela stycken med pwm och ändra PORTB.0 i varje, men det skulle alltså bli väldigt mycket kod.
En sån här för varje kod:
Kod: Markera allt
fade:
led VAR portb.0
steps VAR WORD
cycles CON 2
up:
For steps=0 TO 255
PWM led,steps,cycles
Next
High led
Pause 200
low led
pause 200
high led
down:
For steps=255 TO 1 STEP -1
PWM led,steps,cycles
Next
Low led
Pause 2500
GoTo fade