PIC Opgave 6 - Løbelys
En lille festlig applikation er at lave et løbelys.
Opgaven udvides i PIC Opgave 7 - Udvidet løbelys
Arduino Programmeringsopgave - At få 8 udgange til at lave et løbelys.
Opgaven går ud på at tænde en lysdiode, vente et begrænset stykke tid, slukke den og tænde den næste, så det kommer til at se ud som om lyset "løber" hen ad en række dioder.
Overvejelser på softwaren
Den nemme løsning er at anvende digitalWrite() og hard-kode 8 stykker kode som stort set ligner hinanden.
Prøv i stedet at overveje om en variabel kunne angive udgangen der skal tændes og slukkes, så man ikke skal have så meget kode der ligner hinanden.
Overvejelser på porten
Man kan også have en variabel som man betragter binært, og så skriver den direkte til porten som PORTD = talVar;
PORTD angiver output 0-7, så man vil kunne bruge dem samlet, dog med den begrænsning, at man ikke kan anvende den serielle port samtidigt med.
Bruger man PORTB i stedet, så har man kun 6 bit til rådighed som output 8-13.
Bruger man PORTC, så er der igen kun 6 bit til rådighed, der ligger som A0 til A5.
Husk at sætte alle portben til output.
PIC Programmeringsopgave - At få 8 udgange til at lave et løbelys.
Opgaven går ud på at tænde en lysdiode, vente et begrænset stykke tid, slukke den og tænde den næste, så det kommer til at se ud som om lyset "løber" hen ad en række dioder.
Overvejelser på porten
Det vil umiddelbart være lettest at få en port hvor det er mange samlede udgange, f.x. Port C til at lave tricket, da der kan være 8 brugbare bit i den port (I kan også begrænse opgaven til 6 bit hvis I arbejder med en PIC16F684). Det betyder dog også, at I skal have forbindelse til et fumlebræt, så det betyder I skal have lavet et stik og fladkabel til det. Stikkets benforbindelser kan findes i Udviklingsboard. I kan finde mere konkret information under de enkelte PIC-kredse i denne wiki.
Udvidelser
Den første udvidelse I kan lave er at udnytte en variabel til at huske på udgangens sidste tilstand, i stedet for blot at tænde enkelt-udgange ved at kopiere og tilrette koden.
Udvidelse 2
Udvid opgaven med at få løbelyset til at løbe frem og tilbage.
Udvidelse 3
Udvid opgaven med at det ikke er 1 lysdiode af gangen der er tændt, men 3 af gangen.
Udvidelse 4
Udvid opgaven ved at lade det være styret af en indgang, hvilken vej løbelyset løber. I må selv bestemme om det er den med 1 eller 3 lysdioder i laver, eller dem begge.
Udvidelse 5
Udvid / tilret opgaven så løbelyset løber frem og tilbage af sig selv. I må selv bestemme om det er den med 1 eller 3 lysdioder i laver, eller dem begge.
| PIC | |
|---|---|
| PIC-Typer | PIC16F84 - PIC12F675 - PIC16F628 - PIC16F684 - PIC16F690 - PIC16F877 - PIC18F2550 |
| Programmeringsbegreber | Maskinkode - Mikrocontroller |
| Programmeringsmiljø | PIC-brænder - UsbPicProg - Analog indgang - ICSP |