PIC Opgave 6a - kontakt

Fra HTX Arduino
Spring til navigation Spring til søgning

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


Digitale Opgaver
Kombinatorisk Logik Opgave 1a - Opgave 1b - Opgave 2 - Opgave 3 - Opgave 4 - Opgave 5 - Opgave 6 - Opgave 7 - Opgave 8 - Opgave 9 - Opgave 10
Sekvensiel Logik Opgave 11 - Opgave 12 - Opgave 13 - Opgave 14
Analoge Opgaver
Modstande og Ohms lov Modstands Opgave 1 - Modstands Opgave 2 - Modstands Opgave 3 - Modstands Opgave 4 - Modstands Opgave 5 - Modstands Opgave 6 - Modstands Opgave 7 - Modstands Opgave 8 - Modstands Opgave 9 - Modstands Opgave 10
Kondensator og Spole Kondensator opgaver 1 - Kondensator DC opgave 1 - Kondensator AC opgave 1 - Spolen 1 - Seriekobling og parallelkobling - Spolen 2 - Beregning af spoleværdier (selvinduktionen) - Spolen 3 - Tidskonstant for RL-led - Spolen 4 - Beregning af induktiv-reaktansen
Operationsforstærker Opamp Opgave 1 - Opamp Opgave 2 - Opamp Opgave 3
Diverse Opgaver Opgaver Diagram - Opgaver Transformator - Transistor opgave - Zenerdiode Opgave 1
Programmerings Opgaver
Arduino Arduino Blink - Arduino Opgave 01 - Blink - Arduino Button - Analog Out - Arduino StateChangeDetection - Arduino termometer - Arduino termostat - Arduino udgangsforstærkning
PIC PIC Opgave 1 - Blink - PIC Opgave 2 - Gates - PIC Opgave 3 - Udvidet blink - PIC Opgave 4 - Kombinatorik - PIC Opgave 5 - Flip-flops - PIC Opgave 6 - Løbelys - PIC Opgave 6a - kontakt - PIC Opgave 7 - Udvidet løbelys - PIC Opgave 8 - Sekventielle kredsløb - PIC Opgave 9 - Multivibratorer - PIC Opgave 10 - Samtidighed - PIC Opgave 11 - Tastatur - PIC Opgave 12 - Display - PIC Opgave 13 - A-D converter - PIC Opgave 14 - Interrupt - PIC Opgave 15 - Seriel komm - PIC Opgave 16 - Lyskryds - PIC Opgave 17 - Tyverialarm
PIC Opgave Løsninger PIC Opg 1 Løsning - PIC Opg 2 Løsning - PIC Opg 3 Løsning - PIC Opg 4 Løsning - PIC Opg 5 Løsning