final

Dependencies:   BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG

Revision:
0:af94a5725e48
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Readme.md	Thu Oct 25 12:32:13 2018 +0000
@@ -0,0 +1,117 @@
+# Denne tekstfil gennemgår funktioner, variabler, arbejdsmetoder mm. følgende
+strukturen af selve programmet
+Navn - Andreas Bissenbach Petersen
+Start Dato - 15 Oktober 2018
+
+##Index##
+Afsnit-Beskrivelse
+1 -Generel information
+2 -Klasser og biblioteker
+3 -Printf tekst funktioner
+4 -Wait funktion
+5 -Variabler
+6 -Voids
+7 -Goto, labels og loops
+8 -Trådet programmering
+9 -Sensorer
+10 -Fremgangsmåder
+11 -Diskussion og problemstillinger
+12 -Log
+
+1.#Generel information
+Projektet består af to filer, en main fil(cpp), hvor den overordnede struktur er
+og en header fil(h), hvor variabler, tråde og lign. opholder sig.
+Denne informationstekst har til formål at give et kort udkast af selve projektets
+struktur og forklaring hvordan opgaven er løst.
+
+2.#Klasser og biblioteker
+De biblioteker, somn er indkluderet har vær især en række klasser, som bruges til
+løsning af opgaven. Bibliotekerne er bestående af hhv: Touchscreen, 
+LCD(liquid crystal display - display) og en utility pakke(BSP). 
+##Hvorfor hente andres biblioteker og klasser?
+Grunden til at jeg Henter andres biblioteker er, at samt opgavens omfang og tid til udvikling et omstændigt
+og brugbart program, vurderes det bedst at bruge andres og rette fokus på udvikling og læring.
+
+3.#Printf tekst funktioner
+\r - Bruges til at gå til start af linje
+\n - Går til ny/næste linje
+\0 - Betyder null, kan være brugbar i eksempelvis if statements
+
+Udover disse, har jeg gjort brug af diverse konverterings funktioner
+eksempelvis, skal der implementeres en int variabel i output, udføres det således:
+printf("Eksempel tekst: %d", IntegerVariabel), hvor variablen indsættes hvor %d er.
+Kan variablen ikke parses, kan man eksempelvis sætte "(int)" alt efter behovet af
+konverteringsbehov
+
+4.#Wait() funktionen
+Denne funktion kan bruges til flere formål. Mest at bestemme i hvilket tempo koden
+kører i, men også en slags sikkerhed så programmet kan kompile ordenligt og mindske
+fejl når programmet køres.
+
+5.#Variabler
+Variablerne er for det meste opstillet i header filen. Her er de grupperet efter funktion
+og herefter grupperet efter variabel type. De forskellige variabler er angivet således:
+
+Konstanter - en fast værdi som ikke skal ændres, bruges eksempelvis i formler
+Double - Typen som nemmest kan parses gennem output når det gælder temperaturer
+Int - Den mest hyppige variabel, bruges mest når tallet ikke har komma
+float - Bruges hvis den kan parses i output, kan indeholde flere decimaler end double
+Char og Char array - enkel og flere bogstaver/tal. char defineres i output med ''
+
+6.#Voids
+Hvorfor bruge voids frem for klasser, objekter, int funktioner mm?
+jeg har vurderet, at voids i denne sammenhæng er et godt værktøj til denne opgave. 
+Med Voids kan man lave parameter overførsel, skabe god struktur(Navngivning, nem instantiering)
+og så kræver voids ikke, at man returnerer noget.
+En klasse kan skal således udskrives sådan:
+void TestVoid(){}
+TestKlasse TestObject;
+TestObject.TestVoid();
+Hvor en simpel void bare kan være: void test(){} uden at instantiere objektet fra klassen
+
+7.#Goto, labels og loops
+Jeg har valgt at bruge goto statements for at gøre brug af boardets userbutton. Til userbutton
+har jeg tilsat bool værdier, hvor disse, bestemmer hvor i programmet jeg er. Dette giver
+overskuelighed hvor man kan opstille og sammenligne værdier. Det blev for mig oplagt, da
+der skal vælges mellem fahrenheit og celcius.
+
+8.#Trådet programmering
+Med trådet programmering er det muligt at have funktioner kørende uafhængigt af hinanden.
+Til input er dette meget brugbar, når det gælder loops. Dette skyldes, når man sidder i en
+uendelig while loop, bliver koden kørt igen og igen, som også blokerer for user input.
+Med trådet programmering, kan der være en løsning til dette.
+
+9.#Fremgangsmåder
+##Direkte kompilering - Jeg fandt ud af, at det i større grad ville være hurtigere
+at omdirigere browser til at hente bin filen fra mbed direkte ind i kontrolleren
+
+##Sikkerhed - Hver gang større ændringer laves eller filer slettes, kopierer jeg mit projekt 
+ind i et test projekt. Her kan jeg ændre, uden at være bange for at miste data. 
+Udover dette, kopierer jeg mit projekt ind i en tekstfil som jeg opbevarer i foldere,
+dette er også brugbart til dokumentation, historik og forståelse.Jeg laver ikke for mange 
+ændringer, før jeg kompilerer, så jeg har styr over hvad der er blevet ændret.
+
+10.#Sensorer
+Hovedsageligt, har jeg brugt analog inputs(A0, A1, A3).De bliver instantieret som objekt, gennem den
+hentede AnalogIn klasse som: AnalogIn LightSensor(A0), AnalogIn lyd(A1), AnalogIn lys(A3)
+objekt, inde i () er analog addressen til sensoren  og AnalogIn er klassen fra biblioteket.
+
+11.#Diskussion og problemstillinger
+I starten brugte jeg noget tid på først at læse og forstå C++ før jeg gik igang. Der blev
+savnet intellisense fra visual studio efter noget tid, og jeg prøvede at implementere embedded
+programmering i visual studio, men vurderede at det var for stor en opgave at få det opsat.
+Der var problemer med trådet programmering da jeg ikke havde viden/biblioteker til
+at instantiere og håndtere denne funktion. Undervejs havde jeg en del problemer med min
+controller, da ikke alle analog porte fungerede. Fandt ud af undervejs, at det var selve
+boardet som ikke kunne få ordenlig forbindelse til mit base shield.
+
+12.#Log
+16 Oktober 2018 - Tæller program laves
+17 Oktober 2018 - Serial input/output testes
+17 Oktober 2018 - Blink funktion med knap udvikles
+18 Oktober 2018 - Temperatur på display udvikles
+19 Oktober 2018 - Selve hovedprojektet igangsættes
+22 Oktober 2018 - Alle sensorer fungerer
+23 Oktober 2018 - Trådet programmering fungerer
+24 Oktober 2018 - Program finpudses og opstilles
+