![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
final
Dependencies: BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG
Diff: head.h
- Revision:
- 0:af94a5725e48
diff -r 000000000000 -r af94a5725e48 head.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/head.h Thu Oct 25 12:32:13 2018 +0000 @@ -0,0 +1,129 @@ +//Klasser fra biblioteker +Thread thread; +InterruptIn button(USER_BUTTON); +DigitalOut led(LED1); +AnalogIn temp(A3); +AnalogIn lyd(A1); +AnalogIn LightSensor(A0); +LCD_DISCO_F746NG lcd; +TS_DISCO_F746NG ts; + +//Variabler +const int R0 = 100000; +const int B=4275; + +bool btnPress = true; + +double temperature; +double fahrenheit; + +//Variabler Til display & Info fra user input +int Bnr; +int Lnr; +int inp; +//variabler til data iteration +int i; +//antal er sat til 1, for at tage 1 sæt af gangen +int antal = 1; +char cAntal[5]; +//lys +float LVal; +//lyd +int lydstyrke; +int cPut; +//til display, unsigned int 8 bit(255 i decimanl) +uint8_t text[30]; + +//Voids +//Denne funktion bruger parameter overførsel for at håndtere vores indput fra putty/console +void Num(char ln[], int M) +{ + //i2 for at have sin egen itererings variabel, da i, er brugt andre steder til for loops + int i2 = 0; + char c; + //imens i2 variablen er mindre end max værdien og vores input ikke er i begyndelsen af linjen, + //tilføjes en char til vores array(string) + while (i2 < M && (c = getchar()) != '\r') + //Tilføjer alle chars med optælling + ln[i2++] = c; + ln[i2] = '\0'; +} +//Parameter overfører bygnings og lokale nummer til display +void DisplayVoid(int B, int L) +{ + lcd.Clear(LCD_COLOR_DARKBLUE); + lcd.SetBackColor(LCD_COLOR_DARKBLUE); + lcd.SetTextColor(LCD_COLOR_WHITE); + sprintf((char*)text, "Bygning: %d", B); + lcd.DisplayStringAt(0, LINE(1), (uint8_t *)&text, LEFT_MODE); + sprintf((char*)text, "Lokale: %d", L); + lcd.DisplayStringAt(0, LINE(2), (uint8_t *)&text, LEFT_MODE); +} +//Denne void bruges til Tråd +void InputThread() +{ + while (1) { + wait(0.5); + //getchar() skal defineres til int for at kunne parses. Chars i c programmering parses som int + inp = getchar(); + //input skal være lig den definerede værdi og vil ikke returnere noget hvis det er tomt/null + if (inp == '1' && inp != (int)"\0") + printf("Temperatur i hex: %x\n", (int)temp.read_u16()); + else if (inp == '2' && inp != (int)"\0") + printf("Lyd: %d\n", lydstyrke); + else if (inp == '3' && inp != (int)"\0") + printf("Lys: %f\n", LVal); + //returnerer intet, hvis ovenstående statements ikke bliver mødt + else + printf(""); + } +} + +void TempVoid() +{ +//Defineres ud i et, uden del-variabler(undtagen konstanter), så værdien bliver dynamisk + temperature=1.0/(log(R0*(65535.0/((double)temp.read_u16())-1.0)/R0)/B+1/298.15)-273.15; + fahrenheit = temperature * 1.8 + 32; + if(btnPress == true) { + sprintf((char*)text, "Temperatur: %f", temperature); + lcd.DisplayStringAt(0, LINE(5), (uint8_t *)&text, CENTER_MODE); + } else if(btnPress == false) { + sprintf((char*)text, "Fahrenheit: %f", fahrenheit ); + lcd.DisplayStringAt(0, LINE(5), (uint8_t *)&text, CENTER_MODE); + } +} + +void LydVoid() +{ + lydstyrke = (int)lyd.read_u16(); + if(lydstyrke != 0 && lydstyrke > 25000) { + sprintf((char*)text, "Sound is too high"); + lcd.DisplayStringAt(0, LINE(6), (uint8_t *)&text, CENTER_MODE); + wait(2.00); + } else if(lydstyrke != 0 && lydstyrke <25000) { + sprintf((char*)text, "Sound level is ok"); + lcd.DisplayStringAt(0, LINE(6), (uint8_t *)&text, CENTER_MODE); + wait(0.25); + } +} + +void LysVoid() +{ + LVal = (float)(1023-LightSensor.read())*10/LightSensor.read(); + if(LVal <= 55000) { + sprintf((char*)text, "It's bright now "); + lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); + } else if(LVal > 55000) { + sprintf((char*)text, "It's getting dark "); + lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); + } +} +//Til user button +void pressed() +{ + btnPress = false; +} +void pressed2() +{ + btnPress = true; +}