Comencé con el agujero rectangular de 2200 de PCB de RadioShack y el uso de diques de corte que hice mitad tableros de círculo con un hueco en el centro para el módulo de procesamiento, batería lipo y cargador. Cada rebanada se compone de 2 - registros de desplazamiento de 8 bits, 16 LEDs y resistencias de 16. Hay 8 rebanadas en total de allí son 128 LED, uso y Arduino nano 3.1 de makershed.com junto con una mezcla de lipo y cargador en sparkfun.com. Para montar estas rebanadas para formar una esfera usé circular PCB que encontré en radioshack. Usé una dremel al corte cortes cada 45 grados para cada una de las rebanadas de Deslice, el paquete viene con 3 tamaños y 2 de cada uno, utilicé el tamaño medio. He añadido un acelerómetro de 2125 parallax mesmic a la placa principal en el centro de orientación a la esfera. Usted carga la LiPo la masa a través del puerto mini USB situado en el centro de carga toma 1 hora aproximadamente y tiene una duración de 45 minutos.
Queria agradecer a Nikolai para el insperation y el nulo espacio laboratorios HackerSpace para su toma en el proyecto. También escribí a Charlie allí para conseguir su entrada en la animación de espiral y fue muy agradable y servicial. Voy a publicar todo el codigo que utilicé por si alguien está interesado. Yo no diría que soy el más experto programador & am sigo aprendiendo así que bueno.
Enlaces: www.hackaday.com/2011/10/16/we-want-this-led-ball/ //Original
http://charliex2.wordpress.com/2012/02/11/The-Blinky-Ball-nullspacelabs/ //Null espacio Labs en LA hizo una versión genial
Código:
clockPin int = 13; Pin IC 11, puente amarillo
int dataPin = 11; IC Pin 14, puente azul
int latchPin = 8; Pin IC 12, puente verde
const int xPin = 2; X salida del acelerómetro
const int yPin = 3; Y salida del acelerómetro
la palabra patrones [176] = {}
0b1100000000000000,
0b0110000000000000,
0b0011000000000000,
0b0001100000000000,
0b0000110000000000,
0b0000011000000000,
0b0000001100000000,
0b0000000110000000,
0b0000000011000000,
0b0000000001100000,
0b0000000000110000,
0b0000000000011000,
0b0000000000001100,
0b0000000000000110,
0b0000000000000011,
0b0000000000000001,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b1010111010001101,
0b0110101010011010,
0b0101010010011100,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b1010111010001101,
0b0110101010011010,
0b0101010010011100,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b1100000000000000,
0b0110000000000000,
0b0011000000000000,
0b0001100000000000,
0b0000110000000000,
0b0000011000000000,
0b0000001100000000,
0b0000000110000000,
0b0000000011000000,
0b0000000001100000,
0b0000000000110000,
0b0000000000011000,
0b0000000000001100,
0b0000000000000110,
0b0000000000000011,
0b0000000000000001,
0b0000000000000001,
0b0000000000000011,
0b0000000000000110,
0b0000000000001100,
0b0000000000011000,
0b0000000000110000,
0b0000000001100000,
0b0000000011000000,
0b0000000110000000,
0b0000001100000000,
0b0000011000000000,
0b0000110000000000,
0b0001100000000000,
0b0011000000000000,
0b0110000000000000,
0b1100000000000000,
0b1100000000000000,
0b0110000000000000,
0b0011000000000000,
0b0001100000000000,
0b0000110000000000,
0b0000011000000000,
0b0000001100000000,
0b0000000110000000,
0b0000000011000000,
0b0000000001100000,
0b0000000000110000,
0b0000000000011000,
0b0000000000001100,
0b0000000000000110,
0b0000000000000011,
0b0000000000000001,
0b0000000000000001,
0b0000000000000011,
0b0000000000000110,
0b0000000000001100,
0b0000000000011000,
0b0000000000110000,
0b0000000001100000,
0b0000000011000000,
0b0000000110000000,
0b0000001100000000,
0b0000011000000000,
0b0000110000000000,
0b0001100000000000,
0b0011000000000000,
0b0110000000000000,
0b1100000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b1010100100111110,
0b1010110100100101,
0b1010101001101111,
0b1100101111010101,
0b1111011010101010,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000
};
int index = 17;
int cuenta = sizeof (patrones) / 2;
oldy unsigned int = 0;
void setup()
{
inicializar comunicaciones serie:
Serial.Begin(9600);
Inicializa los pines conectados al acelerómetro
como entradas:
pinMode (xPin, entrada);
pinMode (yPin, entrada);
pinMode (latchPin, salida);
pinMode (clockPin, salida);
pinMode (dataPin, salida);
}
void loop()
{
accelorometer();
}
void accelorometer()
{
variables para leer las anchuras de pulso:
int pulseX, pulseY;
variables que contienen las aceleraciones resultantes
int accelerationX, accelerationY;
leer pulso de ejes x e y:
pulseX = pulseIn(xPin,HIGH);
pulseY = pulseIn(yPin,HIGH);
convertir el ancho de pulso de aceleración
accelerationX y accelerationY en milli-g es:
gravedad de la tierra es 1000 milli-g o 1 g.
accelerationX = ((pulseX / 10) - 500) * 8;
accelerationY = ((pulseY / 10) - 500) * 8;
imprimir la aceleración
Serial.Print ("X:");
Serial.Print(accelerationX);
imprimir un carácter de tabulación:
Serial.Print("\t");
Serial.Print ("Y:");
Serial.Print(accelerationY);
Serial.println();
if(accelerationY == Oldy) {}
cuenta = cuenta + 1;
Si (cuenta > = 500) {}
para (int veces = 0; veces < = 160; veces ++) {}
idleTime();
}
cuenta = cuenta - 50;
}
} else {}
Count = count - 1;
Si (cuenta < = 0) {}
cuenta = 0;
}
}
int ywordPos = mapa (accelerationY,-1023, 1023, 0, 16);
byte registerOne = highByte(patterns[ywordPos]);
byte registerTwo = lowByte(patterns[ywordPos]);
digitalWrite (latchPin, bajo);
shiftOut (dataPin, clockPin, MSBFIRST, registerOne);
shiftOut (dataPin, clockPin, MSBFIRST, registerTwo);
digitalWrite (latchPin, HIGH);
Oldy = accelerationY;
}
void idleTime()
{
byte registerOne = highByte(patterns[index]);
byte registerTwo = lowByte(patterns[index]);
digitalWrite (latchPin, bajo);
shiftOut (dataPin, clockPin, MSBFIRST, registerOne);
shiftOut (dataPin, clockPin, MSBFIRST, registerTwo);
digitalWrite (latchPin, HIGH);
Delay(65);
Índice ++;
Si (Índice > = count) {}
Índice = 17;
}
}