Программирование Arduino - Карта и гладкие значения values ​​Каспер Камперман

  1. Map.ino
  2. Analog_smooth.ino

Узнайте, как использовать функцию Arduino map () для изменения числа переменных из одного диапазона в другой. Также проверьте другой пример о том, как сгладить значения аналогового входа, взяв несколько выборок и усреднив их.

Я создал два примера кода. Тот, который показывает, как использовать функцию Arduino map () для изменения номера переменной из одного диапазона в другой. Мы также применяем функцию constrain (). Другой пример показывает, как сгладить значения аналогового входа, взяв несколько выборок и усреднив их.

Уровень: начинающий с Arduino. (Базовые знания принципов программирования, таких как if / else и переменные).

Map.ino

/ * Пример отображения. Переназначить число из одного диапазона в другой. создано 01-12-2009 пользователем kasperkamperman.com * / const int sensorPin = 0; // вывод, к которому привязан потметр int sensorValue = 0; // сохранить значение, поступающее от датчика int mappedValue; // сохранить новое значение void setup () {// открывает последовательный порт, устанавливает скорость передачи данных 57600 бит в секунду Serial.begin (57600); } void loop () {// считывание значения с датчика // диапазон от аналогового входа 0 - 1023 sensorValue = analogRead (sensorPin); // выводим значение Serial.print ("sensorValue:"); Serial.println (sensorValue); // map (значение, fromLow, fromHigh, toLow, toHigh) mappedValue = map (sensorValue, 0, 1023, 0, 255); Serial.print ("отобразить на 0 - 255:"); Serial.println (mappedValue); // возможно также инвертировать значение mappedValue = map (sensorValue, 0, 1023, 255, 0); Serial.print ("сопоставить с 255 - 0:"); Serial.println (mappedValue); // или отрицательные значения mappedValue = map (sensorValue, 0, 1023, -127, 128); Serial.print ("сопоставить с -127 - 128:"); Serial.println (mappedValue); // смотреть только определенную часть значений датчика // например, при использовании датчика, который не покрывает весь // диапазон mappedValue = map (sensorValue, 512, 712, 0, 100); Serial.print ("карта 512 - 712 в 0 - 100:"); Serial.println (mappedValue); // ограничение sensorValue может быть полезно для предотвращения отрицательных значений sensorValue = constrain (sensorValue, 512, 712); Serial.print ("с ограниченным значением датчика:"); Serial.println (sensorValue); mappedValue = map (sensorValue, 512, 712, 0, 100); Serial.print ("карта 512 - 712 в 0 - 100 (с ограничением):"); Serial.println (mappedValue); // разделение на следующее чтение Serial.println ("--------------------------------------- --------- "); // ждем 1000 миллисекунд (1 секунда) для чтения каждую секунду задержка (1000); }

Analog_smooth.ino

/ * Пример сглаживания Считайте аналоговый вход и сгладьте результат путем усреднения результата с предыдущими значениями входа. Чем больше образцов, тем дольше требуется, чтобы достичь окончательного значения. 4/5 образцов дают достаточно гладкий и реактивный результат. Более простой алгоритм, чем сглаживание, включенное в примеры Arduino. основан на: аналоговом алгоритме сглаживания Тома Айго <http://www.tigoe.net/pcomp/code/category/arduinowiring/41>, создан 05-01-2010 автором kasperkamperman.com * / const int sensorPin = 0; // вывод, к которому привязан потметр int sensorVal = 0; // сохранить значение, поступающее от датчика int smoothedVal = 0; // сглаженный результат int samples = 4; // количество образцов void setup () {Serial.begin (57600); } void loop () {// считывание значения с датчика // диапазон от аналогового входа 0 - 1023 sensorVal = analogRead (sensorPin); SmoothedVal = SmoothedVal + ((sensorVal - SmoothedVal) / образцы); // распечатать исходное значение и smoothothedValue Serial.print (sensorVal); Serial.print (","); Serial.println (smoothedVal); // замедляем количество чтений и печатаем delay (100); } / * Пример сглаживания Считайте аналоговый вход и сгладьте результат путем усреднения результата с предыдущими значениями входа Была ли эта статья полезна для вас? Купи мне кофе!