Ich begann mit rechteckigen 2200 Loch PCBs von RadioShack und mit schneiden Deiche machte ich eine halbe Kreis Bretter mit einem Ausschnitt in der Mitte, Bearbeitungsmodule, Lipo-Akku & Ladegerät passen. Jede Scheibe besteht aus 2 - 8-Bit Schieberegister, 16 LED's & 16 Widerstände. Auf sparkfun.com gibt es 8 Scheiben insgesamt ist es 128 geführt werden, ich benutze und Arduino Nano 3.1 von makershed.com zusammen mit einem Lipo Teig & Ladegerät. Um diese Scheiben zusammen, um eine Kugel zu bilden passen habe ich kreisförmige PCB, die ich gefunden bei Radioshack. Ich habe einen Dremel, Schnitt Schlitze alle 45 Grad für die einzelnen Segmente in schieben, das Paket kommt mit 3 Größen & 2 jeder, ich habe die mittlere Größe. Ich habe einen Parallaxe Mesmic 2125 Beschleunigungsmesser zur Hauptplatine in der Mitte zur Orientierung auf den Bereich. Sie berechnen den LiPo Teig durch ein USB-Mini-Anschluss befindet sich im Zentrum, laden dauert ca. 1 Stunde und dauert 45 Minuten.
Ich wollte Nikolai für Insperation & Null Space Labs HackerSpace für ihre Sicht auf das Projekt bedanken. Ich schrieb auch Charlie drüben, seine Eingabe auf der Spirale-Animation zu bekommen und er war sehr nett und hilfsbereit. Ich werde alle den Code Posten, die ich verwendet, für den Fall, dass jemand interessiert ist. Ich würde nicht sagen, dass ich die fähigsten Programmierer & bin noch am lernen, so freundlich zu sein.
Links: www.hackaday.com/2011/10/16/we-want-this-led-ball/ //Original
http://charliex2.WordPress.com/2012/02/11/The-Blinky-Ball-nullspacelabs/ //Null Raum Labs In LA gemacht eine wirklich coole version
Code:
Int ClockPin = 13; IC-Pin 11, gelbe Pullover
Int DataPin = 11; IC-Pin 14, blauen Pullover
Int LatchPin = 8; IC-Pin 12, grünen Pullover
const Int xPin = 2; X Ausgang des Beschleunigungsmessers
const Int yPin = 3; Y-Ausgang des Beschleunigungsmessers
Word-Muster [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 (Muster) / 2;
oldy unsigned Int = 0;
void setup()
{
serielle Kommunikation zu initialisieren:
Serial.Begin(9600);
initialisieren Sie die Pins verbunden mit dem Beschleunigungssensor
als Eingänge:
PinMode (xPin, Eingabe);
PinMode (yPin, Eingabe);
PinMode (LatchPin, Ausgang);
PinMode (ClockPin, Ausgang);
PinMode (DataPin, Ausgang);
}
void loop()
{
accelorometer();
}
void accelorometer()
{
Variablen der Impulsbreiten zu lesen:
Int PulseX, pulseY;
Variablen, die daraus resultierenden Beschleunigungen enthalten
Int AccelerationX, accelerationY;
Lesen Sie Puls von x- und y-Achse:
PulseX = pulseIn(xPin,HIGH);
pulseY = pulseIn(yPin,HIGH);
die Impulsbreite in Beschleunigung umwandeln
AccelerationX und accelerationY sind in Milli-g:
die Erdanziehungskraft ist 1000 Milli-g oder 1 g.
AccelerationX = ((pulseX / 10) - 500) * 8;
accelerationY = ((pulseY / 10) - 500) * 8;
Drucken Sie die Beschleunigung
Serial.Print ("X:");
Serial.Print(accelerationX);
Drucken Sie einen Tabulator-Zeichen:
Serial.Print("\t");
Serial.Print ("Y:");
Serial.Print(accelerationY);
Serial.println();
If(accelerationY == Oldy) {}
Count = Count + 1;
Wenn (Count > = 500) {}
für (Int Zeiten = 0; Mal < = 160; mal ++) {}
idleTime();
}
Count = Count - 50;
}
} else {}
Count = Count - 1;
Wenn (Graf < = 0) {}
Count = 0;
}
}
Int YwordPos = Karte (accelerationY,-1023, 1023, 0, 16);
Byte-RegisterOne = highByte(patterns[ywordPos]);
Byte-RegisterTwo = lowByte(patterns[ywordPos]);
DigitalWrite (LatchPin, LOW);
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, LOW);
ShiftOut (DataPin, ClockPin, MSBFIRST, RegisterOne);
ShiftOut (DataPin, ClockPin, MSBFIRST, RegisterTwo);
DigitalWrite (LatchPin, HIGH);
Delay(65);
Index ++;
Wenn (Index > = Count) {}
Index = 17;
}
}