J’ai commencé avec trou rectangulaire de 2200 PCB de RadioShack et à l’aide de digues de coupe que j’ai fait moitié conseils de cercle avec une découpe dans le centre à pour adapter le module de traitement, la batterie lipo et le chargeur. Chaque tranche se compose de 2 - registres à décalage de 8 bits, 16 LED & 16 résistances. Il y a 8 tranches au total donc là mènent 128 s, que j’utilise et Arduino nano 3.1 de makershed.com avec une pâte de lipo et chargeur disponible à sparkfun.com. Afin de s’adapter à ces tranches pour former une sphère, j’ai utilisé PCB circulaire que j’ai trouvé à radioshack. J’ai utilisé un dremel à coupe chaque 45 degrés pour chacune des tranches minces pour se glisser dans les fentes, le paquet est livré avec 3 tailles et 2 de chaque, j’ai utilisé la taille moyenne. J’ai ajouté un accéléromètre de 2125 mesmic parallaxe à la carte principale dans le centre d’initiation à la sphère. Vous facturez la LiPo pâte via un port mini USB situé dans le centre, recharge dure 1 heure environ et dure 45 minutes.
Je tenais à remercier Nikolai pour l’insperation & Null espace Labs HackerSpace pour leur prendre sur le projet. J’ai également écrit Charlie là-bas pour obtenir son entrée sur l’animation de la spirale et il était très gentil et serviable. Je vais poster tout le code que j’ai utilisé dans le cas où quelqu'un est intéressé. Je ne dirais pas que je suis le plus compétents programmeur & am encore à apprendre donc être aimable.
Liens : www.hackaday.com/2011/10/16/we-want-this-led-ball/ //Original
http://charliex2.wordpress.com/2012/02/11/The-Blinky-ball-nullspacelabs/ //Null espace Labs dans LA réalisa une version vraiment cool
Code :
int clockPin = 13 ; IC broche 11, pull jaune
int dataPin = 11 ; IC broche 14, cavalier bleu
int latchPin = 8 ; Axe de l’IC 12, cavalier vert
const int XPSous = 2 ; X sortie de l’accéléromètre
const int yPin = 3 ; Sortie Y de l’accéléromètre
mot des patrons [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 count = sizeof (patrons) / 2 ;
oldy unsigned int = 0 ;
void setup()
{
initialiser la communication série :
Serial.Begin(9600) ;
initialiser les broches reliés à l’accéléromètre
comme entrées :
pinMode (xPin, entrée) ;
pinMode (yPin, entrée) ;
pinMode (latchPin, sortie) ;
pinMode (clockPin, sortie) ;
pinMode (dataPin, sortie) ;
}
void loop()
{
accelorometer() ;
}
Sub accelorometer()
{
variables pour lire les largeurs d’impulsion :
int pulseX, pulseY ;
variables pour contenir les accélérations qui en résulte
int accelerationX, accelerationY ;
lu impulsion de x - axes et y :
pulseX = pulseIn(xPin,HIGH) ;
pulseY = pulseIn(yPin,HIGH) ;
convertir la largeur d’impulsion en accélération
accelerationX et accelerationY sont en milli-g ' s :
la gravité terrestre est 1000 milli-g ' s, soit 1 gramme.
accelerationX = ((pulseX / 10) - 500) * 8 ;
accelerationY = ((pulseY / 10) - 500) * 8 ;
imprimer l’accélération
Serial.Print ("X:") ;
Serial.Print(accelerationX) ;
imprimer un caractère de tabulation :
Serial.Print("\t") ;
Serial.Print ("y") ;
Serial.Print(accelerationY) ;
Serial.println() ;
if(accelerationY == oldy) {}
Count = count + 1 ;
Si (comte > = 500) {}
pour (fois int = 0; fois < = 160 ; fois ++) {}
idleTime() ;
}
Count = count - 50 ;
}
} else {}
Count = count - 1 ;
Si (comte < = 0) {}
Count = 0 ;
}
}
int ywordPos = carte (accelerationY, -1023, 1023, 0, 16) ;
registerOne octets = highByte(patterns[ywordPos]) ;
registerTwo octets = lowByte(patterns[ywordPos]) ;
digitalWrite (latchPin, basse) ;
shiftOut (dataPin, clockPin, MSBFIRST, registerOne) ;
shiftOut (dataPin, clockPin, MSBFIRST, registerTwo) ;
digitalWrite (latchPin, HIGH) ;
oldy = accelerationY ;
}
Sub idleTime()
{
registerOne octets = highByte(patterns[index]) ;
registerTwo octets = lowByte(patterns[index]) ;
digitalWrite (latchPin, basse) ;
shiftOut (dataPin, clockPin, MSBFIRST, registerOne) ;
shiftOut (dataPin, clockPin, MSBFIRST, registerTwo) ;
digitalWrite (latchPin, HIGH) ;
Delay(65) ;
index ++ ;
Si (index > = count) {}
indice = 17 ;
}
}