Всем доброго времени суток. Помогите доработать код. Код (Text): // библиотека для работы I²C #include <Wire.h> // библиотека для работы с модулями IMU #include <TroykaIMU.h> // создаём объект для работы с акселерометром Accelerometer accel; void setup() { // открываем последовательный порт Serial.begin(115200); // выводим сообщение о начале инициализации Serial.println("Start"); // инициализация акселерометра accel.begin(); // устанавливаем чувствительность акселерометра // 2g — по умолчанию, 4g, 8g accel.setRange(RANGE_2G); // выводим сообщение об удачной инициализации Serial.println("Finish"); } void loop() { // вывод направления и величины ускорения в м/с² по оси X Serial.print(accel.readAX()); Serial.print("\t"); // вывод направления и величины ускорения в м/с² по оси Y Serial.print(accel.readAY()); Serial.print("\t\t"); // вывод направления и величины ускорения в м/с² по оси Z Serial.print(accel.readAZ()); Serial.print("\t\t"); Serial.println(""); delay(100); /* // вывод направления и величины ускорения в м/с² по X, Y и Z float x, y, z; accel.readAXYZ(&x, &y, &z); Serial.print(x); Serial.print("\t\t"); Serial.print(y); Serial.print("\t\t"); Serial.print(z); Serial.println(""); delay(1000); */ } Просидел всю жизнь сознательную на паскале, а тут такое. Сами вопросы: Мне необходимо чтобы датчик работал не в цикле, а присылал данные по запросу (hAA). Могу ли я в реальном времени управлять чувствительностью датчика? Могу ли я в реальном времени провести калибровку сенсора с сохранением данных? Программа работы с датчиком, будет на компе по виндой крутиться, общение по эзернет.
1. Ясно; 2. Да; 3. Да. Хинт: читаете из Serial, когда в его буфере есть данные. Если прочитали строку (до символа '\n') - то смотрите, что за команда, по результату команды - делаете что нужно. Вот, набросал за 5 минут, дальше уже сами, плз: Код (C++): String command; bool hasCommand() { while(Serial.available()) { char ch = Serial.read(); if(ch == '\r') continue; if(ch == '\n') return command.length(); command += ch; } return false; } void setup() { Serial.begin(9600); } void loop() { if(hasCommand()) { if(command == F("measure")) { Serial.println(F("START MEASURE!")); } else if(command.startsWith(F("calibrate"))) { const char* value = strstr(command.c_str(),"="); // ищем разделитель, приходит "calibrate=1" if(value) { value++; int calibrationFactor = atoi(value); Serial.print(F("CALIBRATE SENSOR, FACTOR IS: ")); Serial.println(calibrationFactor); } } command = ""; } } Закачайте в дуньку, и попробуйте повводить в мониторе порта (настройка передачи конца строки должна быть "NL & CR" - это в окошке монитора порта настраивается) строки "measure" и "calibrate=1234"