final

Dependencies:   BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG

head.h

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

File content as of revision 0:af94a5725e48:

//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;
}