Arduino:
Обробка помилок
Як це робити:
Скажімо, ваш Arduino зчитує показники датчика, який іноді може видають значення за межами діапазону. Ось як ви можете з цим впоратися:
int sensorValue = analogRead(A0);
if (sensorValue >= 0 && sensorValue <= 1023) {
// Значення в межах діапазону, продовжуємо обробку
Serial.println(sensorValue);
} else {
// Значення за межами діапазону, обробляємо помилку
Serial.println("Помилка: Значення датчика за межами діапазону.");
}
Приклад виводу:
523
Помилка: Значення датчика за межами діапазону.
761
Детальніше
Керування помилками завжди було не таким простим. На початку розробники часто ігнорували помилки, що призводило до жахливої “невизначеної поведінки”. З часом програмування еволюціонувало, як і інструменти — тепер у багатьох мовах є винятки, але в світі Arduino все ще залишається стара школа “перевірки на місці” через обмеження апаратного забезпечення і коріння C++.
У програмуванні для Arduino часто використовують оператори if-else
для обробки помилок. Але є й альтернативи: використання функції assert
для зупинки виконання, якщо умова не виконується, або проектування аварійних механізмів безпосередньо в вашій апаратній конфігурації.
При реалізації обробки помилок враховуйте вплив зупинки програми проти дозволу їй продовжити роботу зі значенням за замовчуванням чи безпечним станом. Є компроміс, і правильний вибір залежить від потенційної шкоди від перервань проти некоректної роботи.
Дивіться також
Підвищіть знання про виявлення та обробку помилок з цими ресурсами:
- Довідник мови Arduino: https://www.arduino.cc/reference/en/
- Глибший погляд на обробку помилок від Embedded Artistry: https://embeddedartistry.com/blog/2017/05/17/creating-a-circular-buffer-in-c-and-c/
- Обробка помилок в C++: https://en.cppreference.com/w/cpp/error/exception
Це дасть вам знання і впевненість уникати підводних каменів помилок у ваших пригодах з Arduino.