El Panel de matriz de LED, o LMP para el microordenador de Arduino, continuó. (1 / 3 paso)

Paso 1: El Sketch (LMP_Musicator01)

/*

  • VUmeter / órgano (db completo presentación) de luz
  • Presentación horizontal - pantalla lineal central
  • (c) Copyright 2009 QS
  • Todos los derechos reservados

*

  • Fila de la matriz de LED: 1-5; col: 1-6
  • Mapa de PORTB == D8:D12 - pin [fila + 7]: + v
  • PORTD == D2:D7 - pin [8-col]; Toma de tierra
  • Nuestra producción: col::D2:D7 - ve (bajo) mientras row::D8:D13 + ve

*/

char mensaje [] = {}
0x11, 0x0a, 0x0e, 0x0e, 0x0a, 0x11, / / starburst
0 x 00, 0 x 00, 0 x 00, 0 x 00, 0 x 00, 0x0e,
0X11, 0X19, 0X1E, 0 X 00, 0X1F, 0 X 10, / / Q U
0X1F, 0 X 00, 0X1E, 0 X 05, 0X1E, 0 X 00, / / A
0X1F, 0 X 06, 0X0C, 0X1F, 0 X 00, 0 X 03, / / N T
0X1F, 0 X 03, 0 X 00, 0X12, 0X15, 0 X 09, / / S
0 X 00, 0X1F, 0 X 10, 0X1F, 0 X 00, 0X1F, / / F U
0 X 05, 0 X 05, 0 X 00, 0X1F, 0 X 05, 0 X 05, / / F
0,0,0,0,0,0}; Además de un desbordamiento de búfer

patrón de bits, 1 byte por columna. Top = lsb

pantalla de Char [6], hdisp [6];

int w10kbuf [2], w1kbuf [20], w100buf [100]; Asumir toda cero (: P)
int w10kidx, w1kidx, w100idx;
int w10kmax, w5kmax, w1kmax, w500max, w100max;
tiempo w, w10ksum = 0, w1ksum = 0, w100sum = 0;
int www, w10k, w1k, w100, metro [5];

int escala = 3; registrar escala (desde 23)
recal int = 0; Tasa de AGC
int inPin = 1; analogRead en A01

void setup() / / ejecuta una vez, cuando comienza el bosquejo
{
para (int ledPin = 2; ledPin < = 12; ledPin ++) {}
pinMode (ledPin, salida); pone el pin digital como salida
digitalWrite (ledPin, (ledPin < = 7)); Desactivar todos los cols
}
lmpWrite(msg,0,15); Retraso del ciclo es 1/10 segundos
(realmente es inicializar los contadores)
analogReference(INTERNAL); No utilice por defecto o externo.
int i = digitalRead(inPin); eliminar datos antiguos
}

void loop() / / ejecuta una y otra vez
{
W100 = (w100sum / 23) >> de escala; Un filtro barato @ 100Hz de la aplicación
W1K = abs ((w1ksum / 3)-w100) >> de escala; 1kHz
w10k = (www w10ksum) >> de escala; 10kHz
w = (w100 + w1k + w10k); Potencia total (función de VU)

Si (w < 13) {}
Recal ++;
Si (recal > = 15) {//350mS cuenta antes de la recalibración del medidor
Recal = 0;
escala = (escala > 3);
}} / / aumentar la res sólo si es inferior a 1/2 escala

Si ((w100>33) || (w1k > 30) || (w10k>33)) {/ / log2
Si ((w100 w1k + w10k) > 83) {/ / pico: hacer menos sensible
Recal = 0;
escala ++;
W100 = w100 >> 1;
W1K = w1k >> 1;
w10k = w10k >> 1;
}
metro [0] = min (w100 >> 1,31);
metro [1] = min(abs(w100+w1k-w10k) >> 2.31);
metro [2] = min (w1k >> 2.31);
metro [3] = min(abs(w1k+w10k-w100) >> 2.31);
metro [4] = min((w10k*5) >> 3.31);

para (int col = 0; col < 6; col ++) {}
int c = 0;
para (int m = 0; m < = 4; mm ++) {}
c = c << 1;
c += (metro [mm] > col);
}
hdisp [col] = c;
}
Mostrar [0] = hdisp [4];
Mostrar [1] = hdisp [2];
Mostrar [2] = hdisp [0];
exhibición [3] = hdisp [0];
pantalla [4] = hdisp [2];
pantalla [5] = hdisp [4];

