final

Dependencies:   BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG

Readme.md

Committer:
abp123
Date:
2018-10-25
Revision:
0:af94a5725e48

File content as of revision 0:af94a5725e48:

# 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