Knightrider (nybörjar varning)

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
NSR_Martin
Inlägg: 358
Blev medlem: 30 november 2003, 13:37:31
Ort: Jönköping
Kontakt:

Inlägg av NSR_Martin »

Jag är i ungefär samma sitts som dig, ska bestäla hem lite enchipsdatorer o lära mig dom...

Har snackat ltie med Strombom om det, han tippsade mig om denna programeraren: http://www.jdm.homepage.dk/newpic.htm

Om man bygger den med flera socklar ska den funka till de flesta PICarna tydligen, jag tänker byugga den...

Tänker programera PICbasic då det är lätt iom att jag kan ASP... Du kunde ju VB, då borde du ha väldigt lätt för det med...
Pinkevin
Inlägg: 285
Blev medlem: 1 januari 2004, 12:44:10
Ort: Norrtälje

Inlägg av Pinkevin »

$tiff skrev:>> Pinkevin

Om du kan VB så borde du kanske ta en titt på PICBasic? Jag kör med det och tycker att det är löjligt lätt :D

Fast C (eller Asm) är ändå att rekommendera om du siktar högre. PICBasic har sina gränser...


För att få en LED att "fejda" pulsar man den som redan beskrivit. Den lägsta frekvensen du bör modulera på är 25Hz. Vid ännu lägre kan man uppfatta flimmer hos lysdioderna. 25Hz motsvarar en period på 40ms, eller 40 000µs om du hellre vill det...
På denna tiden ska du lätt hinna med att hantera tre LEDs samtidigt.

Fast det är nog bäst att du börjar med en vanlig knightrider... :wink:
Jo, jag håller på att försöka hitta lite bra sidor om PICBasic, tyvärr så verkar de flesta kompilerare kosta pengar.
Finns det någon bra som är gratis?

Jo, det säger ju nästan sig själv, basic språken har sällan haft tillgång till så djupgående "funktioner" och liknande, som C och asm har.

Hur mycket är en period? Är det tiden den ska vara tänd + tiden den ska vara släckt en gång?
Alltså matseng sa ju att för att få den att lysa 25 % så ska den vara tänd i 250 ms och släckt i 750 ms, också ska man loopa detta om och om igen.
Men är en sån här loop en period?
Men hur vet jag hur länga den ska vara tänd och hur länge den ska vara släckt under denna perioden? (det känns som om jag inte riktigt har förstått det hela)

En vanlig knightrider är redan färdig :)
Iaf koden + .hex filen (jag tror att koden fungerar iaf), nu behöver jag bara en programmerare + de extra komponenter som behövs för att få PICen att starta och köra knightrider programmet.
Sebastian
Inlägg: 87
Blev medlem: 11 juli 2003, 21:13:36
Ort: Ljusdal, Gävleborgs län.
Kontakt:

Inlägg av Sebastian »

Man skaaldrig ångra det val man gjorde när man lärde sig programmera, man kan aldrig kunna för många språk!
Jag tror att de kan vara en bra ide att lära sig c om man har tid(det går mycket fortare att lära sig ett andra språk). försök hitta bra exempelkod - som du kan leka med - så går det nog fort!
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Västra Götaland
Kontakt:

Inlägg av strombom »

jag har lagt ut lite kod för min knightrider, den fadar 3 st lysdioder så det blir lite mjukare effekt

http://193.11.236.26:1234/projekt/html/index.php?mnu=4

visserligen är koden skriven för avr men inte så svår att översätta till pic-c ...
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Västra Götaland
Kontakt:

Inlägg av strombom »

Pinkevin skrev:Men vad betyder l-et och f-et i movlw och movwf?
mov vet jag var det betyder, men var betyder movlw o movwf?
W-et i det är väl W registret, men l-et och f-et?

L står för att det är en konstant, en siffra rakt i programkoden

F står för "file", alltså register, du pekar alltså på en minnesadress, en variabel med andra ord

