Tuesday 21 November 2017

Biblioteca De Medios Móviles Arduino


Introducción Una de las principales aplicaciones de la placa Arduino es la lectura y registro de datos de sensores. Por ejemplo uno monitorea la presión cada segundo del día. Como frecuencias de muestreo altas a menudo generan picos en los gráficos, también se quiere tener un promedio de las mediciones. Como las mediciones no son estáticas en el tiempo lo que a menudo se necesita es un promedio de funcionamiento. Éste es el promedio de un cierto período y muy valioso al hacer análisis de la tendencia. La forma más simple de un promedio de ejecución se puede hacer por el código que se basa en el promedio anterior de ejecución: Si uno no quiere utilizar matemáticas punto flotante - como esto ocupa la memoria y disminuye la velocidad - uno puede hacer lo mismo completamente en el dominio entero. La división por 256 en el código de ejemplo es un desplazamiento a la derecha 8, que es más rápido que decir división por ejemplo. 100. Esto es cierto para cada potencia de 2 como divisor y sólo uno debe tener cuidado la suma de los pesos es igual a la potencia de 2. Y por supuesto uno debe tener cuidado no hay desbordamiento intermedio (considere el uso de unsigned largo) Si necesita Un promedio de ejecución más preciso, in concreto de las últimas 10 mediciones, se necesita una matriz (o lista vinculada) para mantenerlos. Esta matriz actúa como un amortiguador circular y con cada nueva medida se elimina la más antigua. El promedio de ejecución se calcula como la suma de todos los elementos divididos por el número de elementos en la matriz. El código para el promedio de ejecución será algo como esto: Desventaja de este código es que la matriz para contener todos los valores puede llegar a ser bastante grande. Si usted tiene una medición por segundo y desea un promedio de ejecución por minuto que necesita una matriz de 60 un promedio por hora necesitaría una matriz de 3600. Eso no podría hacerse de esta manera en un Arduino, ya que sólo tiene 2 K de RAM. Sin embargo, mediante la construcción de un promedio de 2 etapas se puede abordar bastante bien (renuncia: no para todas las mediciones). En el código psuedo: Como una nueva matriz estática interna es necesaria para cada función runningAverage, esto grita para ser implementado como una clase. Biblioteca RunningAverage La biblioteca runningAverage crea una clase de la función anterior para que pueda usarse varias veces en un boceto. Desacopla la función add () y avg () para que sea un poco más flexible, p. Uno puede llamar al promedio varias veces sin agregar nada. Tenga en cuenta que cada instancia de la clase añade su propia matriz para realizar mediciones, y que esto se suma al uso de la memoria. La interfaz de la clase se mantiene lo más pequeña posible. Nota: con la versión 0.2 los nombres de los métodos se hacen más descriptivos. Uso Un pequeño bosquejo muestra cómo se puede utilizar. Un generador aleatorio se utiliza para imitar un sensor. En setup () el myRA se borra para que podamos empezar a agregar nuevos datos. En loop () primero se genera un número aleatorio y se convierte en un flotador que se agregará a myRA. A continuación, el valor de ejecución se imprime en el puerto serie. También se puede mostrar en algunos LCD o enviar a través de Ethernet, etc Cuando se añaden 300 elementos myRA se borra para empezar de nuevo. Notas Para utilizar la biblioteca, cree una carpeta en su SKETCHBOOKPATHlibaries con el nombre RunningAverage y coloque allí. h y. cpp. Opcionalmente, haga un subdirectorio de ejemplos para colocar la aplicación de ejemplo. Historia 2011-01-30: inicial versión 2011-02-28: fijo desaparecido destructor en archivo. h 2011-02-28: eliminado por defecto constructor 2012--. Añadido fillValue () refactorizado para la publicación 2014-07-03: agregó código de protección de la memoria - si la matriz interna no se puede asignar tamaño Se convierte en 0. Esto es para solucionar el problema descrito aquí - forum. arduino. cc/index. phptopic50473.msg1790086msg1790086 - Todo Pruebe extensivamente. Clase de plantilla RunningAverage. h RunningAverage. cppEsta es una colección de rutinas para realizar análisis matemático de matrices de números. Soporte de funciones actuales: Todas las funciones están completamente sobrecargadas para admitir los siguientes tipos de datos: Con la excepción de stddev (), todos devuelven el mismo tipo de datos que el array. Una matriz de valores int devuelve un solo int. Stddev () devuelve siempre un flotador. Todas las funciones excepto rollingAverage () toman dos argumentos. La primera es la matriz para trabajar. El segundo es el número de entradas en la matriz. RollingAverage () toma un tercer argumento - la nueva entrada para agregar a la matriz. Rolling average Formato: average rollingAverage (historyarray, slicecount, value) Añade valor a la matriz historyarray desplazando todos los valores en un lugar. Luego se devuelve el promedio. Formato medio: promedio medio (array, slicecount) Calcula la media de los valores en array. Slicecount es el número de entradas en la matriz. Modo Formato: modo medio (array, slicecount) Encuentra el número más común en la matriz. Máximo formato: max máximo (array, slicecount) Encuentra el valor más grande en la matriz. Formato mínimo: min mínimo (array, slicecount) Encuentra el valor más pequeño en el array. Desviación estándar Formato: desviación stddev (array, slicecount) La desviación estándar es la raíz cuadrada de la media de la suma de los cuadrados de la diferencia entre cada punto de datos y la media media de la matriz. Esta es la única función que no devuelve el mismo tipo de datos que la matriz. La desviación estándar siempre se devuelve como un flotador. Ejemplo: ShareLibraries El entorno de Arduino puede extenderse mediante el uso de bibliotecas, al igual que la mayoría de las plataformas de programación. Las bibliotecas proporcionan funcionalidad adicional para uso en bocetos, p. Trabajar con hardware o manipular datos. Para usar una biblioteca en un boceto, selecciónela en Boceto gt Importar biblioteca. Varias bibliotecas vienen instaladas con el IDE, pero también puedes descargar o crear las tuyas propias. Consulte estas instrucciones para obtener detalles sobre la instalación de bibliotecas. Theres también un tutorial sobre la escritura de sus propias bibliotecas. Consulte la Guía de estilo API para obtener información sobre cómo crear una API de estilo Arduino adecuada para su biblioteca. Librerías estándar EEPROM - lectura y escritura en almacenamiento permanente Ethernet - para conectarse a Internet mediante el Arduino Ethernet Shield Firmata - para comunicarse con aplicaciones en el ordenador mediante un protocolo serie estándar. GSM - para la conexión a una red GSM / GRPS con el blindaje GSM. LiquidCrystal - para el control de las pantallas de cristal líquido SD - para la lectura y escritura de tarjetas SD Servo - para el control de servomotores SPI - para comunicarse con los dispositivos utilizando el SPI (Serial Peripheral Interface) Bus SoftwareSerial - para comunicación serial en cualquier pines digitales. La versión 1.0 y posterior de Arduino incorporan la biblioteca NewSoftSerial de Mikal Hart como SoftwareSerial. Stepper - para el control de motores paso a paso TFT - para dibujar texto. Imágenes y formas en la pantalla Arduino TFT WiFi - para conectarse a Internet mediante el cable Arduino WiFi Wire - Two Wire Interface (TWI / I2C) para enviar y recibir datos a través de una red de dispositivos o sensores. Las bibliotecas Matrix y Sprite ya no forman parte de la distribución central. 101 Sólo las bibliotecas CurieBLE - Interactuar con smartphones y tabletas con Bluetooth Low Energy (BLE). CurieIMU - Maneja el acelerómetro y el girocompás de a bordo. CurieTimerOne - Permite utilizar las funciones del temporizador. Due Only Libraries Due, Zero y MKR1000 Bibliotecas USBHost - Comuníquese con periféricos USB como ratones y teclados. Scheduler - Administrar múltiples tareas que no bloquean. Zero y MKR1000 AudioFrequencyMeter - Muestra una señal de audio y recupera su frecuencia AudioZero - Reproduce archivos de audio desde una tarjeta SD. RTC - Reloj de tiempo real para programar eventos. Biblioteca WiFi 101 y MKR1000 Biblioteca WiFi101 - biblioteca que se utilizará únicamente con el escudo Wifi 101 Esplora Only Library Esplora - esta biblioteca le permite acceder fácilmente a varios sensores y actuadores montados en la placa Esplora. Arduino Robot Library Robot - esta biblioteca permite un fácil acceso a las funciones del Robot Arduino. Bridge Library para dispositivos Yn Bridge Library - Permite la comunicación entre el procesador Linux y el microcontrolador en el Yn. Bibliotecas USB (Leonardo, Micro, Due, Zero y Esplora) Teclado - Enviar pulsaciones de teclas a un ordenador conectado. Ratón - Control del movimiento del cursor en un ordenador conectado. Bibliotecas aportadas Si está utilizando una de estas bibliotecas, primero debe instalarla. Consulte estas instrucciones para obtener detalles sobre la instalación. Theres también un tutorial sobre la escritura de sus propias bibliotecas. NewSoftSerial - una versión mejorada de la biblioteca de SoftwareSerial OneWire - dispositivos de control (de Dallas Semiconductor) que utilizan el protocolo One Wire. PS2Keyboard - lee caracteres de un teclado PS2. Simple Message System - envía mensajes entre Arduino y el ordenador SSerial2Mobile - envía mensajes de texto o correos electrónicos utilizando un teléfono celular (a través de comandos AT en serie de software) Webduino - biblioteca extensible de servidor web (para uso con el Arduino Ethernet Shield) X10 - Envío de señales X10 Sobre líneas de alimentación de CA XBee - para comunicarse con XBees en modo API SerialControl - Mando a distancia otros Arduinos a través de una conexión en serie Detección capacitiva - convierte dos o más pines en sensores capacitivos Debounce - para leer entradas digitales ruidosas (por ejemplo desde botones) Displays y LEDs. GFX - clase base con rutinas gráficas estándar (por Adafruit Industries) GLCD - rutinas gráficas para LCD basadas en el chipset KS0108 o equivalente. Mejora de la biblioteca de LCD corrige errores de inicialización de LCD en la biblioteca oficial de Arduino LCD LedControl - para controlar matrices LED o pantallas de siete segmentos con un MAX7221 o MAX7219. LedControl - una alternativa a la biblioteca Matrix para la conducción de múltiples LEDs con chips Maxim. LedDisplay - control de una pantalla LED de desplazamiento HCMS-29xx. Matrix - Biblioteca básica de manipulación de pantallas LED Matrix PCD8544 - para el controlador LCD en pantallas tipo Nokia 55100 (de Adafruit Industries) Sprite - Biblioteca básica de manipulación de sprite de imágenes para uso en animaciones con matriz LED ST7735 - TFT de 128x160 (de Adafruit Industries) Audio y formas de onda: FFT - análisis de frecuencia de señales de audio u otras señales analógicas Tono - genera ondas cuadradas de frecuencia de audio en segundo plano en cualquier pin de microcontrolador DateTime - una biblioteca para realizar un seguimiento de la fecha y hora actuales software. Metro: ayuda a programar acciones a intervalos regulares MsTimer2: utiliza la interrupción del temporizador 2 para activar una acción cada N milisegundos. PString: una clase ligera para imprimir en búfer Streaming: un método para simplificar las declaraciones de impresión Las correcciones, sugerencias y nueva documentación deben publicarse en el Foro. El texto de la referencia de Arduino está bajo una licencia Creative Commons Attribution-ShareAlike 3.0. Las muestras de código en la referencia se liberan en el dominio público. Compartir

No comments:

Post a Comment