termometr

z foreste, 2 lata temu, napisane w C++, wyświetlone 45 razy. [paste_expire] 1 sekunda.
URL https://codetab.e3x.pl/view/fb6b16f0 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. Terminal pc(PTA2, PTA1); // tx, rx
  14. I2C i2c(PTE0, PTE1);       // sda, scl
  15. EEPROM brain(SDA, SCL, EEPROM_ADDR, EEPROM::T24C08);
  16. MPL3115A2 sensor(&i2c, &pc);
  17. int temperature_live_state;
  18. static int read_user_temp;
  19. int val = 0;
  20. int *temp_data = &read_user_temp;
  21. Timer licznik;
  22. char buffer[20];
  23. char dane[4];
  24. float  check_battery;
  25. int counter = 10000000;
  26.  
  27. DigitalOut buzzer(PTA12);     // Sanity check to make sure the program is working.
  28. DigitalOut myled1(PTD1, 1);     // Sanity check to make sure the program is working.
  29. AnalogIn batery(PTC2);
  30.  
  31.  
  32. float monitor_batery()
  33. {
  34.         check_battery = batery.read();
  35.         float resume;
  36. return  resume = (check_battery*4.1);
  37. }
  38. void refresh_buffer()
  39. {
  40.         for (int y = 0; y < sizeof(buffer); y++)
  41.                 buffer[y] = 0;
  42.         for (int z = 0; z < sizeof(dane); z++)
  43.                 dane[z] = 0;
  44. }              
  45. void serials()
  46. {
  47.         if (pc.readable())
  48.         {
  49.                 pc.scanf( "%s", buffer);
  50.         }
  51. }
  52.  
  53. void signaller(int clock)
  54. {
  55.         licznik.start();
  56.        
  57.         if (licznik.read_ms() <= clock)
  58.         {
  59.                 buzzer = !buzzer;
  60.                        
  61.         }
  62.         licznik.reset();
  63. }
  64.  
  65. void alarm_power()
  66. {
  67.        
  68.        
  69.                 if (0.900000 > 0.800000)
  70.                 {
  71.                         while (counter <= 0)
  72.                         {
  73.                
  74.                                 licznik.start();
  75.                                
  76.                                 if (licznik.read_ms() <= 1500)
  77.                                 {
  78.                                        
  79.                                         buzzer = !buzzer;
  80.                                         counter + 1;
  81.                                 }
  82.                                
  83.                                 licznik.reset();
  84.                                
  85.                         }
  86.                 }
  87.         }
  88.  
  89. void alarm_temp(string  & temp_read_input)
  90. {
  91.         string str = temp_read_input;
  92.         temperature_live_state = atoi(str.c_str());
  93.         if (temperature_live_state >= *temp_data)
  94.         {
  95.                 signaller(1000);
  96.         }
  97.         if (*temp_data > temperature_live_state)
  98.         {
  99.                 buzzer = 0;
  100.         }
  101.        
  102. }
  103.  
  104. void screen()
  105. {
  106.         pc.foreground(0xFFFF00);
  107.         pc.hideCursor();
  108. }
  109. void intro()
  110. {
  111.         pc.locate(15, 5);
  112.         pc.printf(" ** inteligentny Termometr   ** ");
  113.         pc.locate(15, 6);
  114.         pc.printf("Created by Foreste");
  115. }
  116. void labels()
  117. {
  118.         pc.locate(10, 7);
  119.         pc.printf("Temperatura");
  120.         pc.locate(25, 7);
  121.         pc.printf("Cisnienie");
  122.         pc.locate(38, 7);
  123.         pc.printf("otrzezenie wysokiej temp");
  124.         pc.locate(65, 7);
  125.         pc.printf("Bateria");
  126. }
  127. void input_add_user_define_temperature()
  128. {
  129.  
  130.                 pc.cls();
  131.                 screen();
  132.                 intro();
  133.                 pc.locate(1, 7);
  134.                 pc.printf("Wpisz wartość temperatury ,po której termometr bedzie sygnalizował przekroczenie");
  135.                 int tempint;
  136.                         pc.scanf("%s", dane);
  137.                
  138.                 for (int   z = 0; z < 4; z++)
  139.                 {
  140.                
  141.                         if (isdigit(dane[z]))//sprawdzanie czy znak jest liczbą
  142.                         {
  143.        
  144.                                 tempint = atoi(dane); //kowertowanie tablicy typu char na zmienną int
  145.                                
  146.                         }
  147.                 }
  148.        
  149.         *temp_data = tempint;
  150.         if ((*temp_data >= 12) && (*temp_data <= 40))
  151.                 {
  152.                         pc.cls();
  153.                         screen();
  154.                         intro();
  155.                         brain.write(eeprom_size = 8, (int32_t) *temp_data);
  156.                         pc.locate(20, 7);
  157.                         pc.printf("Zapisalem podaną temperature przekroczenia");
  158.                         wait(5);
  159.                         val = 1;
  160.                         fflush(stdin);
  161.                         refresh_buffer();
  162.                         pc.cls();
  163.                                
  164.                 }
  165.                 else
  166.                 {
  167.                         pc.cls();
  168.                         screen();
  169.                         intro();
  170.                         pc.locate(20, 7);
  171.                         pc.printf("Wpisano niepoprawne dane. Dopuszczalny zakres: od 12 do 40");
  172.                         wait(5);
  173.                        
  174.                        
  175.                 }
  176.         }
  177.  
  178. void rs232_menu()
  179. {
  180.        
  181.         if (strcmp(buffer, "reset") == 0)
  182.         {
  183.                 NVIC_SystemReset();
  184.         }
  185.         else if (strcmp(buffer, "alarm") == 0)
  186.         {
  187.                
  188.                 input_add_user_define_temperature();
  189.         }
  190.        
  191. }
  192.  
  193. int main() {
  194.        
  195.         pc.baud(9600);    
  196.         pc.cls();
  197.         sensor.init();
  198.         screen();
  199.         intro();
  200.         wait(5);
  201.         Temperature t;
  202.         Pressure p;                                                                                                                                    
  203.         sensor.setOffsetTemperature(20);
  204.         sensor.setOffsetPressure(-32);
  205.         brain.read((uint32_t)(eeprom_size = 8), (int32_t&) *temp_data);
  206.        
  207.         while (read_user_temp <= 0)
  208.         {
  209.                 while (val <= 0)
  210.                 {
  211.                         input_add_user_define_temperature();
  212.                 }              
  213.         }
  214.         pc.cls();
  215.        
  216.        
  217.         while (1)
  218.         {
  219.                 val = 0;
  220.                 serials();
  221.                 sensor.readTemperature(&t);
  222.         sensor.setModeStandby();
  223.                 sensor.setModeBarometer();
  224.                 sensor.setModeActive();
  225.                 sensor.readPressure(&p);
  226.                
  227.                 screen();
  228.                 intro();
  229.                 labels();
  230.                 string temp_cache = t.print();
  231.                 pc.locate(10, 9);
  232.                 pc.printf("%s C", t.print());
  233.                 pc.locate(25, 9);
  234.                 pc.printf("%s Hpa", p.print());
  235.                 pc.locate(45, 9);
  236.                 pc.printf("%d", *temp_data);
  237.                 pc.locate(65, 9);
  238.                 pc.printf("%1.2fV", monitor_batery());
  239.                 pc.locate(65, 11);
  240.                 pc.printf("%fV", check_battery);
  241.                 pc.locate(65, 12);
  242.                 pc.printf("%d", counter);
  243.                 alarm_temp(temp_cache);
  244.                 alarm_power();
  245.                 rs232_menu();
  246.                
  247.                 sensor.setModeStandby();
  248.                 sensor.setModeAltimeter();
  249.                 sensor.setModeActive();
  250.                
  251.         }
  252. }

odpowiedź "termometr"

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

captcha