Charlieplexed Arduino 8 x 8 LED red de protectores de pantalla hechos y simular circuitos 123D (2 / 4 paso)

Paso 2: código

El código tiene cuatro partes principales:

  1. Los cuadros de animación
  2. La asignación de charlieplexing
  3. El bucle
  4. El controlador de led

1 los cuadros de animación

Para que sea fácil de programar lo que se muestra en la pantalla pequeña, he hecho el código para que sólo pueda escribir en lo que quieras que aparezca como lo que se muestra en las siguientes líneas. 1 significa que la luz está encendida y el 0 apagado. El carácter B pretende Arduino sabe es código binario en lugar de 1 mil hunder etc. etc..

 { B10101010, B10101010, B10101010, B10101010, B10101010, B10101010, B10101010, B10101010 }, { B11111111, B00000000, B11111111, B00000000, B11111111, B00000000, B11111111, B00000000 } 

2 la asignación de charlieplexing

Se trata de una matriz indicando que pasadores necesitan estar conectados entre sí. La belleza de esta tabla es que todavía puede hacer este mismo dispositivo funciona, incluso si han cometido errores en el cableado o tienen algunos otros pernos del IO en uso. Si es así, sólo cambia los valores de la matriz!

3 el lazo

El bucle no hace nada más que cambiar el marco número después de una cantidad fija de tiempo. Llama al controlador de led tan a menudo como sea posible para evitar el parpadeo. Fácilmente podría combinar el programa con otra cosa a añadir aquí.

4 el controlador led

Esto es donde la magia sucede. Básicamente, camina a través de cada LED y comprueba si el actual marco de animación quiere activar o desactivar. Algo que era difícil de captar para mí antes era bitlogic solía hacer esta comprobación. Si no entiendes la explicación en los comentarios, probar con este tutorial: http://arduino.cc/en/Tutorial/BitMask

Código:

 int limiter = 100000;//us (this allows you to delay the action of charlieplexing, //allowing to tweak the speed or see the effect in simulation) int animationDelay = 200;//ms ( 1/(animationDelay/1000)=fps => 5fps ) //this does not really work if the charlieplexing is limited char animationLength = 4;//match this number to the number of frames you've used //this array is filled with all the frames you want to animate, 1 is on and 0 is off char animation[4][8]={ { B10101010, B10101010, B10101010, B10101010, B10101010, B10101010, B10101010, B10101010 }, { B01010101, B01010101, B01010101, B01010101, B01010101, B01010101, B01010101, B01010101 }, { B00000000, B11111111, B00000000, B11111111, B00000000, B11111111, B00000000, B11111111 }, { B11111111, B00000000, B11111111, B00000000, B11111111, B00000000, B11111111, B00000000 } }; const int UPPERPIN = 13; //upmost pin const int LOWERPIN = 5; //lowest pin //this is the charlieplexing mapping, see for more info: //http://wealoneonearth.blogspot.nl/2013/03/design-note-charlieplexing-led-matrices.html char mapping[8][8]={ {2,3,4,5,6,7,8,9}, {1,3,4,5,6,7,8,9}, {1,2,4,5,6,7,8,9}, {1,2,3,5,6,7,8,9}, {1,2,3,4,6,7,8,9}, {1,2,3,4,5,7,8,9}, {1,2,3,4,5,6,8,9}, {1,2,3,4,5,6,7,9} }; //two variables used for timekeeping int animationFrame=0; long animationTimer = 0; void setup() { //nothing to set up } void loop() { //a timer, so you can do some other stuff at the same time if(millis() - animationTimer > animationDelay) { animationFrame++; if (animationFrame>animationLength)animationFrame=0; } updatePins();//update the leds } //the function which manages the leds void updatePins(){ for(int i = 0;i<8;i++){ for(int j = 0;j<8;j++){ if(animation[animationFrame][i]& 1<<j){ //This function works in two parts // 1<<j makes 00000001 for j=1, 00000010 for j=2, etc // then the & operator compares that bit with what is in animation[] //so in total, it checks a specific bit in animiation[], //if it's 1, a led will light, if it's 0, it will not resetAllPins(); //turn off everything pinMode(UPPERPIN-mapping[i][j]+1, OUTPUT);//+1 for offset digitalWrite(UPPERPIN-mapping[i][j]+1, HIGH); pinMode(UPPERPIN-i, OUTPUT); digitalWrite(UPPERPIN-i, LOW); //the mapping array makes sure the right pins are turned on and off delayMicroseconds(limiter); //to be able to see the effect, we limit the speed } else resetAllPins(); } } } void resetAllPins(){ for(int i=LOWERPIN;i<=UPPERPIN;i++){ pinMode(i, INPUT); digitalWrite(i, LOW); } //set everything to high impendance, so it will not function in the circuit } 

Artículos Relacionados

Charlieplexing Arduino

Charlieplexing Arduino

este Instructable muestra cómo implementar Charlieplexing, una técnica que te permitirá controlar muchos más LED que tienes alfileres. Esto demuestra cómo configurar 6 LEDs y usar sólo 3 pines. Puede extender esto a muchos LEDs más. El número exacto
Detector de distancia de Arduino con zumbador y LED