MOVLW 5 gör alltså att W kommer få värdet 5

MOFWF A kopierar värdet i W till minnesadressen A

på minnesplats A kommer det alltså att stå 5

/Johan
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Västra Götaland
Kontakt:

Inlägg av strombom »

"Men vad betyder l-et och f-et i movlw och movwf?
mov vet jag var det betyder, men var betyder movlw o movwf?
W-et i det är väl W registret, men l-et och f-et?"

L står för att det är en konstant, en siffra rakt i programkoden

F står för "file", alltså register, du pekar alltså på en minnesadress, en variabel med andra ord

MOVLW 5 gör att W kommer få värdet 5
MOFWF A kopierar värdet i W till minnesadressen A

på minnesplats A kommer det alltså att stå 5

/Johan
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Västra Götaland
Kontakt:

Inlägg av strombom »

L står för att det är en konstant, en siffra rakt i programkoden

F står för "file", alltså register, du pekar alltså på en minnesadress, en variabel med andra ord

MOVLW 5 gör att W kommer få värdet 5
MOFWF A kopierar värdet i W till minnesadressen A

på minnesplats A kommer det alltså att stå 5

/Johan
Pinkevin
Inlägg: 285
Blev medlem: 1 januari 2004, 12:44:10
Ort: Norrtälje

Inlägg av Pinkevin »

Originally posted by Sebastian:
Man skaaldrig ångra det val man gjorde när man lärde sig programmera, man kan aldrig kunna för många språk!
Jag tror att de kan vara en bra ide att lära sig c om man har tid(det går mycket fortare att lära sig ett andra språk). försök hitta bra exempelkod - som du kan leka med - så går det nog fort!
Nej, men man kan kanske ångra ordningen man lärde sig språken i.
Samtidigt så är det som du säger, att det kanske är bättre att lära sig ett enkelt språk som vb först, så man får in "programmerings grunderna" på ett enkelt sätt, och att man sedan går vidare med ett svårare språk.
Jo, men det svåra är att hitta exempelkoder, och jag lär mig lättast genom att få hela exempelkoder till program och sedan knåpa ihop nya mha cut-n'-paste, plus att jag skriver dit lite extra kod själv.
Originally posted by strombom:
L står för att det är en konstant, en siffra rakt i programkoden

F står för "file", alltså register, du pekar alltså på en minnesadress, en variabel med andra ord

MOVLW 5 gör att W kommer få värdet 5
MOFWF A kopierar värdet i W till minnesadressen A

på minnesplats A kommer det alltså att stå 5

/Johan
Jaha, men då förstår jag nog.
Originally posted by NSR_Martin
Jag är i ungefär samma sitts som dig, ska bestäla hem lite enchipsdatorer o lära mig dom...

Har snackat ltie med Strombom om det, han tippsade mig om denna programeraren: http://www.jdm.homepage.dk/newpic.htm

Om man bygger den med flera socklar ska den funka till de flesta PICarna tydligen, jag tänker byugga den...

Tänker programera PICbasic då det är lätt iom att jag kan ASP... Du kunde ju VB, då borde du ha väldigt lätt för det med...
Jo, men det är lite delade meningar om JDM.
De som har fått den har fungerat har fått den att fungera 100 % och helt stabilt, medans de som inte fått den att fungera inte har fått den att fungera alls.
Så det blir en liten chansning när man bygger den.
Det står vilka PICar den klarar på första sidan, och de är de minsta, de mellanstora och de som är lite större än dem, dock klarar den inte 18xxx serien.

Jo, jag ska nog också testa PICBasic till att börja med..eftersom att jag kan VB vilket som du säger, borde göra det väldigt lätt, och sedan gå vidare med PICC.
Användarvisningsbild
karlstedt
EF Sponsor
Inlägg: 966
Blev medlem: 14 oktober 2003, 16:55:23
Ort: Lund
Kontakt:

Inlägg av karlstedt »