lmpWrite(display,0,1);

Mostrar [0] = hdisp [5];
Mostrar [1] = hdisp [3];
Mostrar [2] = hdisp [1];
exhibición [3] = hdisp [1];
pantalla [4] = hdisp [3];
pantalla [5] = hdisp [5];

/ * Rutina de visualización vertical
*
fillVBar(display,0,w100);
fillVBar(display,1,abs(w100+w1k-w10k));
fillVBar(display,2,w1k);
fillVBar(display,3,abs(w1k+w10k-w100));
fillVBar(display,4,w10k);
fillVBar (pantalla, 5, w10k >> 1);
fillVBar (display, 5, escala + 1);
int i = 0;
int s = escala de-1;
para (int ii = 0; ii < 5; ii ++) {}
i = i | (s & 1);
i = i << 1;
s = s >> 1;
}
pantalla [5] = i;
*
*/

lmpWrite(display,0,1);
}

void fillVBar (char [] disp, int o, int val) {}
int j = B100000; patrón de dígitos
Val = constrain(val,2,127);
mientras que (val > 2) {}
j| = (j >> 1);
Val = val >> 1;
}
DISP [o] = j;
}

void lmpWrite (char disp [], int stchar, int pasos)
/ * Uso: patrón de bits de cargas [disp], a partir de las stchar,

  • 1 byte por columna, de izquierda a derecha, de arriba a abajo
  • Mapa de PORTB == D8:D12 - pin [fila + 7]: + v
  • PORTD == D2:D7 - pin [8-col]; Toma de tierra

*/
{
int col, fila, cval, lit = 0, ww = 0;
larga delayStart=millis() + 90*(constrain(steps,1,100));
Pantalla / tiempo de loop
www = 0;
{}
para (col = 0; col < 6; col ++) {}
CVAL = disp [col + stchar];
para (fila = 1; fila < = 5; fila ++) {//only 5 bits más bajos
Si (cval & 1) {/ / este LED de luz
Si (luz == 0)
digitalWrite(7-col,LOW); col necesita activación
digitalWrite(row+7,HIGH);
luz ++; en caso de necesitar saber cuantos LEDs se encienden
}
Ciclo de robar aquí, para leer la entrada VU
WW=Max(WW,analogRead(inPin)); Datos de volumen de materia prima (rectificados)
www=Max(WW,www); Pico retect
delayMicroseconds(80); Esto hace que el panel esté
enciende el mismo período de tiempo.
digitalWrite(row+7,LOW); Apagar el LED
CVAL = cval >> 1; Compruebe el siguiente bit
}
digitalWrite(7-col,HIGH); Apague la col
w10ksum += www-w10kbuf [w10kidx]; Este es nuestro 'condensador'
w10kbuf [w10kidx] = www;
w10kidx ++;
w10kidx = ((w10kidx<1)); 0 o 1
Si (w10kidx > 3) w10kidx = 0;
w10ksum = PD; Aumentar la respuesta de gama alta

w1ksum += ww-w1kbuf [w1kidx];
w1kbuf [w1kidx] = ww;
w1kidx ++;
Si (w1kidx > 19) w1kidx = 0;
w1kidx = ((w1kidx<19) & & (w1kidx ++)); 0 - 19

w100sum += ww-w100buf [w100idx];
w100buf [w100idx] = ww;
w100idx ++;
Si (w100idx > 99) w100idx = 0;
w100idx = ((w100idx<1) & & (w100idx ++)); 0 - 199

encendido = 0;
}
}
mientras que (delayStart > millis());
}

Artículos Relacionados

Panel de matriz de LED de 32 x 16 y Arduino

Panel de matriz de LED de 32 x 16 y Arduino

La historia del proyectoEn definitiva, este proyecto es el resultado de un desafío. Un día, un amigo que estaba de visita, vio mis experimentos con alguna matriz de led y me pregunta si puedo controlar muchas de ellas. Respondí que sí sin duda", usan
Matriz de LED fácil de 4 x 6, Arduino!

Matriz de LED fácil de 4 x 6, Arduino!

En este inst'able, le mostraré cómo crear tu propio 4 x 6Matriz de LED, así como mostrar cómo escribir código para él!Hay un programa de creador de animación en el paso 4!Esta es una animación para que usted consiga entusiasmados con el proyecto!***
Construir una pantalla de LED de bajo costo, desplazamiento para su microprocesador de Arduino.

