четверг, 14 августа 2014 г.

"Дрожание сигнала": вывод значений аналогового датчика на LCD дисплей


Если пытаться считывать сигнал с аналогового датчика и выводить его на экран получается "дрожание" сигнала, т.е. сигнал не устойчиво меняется на +- 4.

Например, подключила к дисплею потенциометр, чтобы определить его значение.

Со стандартной программой: считал - вывел идет постоянное обновление дисплея и значения бегают.

Выравнивание показателя основано на замере предыдущего значения показателя и текущего, если расхождения сильного нет, то выводится на экран.
Исключает ненужные обновления экрана.

/*
Исключение дрожания цифр на дисплее
при считывании с аналогового датчика
*/

// Подключаем стандартную библиотеку LiquidCrystal
#include <LiquidCrystal.h>

// Инициализируем объект-экран, передаём использованные
// для подключения контакты на Arduino в порядке:
// RS, E, DB5, DB6, DB7, DB8
LiquidCrystal lcd(4, 5, 10, 11, 12, 13);
#define POT A5
int pot_num_old = 0;
int pot_num = 0;

void setup()
{
     pinMode(POT, INPUT);
     // устанавливаем размер (количество столбцов и строк) экрана
     lcd.begin(16, 2);
}

void loop()
{
     // опрашиваем потенциометр
     pot_num = analogRead(POT);
     // если дрожание значения не превышает 5х, то выводим значение
     // потенциометра, в противном случае, очищаем экран и записываем
     // новое значение
     if (abs(pot_num - pot_num_old)<5) {
          lcd.setCursor(0, 0);
          lcd.print(pot_num_old);
     } else {
          lcd.clear();
          pot_num_old = pot_num;
     }
}

video