Om du absolut vill att den ska 'fejda' men inte tycker att du vill/orkar/kan göra det med PWM så kan du ju göra en liten koppling med motstånd och kondningar så får du dioden att 'fejda' analogt istället.
Användarvisningsbild
karlstedt
EF Sponsor
Inlägg: 966
Blev medlem: 14 oktober 2003, 16:55:23
Ort: Lund
Kontakt:

Inlägg av karlstedt »

Om du absolut vill att den ska 'fejda' men inte tycker att du vill/orkar/kan göra det med PWM så kan du ju göra en liten koppling med motstånd och kondningar så får du dioden att 'fejda' analogt istället.
Pinkevin
Inlägg: 285
Blev medlem: 1 januari 2004, 12:44:10
Ort: Norrtälje

Inlägg av Pinkevin »

Jag vill gärna göra det mha programmering eftersom att jag inte gör det för fejdandets skull, utan för att jag vill lära mig programmera.

Men ifall man ska fejda en lysdiod med en kondensator och ett motstånd, vilka värden ska dessa 2 ha då?
Säg att vi har en lysdiod med spänningsfallet 2.1V och som behöver 20mA för att lysa, denna matar vi med 5 V.
Hur många ohm ska motståndet ligga på och hur stor kapacistans ska kondensatorn ha?
Ska den ha ett motstånd utöver det 145 Ohm's motståndet som behövs för att begränsa strömmen till lysdioden?

OFT:
Ni ser heller inte de nyskrivna inläggen här eller, utom när ni klickar på skriv svar?
Användarvisningsbild
anlamotte
Inlägg: 859
Blev medlem: 5 augusti 2003, 15:54:34
Ort: Stockholm
Kontakt:

funkar?

Inlägg av anlamotte »

...
Användarvisningsbild
anlamotte
Inlägg: 859
Blev medlem: 5 augusti 2003, 15:54:34
Ort: Stockholm
Kontakt:

lite tips...

Inlägg av anlamotte »

Hej jag gjorde något liknande för ett tag sedan med en AVR och Bascom...
tänkte dela med mig lite med lite tips...

Ett enkelt sätt att fixa det hela är att ha en interrupt rutin
som går på en timer... sen kan man använda en variabel som
'delar' tiden i ett visst antal delar... t.ex:

Kod: Markera allt


timer_int:
  If Timer_frame < 5 Then
    Incr Timer_frame
  Else
    Timer_frame = 0
  End If

  Leddata1 = 0
  Leddata2 = 0

  If Timer_frame < Leds(1) Then Leddata1.0 = 1
  If Timer_frame < Leds(2) Then Leddata1.1 = 1
  If Timer_frame < Leds(3) Then Leddata1.2 = 1
  If Timer_frame < Leds(4) Then Leddata1.3 = 1
  If Timer_frame < Leds(5) Then Leddata1.4 = 1
  If Timer_frame < Leds(6) Then Leddata1.5 = 1
  If Timer_frame < Leds(7) Then Leddata1.6 = 1
  If Timer_frame < Leds(8) Then Leddata1.7 = 1

  If Timer_frame < Leds(9) Then Leddata2.7 = 1
  If Timer_frame < Leds(10) Then Leddata2.6 = 1
  If Timer_frame < Leds(11) Then Leddata2.5 = 1
  If Timer_frame < Leds(12) Then Leddata2.4 = 1
  If Timer_frame < Leds(13) Then Leddata2.3 = 1
  If Timer_frame < Leds(14) Then Leddata2.2 = 1
  If Timer_frame < Leds(15) Then Leddata2.1 = 1
  If Timer_frame < Leds(16) Then Leddata2.0 = 1

  Porta = Leddata1
  Portb = Leddata2

  Incr D_tid

  If D_tid > Led_fade Then
    For I = 1 To 16
      If Leds(i) > 0 Then
        Decr Leds(i)
      End If
    Next I
    D_tid = 0
  End If
Return

