25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

serial.cpp 3.2KB

3 ay önce
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #include "serial.h"
  2. #include "lcd.h"
  3. void SerialIO::init() {
  4. Serial.begin(9600);
  5. }
  6. bool SerialIO::is_available() const {
  7. return Serial.available();
  8. }
  9. void SerialIO::print_gain(int gain) const {
  10. Serial.print(F("zosilnenie = "));
  11. Serial.print(gain, DEC);
  12. Serial.println();
  13. }
  14. bool SerialIO::is_debug_info_allowed() const {
  15. return this->debug_info_allowed;
  16. }
  17. void SerialIO::print_init_message() const {
  18. Serial.println(F(" milivahy"));
  19. Serial.println(F(" "));
  20. Serial.println(F(" v - vypis hodnot zap-vyp"));
  21. Serial.println(F(" r - presnost zobrazenia [r 3 2]"));
  22. Serial.println(F(" t - tare - nulovanie"));
  23. Serial.println(F(" c - kalibracia"));
  24. Serial.println(F(" g - zosilnenie 64, 128 [g 128]"));
  25. Serial.println(F(" w - kalibracne zavazie v g [ w 1]"));
  26. Serial.println(F(" p - nastavenie porovnania [ p 1 IT_1 2.0 3.0]"));
  27. Serial.println();
  28. }
  29. void SerialIO::on_command(Scale& scale, WeightControllerPool& pool, LCD& lcd)
  30. {
  31. char var = Serial.read();
  32. switch (var)
  33. {
  34. case 'c':
  35. scale.calibrate();
  36. lcd.print_calibration(scale.get_calibration_weight());
  37. Serial.println();
  38. Serial.print(F("Scale = "));
  39. Serial.println(scale.get_weight());
  40. break;
  41. case 't':
  42. scale.tare();
  43. break;
  44. case 'v':
  45. debug_info_allowed = !debug_info_allowed;
  46. break;
  47. case 'w':
  48. int calib_weight = Serial.parseInt();
  49. Serial.print(F("calibration weight = "));
  50. Serial.print(calib_weight, DEC);
  51. Serial.println(F(" g"));
  52. EEPROM.writeInt(e_calib_w, calib_weight);
  53. break;
  54. case 'r':
  55. des_m_g = Serial.parseInt();
  56. des_m_grain = Serial.parseInt();
  57. break;
  58. case 'p': {
  59. int index = Serial.parseInt();
  60. String name = Serial.readStringUntil(' ');
  61. double val_min = Serial.parseFloat();
  62. double val_max = Serial.parseFloat();
  63. for (int j = 0; j < pool.get_max(); j++)
  64. {
  65. WeightController& controller = pool.get(j);
  66. Serial.println();
  67. Serial.print(controller.get_name());
  68. Serial.print(F(" "));
  69. Serial.print(controller.get_val_min(), 2);
  70. Serial.print(F(" "));
  71. Serial.print(controller.get_val_max(), 2);
  72. }
  73. break;
  74. } case 'g':
  75. int gain = Serial.parseInt();
  76. if (gain == 64 || gain == 128)
  77. {
  78. EEPROM.writeInt(e_gain, gain);
  79. }
  80. print_gain(gain);
  81. break;
  82. case 'h':
  83. print_init_message();
  84. break;
  85. }
  86. }
  87. void SerialIO::print_debug_info(long raw, double average_raw, long offset, double weight, double gram, double average_gram, double grain) const {
  88. Serial.print(F("RAW = "));
  89. Serial.print(raw);
  90. Serial.print(F(", AV_RAW = "));
  91. Serial.print(average_raw);
  92. Serial.print(F(", offset = "));
  93. Serial.print(offset);
  94. Serial.print(F(", RAW-offset = "));
  95. Serial.print(raw - offset);
  96. Serial.print(F(", Scale = "));
  97. Serial.print(weight);
  98. Serial.print(F(", gram = "));
  99. Serial.print(gram, des_m_g);
  100. Serial.print(F(", average = "));
  101. Serial.print(average_gram, des_m_g);
  102. Serial.print(F(", grain = "));
  103. Serial.println(grain, des_m_grain);
  104. }