termometr

z foreste, 1 rok temu, napisane w C++, wyświetlone 76 razy.
URL https://codetab.e3x.pl/view/3b60c20e Udostępnij
Pobierz wklejkę lub Pokaż surowy tekst
  1. #include "mbed.h"
  2. #include "MPL3115A2.h"
  3. #include "Terminal.h"
  4. #include "eeprom.h"
  5. #include "cstdlib"
  6. #include "string"
  7.  
  8. #define EEPROM_ADDR 0x00   // I2c EEPROM address is 0x00
  9.  
  10. #define SDA PTE25            // I2C SDA pin
  11. #define SCL PTE24           // I2C SCL pin
  12. int32_t eeprom_size ,  addr;
  13.  
  14. Terminal pc(PTA2, PTA1); // tx, rx
  15. I2C i2c(PTE0, PTE1);       // sda, scl
  16. EEPROM brain(SDA, SCL, EEPROM_ADDR, EEPROM::T24C08);
  17. MPL3115A2 sensor(&i2c, &pc);
  18. int temperature_live_state, read_user_temp;
  19. int val = 0;
  20. Timer licznik;
  21. char buffer[10];
  22. DigitalOut buzzer(PTA12);     // Sanity check to make sure the program is working.
  23. DigitalOut myled1(PTD1 , 1);     // Sanity check to make sure the program is working.
  24.  
  25.  
  26.  
  27. void alarm(string  & temp_read_input)
  28. {
  29.         string str = temp_read_input;
  30.         temperature_live_state = atoi(str.c_str());
  31.         if (temperature_live_state >= read_user_temp)
  32.         {
  33.                 licznik.start();
  34.        
  35.                 if (licznik.read_ms() <= 1000)
  36.                 {
  37.                         buzzer = !buzzer;
  38.                 }
  39.                 licznik.reset();
  40.         }
  41.         if (read_user_temp > temperature_live_state)
  42.         {
  43.                 buzzer = 0;
  44.         }
  45.        
  46. }
  47.  
  48. void rs232_menu()
  49. {
  50.        
  51.  
  52.         pc.scanf("%5s", buffer);
  53.        
  54.        
  55.        
  56.  
  57.  
  58.          //ktw = buffer;
  59. }
  60.  
  61. void screen()
  62. {
  63.         pc.foreground(0xFFFF00);
  64.         pc.hideCursor();
  65. }
  66. void intro()
  67. {
  68.         pc.locate(25, 5);
  69.         pc.printf(" ** inteligentny Termometr   ** ");
  70.         pc.locate(25, 6);
  71.         pc.printf("Created by Foreste");
  72. }
  73. void labels()
  74. {
  75.         pc.locate(20, 7);
  76.         pc.printf("Temperatura");
  77.         pc.locate(35, 7);
  78.         pc.printf("Cisnienie");
  79.         pc.locate(48, 7);
  80.         pc.printf("alarm wysokiej temperatury");
  81. }
  82. void input_add_user_define_temperature()
  83. {
  84.         char dane[4];
  85.         int tempint;
  86.  
  87.         pc.gets(dane, 3);
  88.        
  89.         for (int z = 0; z < 4; z++)
  90.         {
  91.                
  92.                 if (isdigit(dane[z]))//sprawdzanie czy znak jest liczbą
  93.                 {
  94.        
  95.                         tempint = atoi(dane); //kowertowanie tablicy typu char na zmienną int
  96.                         read_user_temp = tempint;
  97.                 }
  98.         }
  99.         while (val <= 0)
  100.         {
  101.                 pc.locate(1, 7);
  102.                 pc.printf("Wpisz wartość temperatury ,po której termometr bedzie sygnalizował przekroczenie");
  103.                 read_user_temp;
  104.                 if ((read_user_temp >= 12) && (read_user_temp <= 40))
  105.                 {
  106.                         pc.cls();
  107.                         screen();
  108.                         intro();
  109.                         brain.write(eeprom_size = 8, (int32_t) read_user_temp);
  110.                         pc.locate(20, 7);
  111.                         pc.printf("Zapisalem podaną temperature przekroczenia");
  112.                         wait(5);
  113.                         val = 1;
  114.                 }
  115.                 else
  116.                 {
  117.                         pc.cls();
  118.                         screen();
  119.                         intro();
  120.                         pc.locate(20, 7);
  121.                         pc.printf("Wpisano niepoprawne dane. Dopuszczalny zakres: od 12 do 40");
  122.                         wait(5);
  123.                 }
  124.         }
  125. }
  126.                        
  127. int main() {
  128.        
  129.         pc.baud(9600);
  130.         pc.cls();
  131.         sensor.init();
  132.         screen();
  133.         intro();
  134.         wait(5);
  135.         //Altitude a;
  136.         Temperature t;
  137.         Pressure p;                                                                                                                                    
  138.         // Offsets for Dacula, GA
  139.         //sensor.setOffsetAltitude(83);
  140.         sensor.setOffsetTemperature(20);
  141.         sensor.setOffsetPressure(-32);
  142.         brain.read((uint32_t)(eeprom_size = 8), (int32_t&) read_user_temp);
  143.        
  144.         while (read_user_temp <= 0)
  145.         {
  146.                 input_add_user_define_temperature();
  147.         }
  148.         pc.cls();
  149.        
  150.        
  151.         while (1)
  152.         {
  153.                 sensor.readTemperature(&t);
  154.         sensor.setModeStandby();
  155.                 sensor.setModeBarometer();
  156.                 sensor.setModeActive();
  157.                 sensor.readPressure(&p);
  158.                 screen();
  159.                 intro();
  160.                 labels();
  161.                 string temp_cache = t.print();
  162.                 alarm(temp_cache);
  163.                 pc.locate(20, 9);
  164.                 pc.printf("%s C", t.print());
  165.                 pc.locate(35, 9);
  166.                 pc.printf("%s Hpa", p.print());
  167.                 pc.locate(50, 9);
  168.                 pc.printf("%d", read_user_temp);
  169.                 pc.locate(34, 11);
  170.                 rs232_menu();
  171.                 pc.puts( buffer);
  172.                 sensor.setModeStandby();
  173.                 sensor.setModeAltimeter();
  174.                 sensor.setModeActive();
  175.         }
  176. }

odpowiedź "termometr"

Tutaj możesz odpowiedzieć na wklejkę z góry

captcha