PIC Opgave 6a - kontakt
Opgavens mål
Denne opgave har til formål at arbejde med de problemer man oplever, når man anvender en kontakt som input i programmering.
Kontaktens Niveau igennem
1. delopgave.
For at se om der er hul igennem fra kontakten og til et par udgange, hvor den ene udgang viser det samme niveau som kontakten og den anden udgang viser det inverterede, altså det omvendte niveau.
Tælle op
2. delopgave.
Ideen er at kunne tælle op i en variabel inde i PIC'en, ved at man får talt variablen EN frem hver gang man klikker på knappen.
For at den ikke tæller hver gang den kommer rundt i koden er der hjælp at hente ved at kigge på forkant princippet.
Denne opgave er lidt forskellige om man løser den på Arduino eller på PIC.
PIC løsning
Denne opgave kræver at man har 4 lysdioder som er tilslutte bit 0-3 på port C.
For at kunne se om det virker, så skal man have tallet ud på lysdioderne, hvor det bliver præsenteret som et binært tal.
Man kan få hele tallet (fra variablen tal) ud på porten ved følgende kommando:
PortC = tal
Ideen med det ovenstående er at illustrere hvordan de binære talsystem fungerer.
Hvis du vil have en enkelt lysdiode til at vise tallet kan du bruge
if tal == 0 then
PortC = 0
else
PortC = 1 << tal
-- Det << der står mellem 1 og tal gør det at et 1 tal bliver skiftet bitmæssigt det antal der står i tal
end if
Som en hjælp til dette kan man evt. kigge på princippet i at finde en forkant på et signal.
Arduino løsning
For at "se" hvad der ligger i en variabel i arduinoen, så er den letteste løsning at anvende Serial Monitor til det.
Udskiften af variablen gøres blot ved:
Serial.println(tal);
Hvis man ønsker at få den binære visning i den serielle monitor, så kan man udskrive med:
Serial.println(tal, BIN);
Tælle både på forkant og bagkant
3. delopgave.
En udvidelse til delopgave 2 er at programmet skal tælle en frem både idet man trykker knappen ned, og når man slipper knappen.
Prel på en kontakt
4. delopgave.
Når man klikker på en kontakt, kan der i det øjeblik kontakten er ved at få forbindelse ske det at der lige kommer en meget kort periode hvor den tænder og slukker, hvilket programmet kan nå at opfatte, så den tæller flere trin op i variablen - kontroller om I kan få delopgave 2 eller 3 til at opføre sig på den måde. Dette begreb kaldes for prel, og kan behandles enten elektrisk eller programmeringsmæssigt.
Denne opgave skal levere en programmeringsmæssig løsning på prel.
PIC | |
---|---|
PIC-Typer | PIC16F84 - PIC12F675 - PIC16F628 - PIC16F684 - PIC16F690 - PIC16F877 - PIC18F2550 |
Programmeringsbegreber | Maskinkode - Mikrocontroller |
Programmeringsmiljø | PIC-brænder - UsbPicProg - Analog indgang - ICSP |