Opgave 1:

  1. Læs Sensor data ind og skriv det ud på serial porten.
  2. Styr med et timer interrupt med hvilken hastighed sensor data læses ind. Det vil sige, at når der kommer et timer interrupt, læses sensor data (start med at sætte et timer interrupt op for hver 2. sekund). Det er "ikke tilladt", at skrive den aflæse sensor værdi ud på seriel porten i selve timer interruptet. I stedet skal I i timer interrupt rutinen sætte et flag, som I tester for i main loop. Er flaget sat, skal I udskrive den aflæse sensor værdi på Seriel porten og selvfølgelig samtidig resette flaget. Timer Interrupts implementeres lettest ved brug af Ticker. I skal installerer Ticker library i Arduino IDE'en. Derefter kan I finde god dokumentation til at implementere Ticker i eksempel filen på dette link : c:\Users\"user navn"\Documents\Arduino\libraries\Ticker\examples\Ticker\Ticker.ino 
  3. Kobl et Display på jeres opstilling og udskriv disse info i displayet : 1) Antal timer interrupts, 2) Sidste aflæste sensor værdi, 3) Timeout værdi for Timer interrupt (de 2 sekunder til at starte med). Det smarte vil her være, at udskrive til displayet samtidig med, at I udskriver til seriel porten.
  4. I forbindelse med hvert Timer Interrupt, skal I toggle med en tilkoblet Lysdiode.
  5. Stop programmet med et breakpoint og noter at der ikke kommer mere data ind fra serial porten med monitoren på jeres computer.
  6. Går igennem programmet og se hvordan sensor data ændre sig ved at kigge i "VARIABLES" i debuggeren.
  7. Når man igennem de første 6 punkter, implementer da funktionalitet til, at jeres Arduino program kan modtage en ny Timeout værdi  fra et terminal program (f.eks. Hercules). Find selv på en lille protokol, således at jeres program kan håndtere modtagne karakterer på den serielle port. Der er god hjælp til at implementere denne funktionalitet i linket her : https://www.programmingelectronics.com/serial-read/
  8. Yderligere et punkt man kan arbejde med. Implementer funktionalitet i jeres program, således at dette genererer et interrupt, når der trykkes på en tilknyttet knap. I skal vedligeholde en tæller, som viser hvor mange gange, der er trykket på den eksterne knap. Denne tæller værdi skal I udskrive på den serielle port med passende tekst tilkoblet. Igen må I ikke udskrive inde fra Interrupt rutinen, men I skal igen styre denne udskrift med et flag. 


I forbindelse med opgaven her, kommer I ikke udenom at skulle bruge det reserverede ord volatile ved erklæringen af nogle af jeres variabler. Google selv hvad ordet volatile gør ved en variabel og hvorfor det kan være/er nødvendig i visse program konstruktioner. 


Last modified: Thursday, 21 April 2022, 11:12 PM