Простой оптический сенсор приближения

Оптический сенсор, назначение оптический концевик, для автоматики, бесконтактный выключатель с функцией автоматического отключения…

Визуализация данных

Views: 1403


Частенько приходиться на дисплей выводить данные в виде графиков, так более наглядно можно проследить за процессом и проанализировать его. Для этого разберем простую функцию на Си для реализации такой визуализации.

Данные полученные при измерениях должны быть помещены в буфер CaptBuf[N] где N – размер буфера. предварительно надо указать размер дисплея для вывода данных и координаты нижнего левого угла расположения дисплея. Данные в буфере должны иметь формат signed int (16 бит -32768 … 32767 со знаком).

#define dispoX 60 // ширина окна
#define dispoY 32 // высота окна
#define startX 0 // координата X левый нижний угол окна
#define startY 0 // координата Y левый нижний угол окна

При вызове функции она извлекает количество данных (равных размеру дисплея dispoX) и преобразовывает их (если это необходимо) в одно полярное, а затем к диапазону 0-31, по высоте дисплея dispoY (в этом месте нет оптимизации, для других размеров придется подбирать значения деления и вводить постоянную смешения нуля). Преобразованные данные помещаем в массив BflyBuf[].

    for(a=0;a<dispoX;a++)
    {
         pr=CaptBuf[a]+32768;  // преобразование signed int -> unsigned int
         BflyBuf[a]= (pr>>11);  // перевести в однополярное значение в диапазоне 
    }

После это используя функции построение точки и линии на дисплее строим график из обработанных данных помещенных в массив BflyBuf[].

    // рисование графика
    for(a=0;a<dispoX-1;a++)
    {
        line(1, startX+a+1, startY, startX+a+1, startY+dispoY);// очистка следующего столбца дисплея
        if(abs(BflyBuf[a]-BflyBuf[a+1])>1)// если разность больше по модулю 1
        {
            if((a+1)<dispoX-1)line(0, startX+a, startY+BflyBuf[a], startX+a+1, startY+BflyBuf[a+1]);// рисовать линию
        }
        else
        {
            point(0, startX+a, startY+BflyBuf[a]); // рисовать точку
        }
    }

Пример работы функции для реализации визуализации аудио-данных в реальном времени.

 


Полный текст функции.

void oscilloscope (void)//Осцилограф
{
/*область индикации
 * dispX dispY
 * диапазон входного значения signed int -32768 … 32767
 * преобразовывается в значение 0-32
 * данные выводятся с позиции 0/0
 */
#define dispoX 60 // ширина окна
#define dispoY 32 // высота окна
#define startX 0 // координата X левый нижний угол окна
#define startY 40 // координата Y левый нижний угол окна
    unsigned int a,pr;
    for(a=0;a<dispoX;a++)
    {
         pr=CaptBuf[a]+32768;  // преобразование signed int -> unsigned int
         BflyBuf[a]= (pr>>11);  // перевести в однополярное значение в диапазоне 
    }
    line(1, startX, startY, startX, startY+dispoY);// очистка первого столбца дисплея
    // рисование графика
    for(a=0;a<dispoX-1;a++)
    {
        line(1, startX+a+1, startY, startX+a+1, startY+dispoY);// очистка следующего столбца дисплея
        if(abs(BflyBuf[a]-BflyBuf[a+1])>1)// если разность больше по модулю 1
        {
            if((a+1)<dispoX-1)line(0, startX+a, startY+BflyBuf[a], startX+a+1, startY+BflyBuf[a+1]);// рисовать линию
        }
        else
        {
            point(0, startX+a, startY+BflyBuf[a]); // рисовать точку
        }
    }
}


Это может быть интересно


  • ch-4060 – регулятор температуры и влажности на датчике DHT11/DHT22/AM2302ch-4060 – регулятор температуры и влажности на датчике DHT11/DHT22/AM2302
    Views: 2543 На плате ch-4000 очень легко собрать устройство регулятора температуры и влажности. Датчик DHT11  самый недорогой вариант для создания такого устройства, правда точность его не велика, но для бытовых устройств …
  • I2C MODULE – PIC18F25K42 Device ID Revision = A001I2C MODULE – PIC18F25K42 Device ID Revision = A001
    Views: 1209 I2C MODULE Обход ошибок в версии I2C MODULE – PIC18F25K42 Device ID Revision = A001 В Серии K42 применен совершенно новый модуль шины I2C, который позволяет поддерживать все …
  • ESP8266  процедура получение данных даты и времени от серверов точного времени.ESP8266 процедура получение данных даты и времени от серверов точного времени.
    Views: 6277 Эта функция доступна уже в версии 1.6.1. Для многих приложений, необходимо часы реального времени,  если в вашем проекте есть модуль WiFI ESP8266, то легко можно сделать следующим образом. …
  • NeoPixel LED и PIC18NeoPixel LED и PIC18
    Views: 1928   Еще раз об управлении светодиодами на драйвере WS2812 и ему подобных. Как известно эти светики управляются по однопроводной шине. Основная особенность, что программно можно описать передачу данных, …
  • Altium Designer – создание рисунков на печатной платеAltium Designer – создание рисунков на печатной плате
    Views: 3642   Для создание рисунков на печатной платы в Altium Designer можно использовать возможность использовать в Altium Designer сторонних скриптов. Мне возможность эта очень понравилась и я решил её расшарить …
  • LED драйвер TM1639LED драйвер TM1639
    Views: 2495 TМ1639 позволяет работать на матрицу 8*8 или 8 семисегметных индикаторов. Может работать как на индикаторы с общим катодом, но и есть возможность подключать общим анодом. Для управления драйвером …
  • Проект с использованием MCC часть 03Проект с использованием MCC часть 03
    Views: 1747 Первым делом перенастроим регистры конфигурации, следующим образом: Отключим выход генератора (CLKOUT function is disabled. I/O function on the CLKOUT pin) Включим сторожевой таймер (WDT enabled) После этой настройки …
  • Development Boards PIC18F47Q84Development Boards PIC18F47Q84
    Views: 8495 Microchip тішить новими мікроконтролерами. Особливістю цього MCU – це багата інтелектуальна периферія, що дозволяє вирішувати такі завдання на 8 бітних MCU, які неможливо реалізувати на деяких навіть 32 …
  • Самый простой индикатор уровня звукового сигналаСамый простой индикатор уровня звукового сигнала
    Views: 6732 Демонстрационный проект создания индикаторов уровня с использованием WS2812B. Изучив этот проект вы сможете  самостоятельно изготавливать и конструировать свои индикаторы уровня звукового сигнала. Дополнительно читайте статью Бегущие огни на …
  • Acquaintance with audio-bluetooth modules F-6888 (BK3254).Acquaintance with audio-bluetooth modules F-6888 (BK3254).
    Views: 2446 Для проектов появилось необходимость познакомиться с недорогими модулями китайского производства, которые можно приобрести у нас в Украине и у китацев, на алиэкспрессе. Так как меня интересует не просто, …