termometr

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

odpowiedź "termometr"

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

captcha