Untitled

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

odpowiedź "Untitled"

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

captcha