![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
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