![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
final
Dependencies: BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG
Diff: Readme.md
- 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 +