Detector de distancia de Arduino con zumbador y LED

esta es una guía sencilla sobre cómo hacer un detector de distancia utilizando un Arduino, un Sensor de ultrasonidos HC-SRO4, un zumbador y un LED.  El objetivo final de este tutorial es utilizar el zumbador y LED mostrar cuánto es el objeto del sens
Charlieplexed 4 x 5 multicolor LED matriz controlada por Python en la Pi

Charlieplexed 4 x 5 multicolor LED matriz controlada por Python en la Pi

En este Tutorial vamos a hacer una simple matriz de 4 x 5 usando solo 5 pines GPIO en la Raspberry Pi. Esto se hace con una técnica llamada Charlieplexing.Hay muchas páginas en las interwebs sobre Charlieplexing y el lenguaje Python y cómo se todos l
Luces Charlieplexed de la fila de LED, para el Arduino

Luces Charlieplexed de la fila de LED, para el Arduino

este es mi instructable en fila/cadena de charlieplexing un LED con arduino. Me di cuenta de que no había muchos instructables charlieplexing utilizando un arduino, así que hice esto. Traté de mantener el proyecto simple, pero que no funcionó muy bie
Bajo costo LED red

Bajo costo LED red

hay un número de gran Instructables en rejillas de la LED ahi.  Esta es una versión de bajo costo - no es tan pulida, pero fácil de hacer.Este proyecto utiliza un par de hojas de la base de la espuma, una cubierta de luminaria fluorescente de la tien
Arduino Powerd, RGB + blanco LED, Bluetooth controlable, lámpara de pie

Arduino Powerd, RGB + blanco LED, Bluetooth controlable, lámpara de pie

un par de montajes hace pedir un 1M largo WS2801 RGB llevó la faja, apenas para la diversión.Me tomé un tiempo para obtener la franja que trabajan con mi Arduino.El siguiente paso fue averiguar qué hacer con la tira.después de algún tiempo la idea vi
El traje de Medusa de tira de LED con Arduino y LPD8806 tiras Led

El traje de Medusa de tira de LED con Arduino y LPD8806 tiras Led

todo empezó cuando vi un documental de la BBC en 2002 sobre las aguas profundas del océano. Había una medusa de biolimunescent en el documental, probablemente de la especie "ctenophores" que cogió mi atención en los últimos años decidí usan como
Control de Ikea Dioder tira de LED con Arduino + 16 X PWM LED fundido Junta

Control de Ikea Dioder tira de LED con Arduino + 16 X PWM LED fundido Junta

vamos a mostrar cómo conectar y controlar una Ikea DIODER LED tira con un arduino, utilizando un tablero de 16 X PWM LED fundido como intermediario.El 16 X PWM es básicamente un montón de mosfets bajo control PWM (interruptores que activan y desactiv
¿Tutorial Arduino: Parpadeo de un LED

¿Tutorial Arduino: Parpadeo de un LED

cansado de todos esos otros instructables sobre cómo a parpadear un LED? bien, ¿por qué oscila un LED? ¿EH? hay un ible todo acerca de parpadeo de un LED.Paso 1: cableado Antes de programar el arduino necesitamos obtener la configuración de todo.A) c
ARDUINO controlada 12v RGB LED tira

ARDUINO controlada 12v RGB LED tira

Hace aproximadamente un año descubrí que tiras de LED RGB en Amazon. Ser justo antes del inicio de la temporada de festivales de música, naturalmente fui directamente a trabajar haciendo juguetes festival destellantes brillantes loco. Las tiras no di
LEGO + Arduino = Brickduino (1. el LED)

LEGO + Arduino = Brickduino (1. el LED)

¿Sé que LEGO tiene el set de Mindstorms que probablemente es grande, pero estaría aún mejor (y más barato) para hackear sus ladrillos regulares en su propio micro controlador controlado LEGO? Así lo creo!Tenía esta idea durante mucho tiempo, pero a m
Arduino enrutamiento protocolo RIPv1 Spoofer / red Jammer - Ethernet Shield Tutorial

Arduino enrutamiento protocolo RIPv1 Spoofer / red Jammer - Ethernet Shield Tutorial

Esto es una intstructable rápida con alguna prueba de código de concepto para demostrar que los protocolos de enrutamiento pueden ser falseados utilizando Arduino. También sirve como una introducción rápida a usando el shield ethernet y obtiene su ar
Servidor de la web de Arduino Enc28j60, PIR y Led

Servidor de la web de Arduino Enc28j60, PIR y Led

Materiales:-Arduino uno-PIR-Lan de Ethernet ENC28J60-Led-los cables-Router
1 juego de LED con Arduino Uno y un LED RGB

1 juego de LED con Arduino Uno y un LED RGB

a veces tengo esos días donde realmente quiero hacer algo aseado con el Arduino que tengo ahí, pero sé que no tengo la paciencia para una más implicadas en el proyecto que llevaremos más de un día o menos. Se trata de uno de esos días.La premisa es l