resten är ganska enkel, värdet för varje lysdiod/lampa (ljusstyrka)
finns i array'en Leds(), värdet på Led_fade bestämmer hur snabbt
varje lysdiod ska släckas.

Med denna interupt rutin skulle ett rinnade ljus kunna skrivas med följande kod:

Kod: Markera allt


Do
  For i = 1 to 16
    Leds(i) = 8 ' full styrka
    Waitms 75
  Next i
loop

restens sköts av interupten... hoppas detta hjälper dej lite iaf..
Pinkevin
Inlägg: 285
Blev medlem: 1 januari 2004, 12:44:10
Ort: Norrtälje

Re: lite tips...

Inlägg av Pinkevin »

anlamotte skrev:Hej jag gjorde något liknande för ett tag sedan med en AVR och Bascom...
tänkte dela med mig lite med lite tips...

Ett enkelt sätt att fixa det hela är att ha en interrupt rutin
som går på en timer... sen kan man använda en variabel som
'delar' tiden i ett visst antal delar... t.ex:

Kod: Markera allt


...

resten är ganska enkel, värdet för varje lysdiod/lampa (ljusstyrka)
finns i array'en Leds(), värdet på Led_fade bestämmer hur snabbt
varje lysdiod ska släckas.

Med denna interupt rutin skulle ett rinnade ljus kunna skrivas med följande kod:

Kod: Markera allt


...

restens sköts av interupten... hoppas detta hjälper dej lite iaf..
Hej
Är bascom någon sorts basic till avr eller? För det är väldigt likt basic.
Jo, det hjälpte rätt mycket :)
Frågan är bara ifall man skulle kunna något liknande med en PIC.
En PIC 16F84A har bara 13 st I/O portar, medans den avr krets som du har använt ser ut att ha 16 st, så det blir lite problem där.
Men jag får knåpa vidare på hur jag ska göra för att få det att fungera.
Ni som har gjort knightrider's med fejdande lysdioder har ju använt AVR kretsar, så ifall jag ska kunna använda kod från era knightrider's så måste jag lära mig (lite grann) avr programmering också, vilket tar tid.
Men ni ska ha ett stort tack för att ni hjälper mig med detta.
Jag ska åka in till elfa senare idag och köpa resten av de saker jag behöver för att kunna bygga en JDM 2.
Också ska jag försöka få min vanliga knightrider att fungera (den som inte fadar).
Men innan jag åker så vill jag veta ifall den här koden fungerar, för ifall den inte gör det så åker jag inte in heller.
Tanken från början var att köpa en veroboard (kopplingsplatta, sån lödfri) eftersom att det är mycket mera praktist.
I katalogen så har de byggt på såna små bitar med 10 st 2x5 håls stora "terminaler" där man ska trycka ner komponentbenen, men på nätet så har de bara den stora "mittbiten" som man bygger på de mindre bitarna på.
Ifall det bara är mittibten utan sidobitarna så köper jag en experiment platta, men då måste koden fungera, eftersom att jag inte har någon lödsug eller avlödningsfläta, så när jag har lödat fast alla komponenter på kretskortet så får koden se till att fungera, för jag kan inte löda av komponenterna sen igen.
Så jag tror att jag kör iväg ett mail till dem och ser efter ifall det bara är mittibten eller om det även är sidobitarna också, och hoppas på svar innan jag åker in.
Pinkevin
Inlägg: 285
Blev medlem: 1 januari 2004, 12:44:10
Ort: Norrtälje

Inlägg av Pinkevin »

Nu tror jag att jag vet hur det ligger till med kopplingsplattorna.
Den lille varianten har 640 hål, och detta är endast mittbiten.
Den större varianten med 840 hål ,har mittbiten med 640 hål + 2 st sidobitar med vardera 100 hål (uppdelade i 10 st terminaler med 10 hål i var terminal), vilket ger 640 + 100 + 100 = 840.
Så måste det vara :D
Skriv svar