Construir una pantalla de LED de bajo costo, desplazamiento para su microprocesador de Arduino.

Sistema del microordenador de Arduino es una plataforma asequible para aprender sobre programación y microinformática. Sin embargo puede utilizarse Arduinos para instrumentación, robótica y muchos procesos automatizados.En esta serie vamos a través d
Matriz de LED termómetro

Matriz de LED termómetro

Algunas actualizaciones! El código fue editado para que el decimal está en el lugar correcto. También he añadido un paso que se me olvidaba en la sección de soddering.Proyecto escrito:Usando una placa de matriz de LED, así como un sensor de temperatu
Matriz de LED de 32 x 32

Matriz de LED de 32 x 32

Construir una matriz de LED de 32 x 32 usando un microcontrolador Atmega2560.  El proyecto contiene los pasos para construir el tablero matriz, el PCB y el software (escrito en C++).  El software contiene más de 30 animaciones, un RTC (reloj en tiemp
Juego de Tetris de matriz de LED bicolor basados en Arduino

Juego de Tetris de matriz de LED bicolor basados en Arduino

Uno de la electrónica DIY kit jolliFactory vino para arriba con es el Kit del módulo de Bi-color LED matriz conductor. Este módulo está diseñado para ser capaz de cadena así que usted puede encadenar los módulos juntos al número de módulos que necesa
Gran pantalla de matriz de LED 8 x 8

Gran pantalla de matriz de LED 8 x 8

¿Has trabajado con matriz de LED 8 x 8 Ready-Made como muestra? Vienen en varios tamaños y son muy interesantes trabajar con. Un gran tamaño disponible está alrededor de 60 x 60 mm. Sin embargo, si usted está buscando una mayor matriz de LED Ready-Ma
Pantalla de matriz de Led mecánica

Pantalla de matriz de Led mecánica

en primer lugar nos gustaría agradecer a todos los que ayudaron a organizar la 2ª edición de la Arduino Jam y especialmente el Jo3ri, que nos suministra con algunas cosas muy padres y nos mantuvo seguros durante el fin de semana. (Video viene pronto!
Sistema de LED RGB controlable para su hogar u oficina

Sistema de LED RGB controlable para su hogar u oficina

¿Son aburridas las luces en su espacio de trabajo o casa? ¿Quieres añadir un poco de energía o iluminación del humor en su habitación? Este Instructable muestra cómo crear una matriz de LED RGB controlable para el uso en su hogar u oficina. Su red, e
Juego de Pong de matriz de LED de bi-color basados en Arduino

Juego de Pong de matriz de LED de bi-color basados en Arduino

Hemos creado dos instructables proyecto de juego hasta ahora con los kits jolliFactory de Bi-color LED matriz conductor módulo bricolaje que hemos diseñado. Este módulo de matriz de LED está diseñado para ser capaz de cadena así que usted puede encad
Juego de serpiente de matriz de LED bicolor basados en Arduino

Juego de serpiente de matriz de LED bicolor basados en Arduino

Hemos demostrado cómo un Arduino basada en Bi-color LED matriz Tetris juego se puede construir en nuestra última instructable. Estábamos bastante sorpresa fue ofrecida a la página de Instructables y han recibido un buen puñado de favoritos durante un
Mascarilla para matriz de LED

Mascarilla para matriz de LED

Básicamente sólo 12 x 16 pixel LED matriz hecha en una máscara usable. Una alto impacto poliestireno plástico placa base con 142 píxeles de WS2812B 60 LEDs por metro de tira unida. Cada pixel es controlable independientemente de un solo pequeño Pixel
Matriz de LED con un presupuesto

Matriz de LED con un presupuesto

Una única pieza de mobiliario sin tener que gastar un montón de dinero?! Eso es lo que quería lograr en este proyecto. También no estoy completamente familiarizado con la programación y la electrónica y, como la mayoría de nosotros, creo que los LEDs
Construir su propia matriz de LED programable

Construir su propia matriz de LED programable

códigos QR son adictivos. Los smartphones son lo suficientemente inteligentes para leerlos desde prácticamente cualquier ángulo u orientación. Pero imaginar llevándolo un paso más. Tenía sueños de una matriz de LED digital que pude programar con códi