Arduino:
Логування

Як це зробити:

Arduino не має вбудованої бібліотеки для логування, як деякі інші оточення, але ви можете реалізувати базове логування до серійної консолі з невеликими зусиллями. Ось швидкий приклад, щоб допомогти вам розпочати:

void setup() {
  // Започаткування серійного зв'язку з заданою швидкістю передачі даних
  Serial.begin(9600);

  // Чекати на підключення серійного порту - необхідно лише на деяких платах
  while (!Serial) {
    ; // чекати на підключення серійного порту. Необхідно для рідного USB
  }

  // Залогувати інформаційне повідомлення, яке вказує, що процес налаштування завершено
  Serial.println("Setup complete!");
}

void loop() {
  // Простий логер, який виводить час роботи кожної секунди
  static unsigned long lastLogTime = 0;
  unsigned long currentMillis = millis();

  if (currentMillis - lastLogTime >= 1000) {
    lastLogTime = currentMillis;
    Serial.print("Uptime (ms): ");
    Serial.println(currentMillis);

    // Тут ви також можете додати журнал помилок, попереджень або іншу інформацію.
  }
  
  // Решту логіки вашої програми сюди...
}

Приклад виводу в серійний порт:

Setup complete!
Uptime (ms): 1000
Uptime (ms): 2000
Uptime (ms): 3000
...

Глибше занурення:

Історично, логування на мікроконтролерах не було таким простим, як у повноцінній операційній системі. Обмежені ресурси означали, що кожен байт важливий, і розробники повинні були бути обережними, щоб не перевантажити систему. З появою більш здатних плат та платформи Arduino, яка спрощує процес, логування стало більш доступним.

Хоча код вище демонструє логування через серійний інтерфейс, інші методи включають запис на SD-карту, відправку даних по мережі на віддалений сервер або навіть виведення на маленький LCD.

Реалізація системи логування викликає розгляд таких питань, як ротація, рівень серйозності (інформація, налагодження, попередження, помилка) та вплив на продуктивність. На Arduino вам може знадобитися бути уважним до обмежень пам’яті при логуванні складних структур даних. У випадку віддаленого логування також виникає питання безпеки переданих логів.

Існують більш витончені рішення, як Syslog, широко прийнятий стандарт логування, за межами світу Arduino, але ви можете інтегрувати сторонні бібліотеки, які пропонують подібний функціонал з різними ступенями складності та вимог до ресурсів.

Дивіться також: