sss
Dependencies: mbed X_NUCLEO_IKS01A2
main.cpp@0:d704d2f21671, 2021-01-23 (annotated)
- Committer:
- percu
- Date:
- Sat Jan 23 20:02:34 2021 +0000
- Revision:
- 0:d704d2f21671
xd
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
percu | 0:d704d2f21671 | 1 | #include "mbed.h" |
percu | 0:d704d2f21671 | 2 | #include "XNucleoIKS01A2.h" // inicjacja bibliotek |
percu | 0:d704d2f21671 | 3 | AnalogIn Czujnik_ABP(A0); // inicjacja czujnika |
percu | 0:d704d2f21671 | 4 | static XNucleoIKS01A2 *mems_expansion_board = XNucleoIKS01A2::instance(D14, D15, D4, D5);// płytka rozszerzająca |
percu | 0:d704d2f21671 | 5 | static HTS221Sensor *hum_temp = mems_expansion_board->ht_sensor; ////czujniki z płytki rozszerzającej |
percu | 0:d704d2f21671 | 6 | static LPS22HBSensor *press_temp = mems_expansion_board->pt_sensor; |
percu | 0:d704d2f21671 | 7 | //coś do dziesiątek |
percu | 0:d704d2f21671 | 8 | static char *print_double(char* str, double v, int decimalDigits=2) |
percu | 0:d704d2f21671 | 9 | { |
percu | 0:d704d2f21671 | 10 | int i = 1; |
percu | 0:d704d2f21671 | 11 | int intPart, fractPart |
percu | 0:d704d2f21671 | 12 | ;int len; |
percu | 0:d704d2f21671 | 13 | char *ptr;/* prepare decimal digits multiplicator */ |
percu | 0:d704d2f21671 | 14 | for (;decimalDigits!=0; i*=10, decimalDigits--); |
percu | 0:d704d2f21671 | 15 | /* calculate integer & fractinal parts */ |
percu | 0:d704d2f21671 | 16 | intPart = (int)v; |
percu | 0:d704d2f21671 | 17 | fractPart= (int)((v-(double)(int)v)*i);/* fill in integer part */ |
percu | 0:d704d2f21671 | 18 | sprintf(str, "%i.", intPart);/* prepare fill in of fractional part */ |
percu | 0:d704d2f21671 | 19 | len = strlen(str); |
percu | 0:d704d2f21671 | 20 | ptr = &str[len];/* fill in leading fractional zeros */ |
percu | 0:d704d2f21671 | 21 | for (i/=10;i>1; i/=10, ptr++) |
percu | 0:d704d2f21671 | 22 | { |
percu | 0:d704d2f21671 | 23 | if (fractPart >= i) |
percu | 0:d704d2f21671 | 24 | { |
percu | 0:d704d2f21671 | 25 | break; |
percu | 0:d704d2f21671 | 26 | } |
percu | 0:d704d2f21671 | 27 | *ptr = '0'; |
percu | 0:d704d2f21671 | 28 | }/* fill in (rest of) fractional part */ |
percu | 0:d704d2f21671 | 29 | sprintf(ptr, "%i", fractPart); |
percu | 0:d704d2f21671 | 30 | return str; |
percu | 0:d704d2f21671 | 31 | } |
percu | 0:d704d2f21671 | 32 | int main () |
percu | 0:d704d2f21671 | 33 | { |
percu | 0:d704d2f21671 | 34 | uint8_t id; |
percu | 0:d704d2f21671 | 35 | float cisnienie, temperatura,odczyt_analog; // Deklaracja zmiennych używanych w programie |
percu | 0:d704d2f21671 | 36 | char buffer1[32], buffer2[32],buffer3[32],buffer5[32]; |
percu | 0:d704d2f21671 | 37 | double Idealne_cisnienie,bary,ile,cisnieni_min,cisnienie_max,Zasieg_Czujnika; |
percu | 0:d704d2f21671 | 38 | int wzorzecP,wzorzecT; |
percu | 0:d704d2f21671 | 39 | odczyt_analog=Czujnik_ABP.read(); // odczytanie wartości z portu A0 |
percu | 0:d704d2f21671 | 40 | odczyt_analog=odczyt_analog*3300; // przeliczenie wartości na mV |
percu | 0:d704d2f21671 | 41 | printf("Wartosc = %.0fmV\n",odczyt_analog); |
percu | 0:d704d2f21671 | 42 | |
percu | 0:d704d2f21671 | 43 | hum_temp->enable(); // Uruchomienie czujnika odpowiedzialnego za pomiar temperatury |
percu | 0:d704d2f21671 | 44 | press_temp->enable() ; // Uruchomienie czujnika odpowiedzialnego za pomiar ciśnienia |
percu | 0:d704d2f21671 | 45 | hum_temp->get_temperature(&temperatura); //Odczytanie wartości ciśnienia |
percu | 0:d704d2f21671 | 46 | press_temp->get_pressure(&cisnienie); //Odczytanie wartości temperatura |
percu | 0:d704d2f21671 | 47 | printf("Manometr do kol\r\n"); |
percu | 0:d704d2f21671 | 48 | hum_temp->read_id(&id);// Pobranie id czujnika temperatura z płytki rozszerzenia |
percu | 0:d704d2f21671 | 49 | press_temp->read_id(&id); // Pobranie id czujnika ciśnienia z płytki rozszerzenia |
percu | 0:d704d2f21671 | 50 | press_temp->get_pressure(&cisnienie); // Odczyt wartości ciśnienia z płytki rozszerzenia |
percu | 0:d704d2f21671 | 51 | printf(" Cisnie atmosmeryczne: %7s hPa\r\n ",print_double(buffer1, cisnienie)); // Wyświetlenie wartości ciśnienia |
percu | 0:d704d2f21671 | 52 | press_temp->get_temperature(&temperatura); // Odczytanie wartości temperatury z płytki rozszerzenia |
percu | 0:d704d2f21671 | 53 | printf("Temp: %7s C\r\n ", print_double(buffer2,temperatura)); // Wyświetlenie wartości temperatury |
percu | 0:d704d2f21671 | 54 | wzorzecP=230000; //Ciśnieni wzorcowe w kole |
percu | 0:d704d2f21671 | 55 | wzorzecT=293; // Temeratura wzorcowa w Kelwinach |
percu | 0:d704d2f21671 | 56 | Idealne_cisnienie=(((wzorzecP)*(temperatura+ 273))/(wzorzecT)); // coś liczymy wartość cisnienia pożądana w kole |
percu | 0:d704d2f21671 | 57 | bary=Idealne_cisnienie/100000; // przeliczenie na bary z paskali |
percu | 0:d704d2f21671 | 58 | ile=(bary-(cisnienie/1000)); // ile należy upuscić z koła |
percu | 0:d704d2f21671 | 59 | printf("Ile ma byc w kole? %7s B\r\n ", print_double(buffer3,bary)); // Wartość ciśnienia jaka powinna znajdować się kole |
percu | 0:d704d2f21671 | 60 | printf("Ile jest w kole? %7s B\r\n ", print_double(buffer1,cisnienie/1000)); // Wartość ciśnienia jak znaduje się w kole |
percu | 0:d704d2f21671 | 61 | if ((cisnienie/1000)<bary) // początek warunku if odpowiedzialnego za określenie deczycji co należy zrobić z ciśnieniem w kole (Jeżeli ciśnieni mniejsze niż 2.5 ) |
percu | 0:d704d2f21671 | 62 | { |
percu | 0:d704d2f21671 | 63 | printf("Upusc %7s B\r\n ", print_double(buffer5,ile )); |
percu | 0:d704d2f21671 | 64 | } |
percu | 0:d704d2f21671 | 65 | else if ((cisnienie/1000)>=2.5 && (cisnienie/1000)<=2.7 ) // Jeżeli ciśnienie znaduje się w przedziale <2.5;2.7> |
percu | 0:d704d2f21671 | 66 | { |
percu | 0:d704d2f21671 | 67 | printf("Nic nie trzeba robić %7s B\r\n ", print_double(buffer5,ile )); |
percu | 0:d704d2f21671 | 68 | |
percu | 0:d704d2f21671 | 69 | } |
percu | 0:d704d2f21671 | 70 | else if ((cisnienie/1000) > bary ) //Jeżeli ciśnienie ma wartość powyżej 2.7 |
percu | 0:d704d2f21671 | 71 | { |
percu | 0:d704d2f21671 | 72 | printf("dobij %7s B\r\n", print_double(buffer5,ile)); |
percu | 0:d704d2f21671 | 73 | } |
percu | 0:d704d2f21671 | 74 | } |
percu | 0:d704d2f21671 | 75 | |
percu | 0:d704d2f21671 | 76 | |
percu | 0:d704d2f21671 | 77 |