Arduino LED Cube! (5 / 7 steg)

Steg 5: Programmering tid!

Jag hittade detta awesome program här:

http://www.stationinthemetro.com/index.php/archives/2008/01/19/makedc-LED-Cube-workshop/

Jag ska rädda dig en resa och efter koden här. Ladda upp till arduino via arduino miljön kan du hämta på arduino.cc (en hemsida).

Baserat på ledcube.c från Make: 7 September 2007 helgen podcast
http://blog.makezine.com/Archive/2007/09/make_a_pocket_led_cube_we.html

Anpassad animering programmeras av Mark Boszko, http://stationinthemetro.com
*/

#include < avr/pgmspace.h > / / tillåter användning av PROGMEM att lagra mönster i flash

#define CUBESIZE 3
#define PLANESIZE CUBESIZE * CUBESIZE
#define PLANETIME 3333 / / tid varje plan visas i oss -> 100 Hz uppdatering
#define TIMECONST 20 / / multiplicerar DisplayTime för att få ms - varför inte = 100?

LED mönster bord i PROGMEM - sista kolumnen är visningstiden i 100ms enheter
TODO kan detta vara en mycket mer kompakt men inte med binära mönster representation
prog_uchar PROGMEM PatternTable [] = {
blinka på och av
B111 B111, B111, B111, B111, B111, B111, B111, B111, 5,
B000, B000, B000, B000, B000, B000, B000, B000, B000, 1,
B111 B111, B111, B111, B111, B111, B111, B111, B111, 5,
B000, B000, B000, B000, B000, B000, B000, B000, B000, 1,
Flash varje LED i sekvens:
Vänster -> höger kolumn, Top- > nedersta raden, övre- > nedre plan
B100, B000, B000, B000, B000, B000, B000, B000, B000, 1,
B010, B000, B000, B000, B000, B000, B000, B000, B000, 1,
B001, B000, B000, B000, B000, B000, B000, B000, B000, 1,
B000, B100, B000, B000, B000, B000, B000, B000, B000, 1,
B000, B010, B000, B000, B000, B000, B000, B000, B000, 1,
B000, B001, B000, B000, B000, B000, B000, B000, B000, 1,
B000, B000, B100, B000, B000, B000, B000, B000, B000, 1,
B000, B000, B010, B000, B000, B000, B000, B000, B000, 1,
B000, B000, B001, B000, B000, B000, B000, B000, B000, 1,
B000, B000, B000, B100, B000, B000, B000, B000, B000, 1,
B000, B000, B000, B010, B000, B000, B000, B000, B000, 1,
B000, B000, B000, B001, B000, B000, B000, B000, B000, 1,
B000, B000, B000, B000, B100, B000, B000, B000, B000, 1,
B000, B000, B000, B000, B010, B000, B000, B000, B000, 1,
B000, B000, B000, B000, B001, B000, B000, B000, B000, 1,
B000, B000, B000, B000, B000, B100, B000, B000, B000, 1,
B000, B000, B000, B000, B000, B010, B000, B000, B000, 1,
B000, B000, B000, B000, B000, B001, B000, B000, B000, 1,
B000, B000, B000, B000, B000, B000, B100, B000, B000, 1,
B000, B000, B000, B000, B000, B000, B010, B000, B000, 1,
B000, B000, B000, B000, B000, B000, B001, B000, B000, 1,
B000, B000, B000, B000, B000, B000, B000, B100, B000, 1,
B000, B000, B000, B000, B000, B000, B000, B010, B000, 1,
B000, B000, B000, B000, B000, B000, B000, B001, B000, 1,
B000, B000, B000, B000, B000, B000, B000, B000, B100, 1,
B000, B000, B000, B000, B000, B000, B000, B000, B010, 1,
B000, B000, B000, B000, B000, B000, B000, B000, B001, 10,

Vissa lite cube - stora kub kul
B000, B000, B000, B000, B011, B011, B000, B011, B011, 10,
B111 B111, B111, B111, B111, B111, B111, B111, B111, 10,
B000, B000, B000, B000, B011, B011, B000, B011, B011, 5,
B000, B000, B000, B000, B000, B000, B000, B000, B001, 2,
B000, B000, B000, B000, B011, B011, B000, B011, B011, 2,
B111 B111, B111, B111, B111, B111, B111, B111, B111, 2,
B000, B000, B000, B000, B011, B011, B000, B011, B011, 2,
B000, B000, B000, B000, B000, B000, B000, B000, B001, 2,
B000, B000, B000, B000, B011, B011, B000, B011, B011, 2,
B111 B111, B111, B111, B111, B111, B111, B111, B111, 1,
B000, B000, B000, B000, B011, B011, B000, B011, B011, 1,
B000, B000, B000, B000, B000, B000, B000, B000, B001, 1,
B000, B000, B000, B000, B011, B011, B000, B011, B011, 1,
B111 B111, B111, B111, B111, B111, B111, B111, B111, 1,
B110, B110, B000, B110, B110, B000, B000, B000, B000, 1,
B100, B000, B000, B000, B000, B000, B000, B000, B000, 1,
B110, B110, B000, B110, B110, B000, B000, B000, B000, 1,
B111 B111, B111, B111, B111, B111, B111, B111, B111, 1,
B000, B000, B000, B000, B011, B011, B000, B011, B011, 1,
B000, B000, B000, B000, B000, B000, B000, B000, B001, 1,
B000, B000, B000, B000, B011, B011, B000, B011, B011, 1,
B111 B111, B111, B111, B111, B111, B111, B111, B111, 1,
B110, B110, B000, B110, B110, B000, B000, B000, B000, 1,
B100, B000, B000, B000, B000, B000, B000, B000, B000, 1,
B110, B110, B000, B110, B110, B000, B000, B000, B000, 1,
B111 B111, B111, B111, B111, B111, B111, B111, B111, 1,
B000, B011, B011, B000, B011, B011, B000, B000, B000, 1,
B000, B000, B001, B000, B000, B000, B000, B000, B000, 1,
B000, B011, B011, B000, B011, B011, B000, B000, B000, 1,
B111 B111, B111, B111, B111, B111, B111, B111, B111, 1,
B000, B000, B000, B110, B110, B000, B110, B110, B000, 1,
B000, B000, B000, B000, B000, B000, B100, B000, B000, 1,
B000, B000, B000, B110, B110, B000, B110, B110, B000, 1,
B111 B111, B111, B111, B111, B111, B111, B111, B111, 1,
B000, B011, B011, B000, B011, B011, B000, B000, B000, 1,
B000, B000, B001, B000, B000, B000, B000, B000, B000, 1,
B000, B011, B011, B000, B011, B011, B000, B000, B000, 1,
B111 B111, B111, B111, B111, B111, B111, B111, B111, 1,
B000, B000, B000, B110, B110, B000, B110, B110, B000, 1,
B000, B000, B000, B000, B000, B000, B100, B000, B000, 1,
B000, B000, B000, B110, B110, B000, B110, B110, B000, 1,

Diagonal torka, börjar i centrum
B111 B111, B111, B111, B111, B111, B111, B111, B111, 5,
B111 B111, B111, B111, B111, B111, B111, B101, B111, 1,
B111 B111, B111, B111, B101, B111, B111, B101, B111, 1,
B111 B111, B111, B111, B101, B111, B111, B100, B111, 1,
B111 B101, B111, B111, B100, B111, B111, B100, B110, 1,
B111 B101, B111, B111, B100, B111, B111, B100, B110, 1,
B111, B011, B111, B111, B100, B110, B111, B100, B100, 1,
B111 B100, B110, B111, B100, B100, B111, B100, B000, 1,
B111 B100, B100, B111, B100, B000, B111, B000, B000, 1,
B111 B100, B000, B111, B000, B000, B011, B000, B000, 1,
B111, B000, B000, B011, B000, B000, B001, B001, B000, 1,

2-LED brett diaginal rand som kretsar kring kuben
B011, B000, B000, B001, B001, B000, B000, B001, B001, 1,
B001 B001, B000, B000, B001, B001, B000, B000, B011, 1,
B000, B001, B001, B000, B000, B011, B000, B000, B110, 1,
B000, B000, B011, B000, B000, B110, B000, B100, B100, 1,
B000, B000, B110, B000, B100, B100, B100, B100, B000, 1,
B000, B100, B100, B100, B100, B000, B110, B000, B000, 1,
B100, B100, B000, B110, B000, B000, B011, B000, B000, 1,
B110, B000, B000, B011, B000, B000, B001, B001, B000, 1,

Nu, med center flashies, efter smak
B011, B000, B000, B001, B001, B000, B000, B011, B001, 1,
B001 B001, B000, B000, B001, B001, B000, B000, B011, 1,
B000, B001, B001, B000, B000, B011, B000, B010, B110, 1,
B000, B000, B011, B000, B000, B110, B000, B100, B100, 1,
B000, B000, B110, B000, B100, B100, B100, B110, B000, 1,
B000, B100, B100, B100, B100, B000, B110, B000, B000, 1,
B100, B100, B000, B110, B000, B000, B011, B010, B000, 1,
B110, B000, B000, B011, B000, B000, B001, B001, B000, 1,
B011, B000, B000, B001, B011, B000, B000, B001, B001, 1,
B001 B001, B000, B000, B001, B001, B000, B000, B011, 1,
B000, B001, B001, B000, B010, B011, B000, B000, B110, 1,
B000, B000, B011, B000, B000, B110, B000, B100, B100, 1,
B000, B000, B110, B000, B110, B100, B100, B100, B000, 1,
B000, B100, B100, B100, B100, B000, B110, B000, B000, 1,
B100, B100, B000, B110, B010, B000, B011, B000, B000, 1,
B110, B000, B000, B011, B000, B000, B001, B001, B000, 1,
B011, B010, B000, B001, B001, B000, B000, B001, B001, 1,
B001 B001, B000, B000, B001, B001, B000, B000, B011, 1,
B000, B011, B001, B000, B000, B011, B000, B000, B110, 1,
B000, B000, B011, B000, B000, B110, B000, B100, B100, 1,
B000, B010, B110, B000, B100, B100, B100, B100, B000, 1,
B000, B100, B100, B100, B100, B000, B110, B000, B000, 1,
B100, B110, B000, B110, B000, B000, B011, B000, B000, 1,
B110, B000, B000, B011, B000, B000, B001, B001, B000, 1,

Inslagning
B001 B001, B000, B000, B001, B001, B000, B000, B001, 1,
B001 B001, B000, B000, B001, B001, B000, B000, B001, 1,
B000, B001, B001, B000, B000, B001, B000, B000, B001, 1,
B000, B000, B001, B000, B000, B001, B000, B000, B001, 1,
B000, B000, B000, B000, B000, B001, B000, B000, B001, 1,
B000, B000, B000, B000, B000, B000, B000, B000, B001, 5,
B000, B000, B000, B000, B000, B000, B000, B000, B000, 3,
B000, B000, B000, B000, B000, B000, B000, B000, B001, 5,
B000, B000, B000, B000, B000, B000, B000, B000, B000, 3,
B000, B000, B000, B000, B000, B000, B000, B000, B001, 5,
B000, B000, B000, B000, B000, B000, B000, B000, B000, 3,

Detta är en dummy element för slutet av tabell (längd = 0)
B000, B000, B000, B000, B000, B000, B000, B000, B000, 0
};

/*
** Definiera stift i matrisen gör det enklare att ordna om hur kuben är kopplad
** Justera nummer här tills lysdioderna blinka i ordning - L till R, T till B
** Observera att analoga ingångar 0-5 även digitala utgångar 14-19!
** Pin DigitalOut0 (serial RX) och AnalogIn5 lämnas öppna för framtida apps
*/

int LEDPin [] = {16, 3, 1, 15, 4, 6, 14, 5, 7};
int PlanePin [] = {19, 18, 17};

initiering
void setup()
{
int pin; loop counter
Ställ in LED stift som utgång (aktiv hög)
för (pin = 0; pin < PLANESIZE; pin ++) {
pinMode (LEDPin [pin], OUTPUT);
}
Ställ in plan stift som utgångar (aktiv låg)
för (pin = 0; pin < CUBESIZE; pin ++) {
pinMode (PlanePin [pin], OUTPUT);
}
}

Visa mönster i tabell tills DisplayTime är noll (sedan upprepa)
void loop()
{
deklarera variabler
byte PatternBuf [PLANESIZE]; sparar aktuell mönster från PatternTable
int PatternIdx;
byte DisplayTime; tid * 100ms Visa mönster
osignerade långa EndTime;
int planet. loop counter kub uppdatering
int patbufidx; indexerar som byte från mönsterbuffert
int ledrow; räknar lysdioder i uppdatera loop
int ledcol; räknar lysdioder i uppdatera loop
int ledpin; räknar lysdioder i uppdatera loop

Initiera PatternIdx till början av mönster bord
PatternIdx = 0;
slinga över poster i mönster bord - medan DisplayTime > 0
göra {
läsa mönster från PROGMEM och spara i en matris
memcpy_P (PatternBuf, PatternTable + PatternIdx, PLANESIZE);
PatternIdx += PLANESIZE;
Läs DisplayTime från PROGMEM och stegvidden index
DisplayTime = pgm_read_byte_near (PatternTable + PatternIdx ++);
beräkna EndTime från aktuell tid (ms) och DisplayTime
EndTime = millis() + ((unsigned long) DisplayTime) * TIMECONST;

ögla fördriva tiden DisplayTime > 0 och nuvarande tid < EndTime
medan (millis() < EndTime) {
patbufidx = 0; Återställ räknaren för index till början av buffert
slinga över plan
för (plan = 0; plan < CUBESIZE; plan ++) {
Inaktivera tidigare plan
om (planet == 0) {
digitalWrite (PlanePin [CUBESIZE-1], hög);
} annat {
digitalWrite (PlanePin [plan-1], hög);
}

läsa in nuvarande plan mönster data till portar
ledpin = 0;
för (ledrow = 0; ledrow < CUBESIZE; ledrow ++) {
för (ledcol = 0; ledcol < CUBESIZE; ledcol ++) {
digitalWrite (LEDPin [ledpin ++], PatternBuf [patbufidx] & (1 << ledcol));
}
patbufidx ++;
}

Aktivera nuvarande plan
digitalWrite (PlanePin [plan], låg);
fördröja PLANETIME oss
delayMicroseconds (PLANETIME);
} / / för plan
} / / medan < EndTime
} medan (DisplayTime > 0); Läs mönster tills tid = 0 som signalerar slutet
}
{6 kommentarer & läsa dem nedan ellertillägga en}

Se Steg
Relaterade Ämnen

8 x 8 x 8 Arduino LED Cube

Detta är ett ganska enkelt projekt, men det är tidskrävande och väl värt slutprodukten!Steg 1: Böjning lysdioder...Göra en jigg, med två små naglar skjuter ut från hålet som passar lampan fint, men inte för hårt... Jag har hittat att 180 grader från...

3 x 3 LED Cube programmering tips (Arduino baserat)

hur man gör att cube gör vad du vill ha den till!Jag följde de instructable här och byggde en 3 x 3 LED cube drivs av en Arduino. Jag blev glad! Men det kunde endast göra en rutin. Igen och igen och igen och igen och igen... Så jag bestämde mig att f...

3 x 3 x 3 LED Cube med Arduino Lib

det finns andra Instructables om att bygga LED kuber, här är olika av flera skäl:1. det är byggt med ett lågt antal off-the-shelf komponenter och krokar direkt till Arduino.2. en tydlig, lätt för att reproducera krets diagram är försedd med massor av...

5 x 5 x 5 LED cube kör på Arduino Uno

Hej vänner, detta är min ta på en 5 x 5 x 5 LED cube, kan komma igång.Det första vi behöver göra är att få alla våra varor.Vi kommer att behöva...:125 lysdioder (se till att de är röd eller gul eller arduino kommer inte att kunna köra den)* tråd, mas...

3 x 3 x 3 LED Cube Arduino-UNO

Är du intresse att göra dina egna 3 x 3 x 3 LED Cube???Är du nybörjare ingen spelar rollDu följer de rätta åtgärderna. Det är enkelt och lätt.Låt mig visa dig hur!Steg 1: Vad behöver du1 x Arduino uno27 x LED (jag använder 3 färger, 9 av varje färg)9...

Arduino 4 x 4 x 4 LED Cube

Översikt:Detta instructable kommer att täcka byggprocessen av en 4 x 4 x 4 LED Cube. Jag kommer att använda en Arduino för att kontrollera lysdioderna. Eftersom Arduino (Freeduino) har sammanlagt 20 pins (inklusive analoga stiften) behöver vi inte ha...

WS2812B LED Cube 96 för arduino magic färgglada

Hej, killar, detta är fjärde gången vi (smart prototyper) post en instructable här,Tack för att titta på! Vi kommer å hålla utstationering rolig instructables. Detta är en LED magiska kuben, vi hoppas att det vara till hjälp för dig och vi skulle äls...

4 x 4 x 4 interaktiva LED-cube med Arduino

för att förklara min 4 x 4 x 4 interaktiva LED-cube publicerade förut, lite mer klart, jag ska försöka att göra mitt första steg för steg instructable.Denna 4 x 4 x 4 kub är interaktiv med fyra hörnet lysdioder både som lysdioder och sensorer som rea...

Halv-tums LED Cube: Arduino kontrollerade 3 x 3 x 3 med SMD lysdioder!

Tar på sig uppgiften startade med mig tänker "Hej, jag skulle kunna göra en mindre LED cube med SMD LED". Ja, tanken var att löda surface mount lysdioderna i rymden! Och ja jag gjorde det (frågan "Varför" kvarstår). Opolerade video:Jag...

Hur man skriver en egen 4 x 4 x 4 LED Cube Show för Arduino

Det finns många Instructables ute lära dig hur man bygger en LED cube, men endast ett fåtal faktiskt hjälpa dig att skriva koden för att gå med den men hellre bara ge dig några att använda, således stoppa din kreativa potential! Också det finns många...

4 x 4 x 4 LED cube (Arduino)

i detta instructable jag kommer att visa dig hur man gör en 4 x 4 x 4 LED cube som kommer att kontrolleras av en Arduino Demulionove. nu Ja du kan säga"att Arduino har endast 14 I/O pins väl också 6 analoga stiften kan användas som stift 15,16,17,18,...

Arduino Mega 8 x 8 x 8 RGB LED Cube

"Så du vill bygga en 8 x 8 x 8 RGB LED Cube"Jag har spelat runt med elektronik och Arduinos ett tag nu, inklusive bygga en hög amp switch controller för min bil och en sex körfält Pinewood Derby domare för våra scouter grupp.Jag var så fascinera...

Hur man bygger en 8 x 8 x 8 LED cube och styra med en Arduino

det finns en hel del LED kuber på Instructables, så varför göra en annan? De flesta är för små kuber som består av 27 eller 64 lysdioder, sällan större eftersom de är begränsade till antalet utgångar på mikrokontroller. Denna kub blir 512 lysdioder,...

Enkel LED Cube 4 x med Arduino / 328p

Hej!Detta är min första Instructable om min 4 x 4 x 4 LED Cube. Hjärnan av kuben är Atmega 328p. ATmega 328p är mikrokontroller används i Arduino Uno. Så antingen kan du använda Arduino eller bara Atmega 328p.Detta instructable kommer att förklara kr...

ARDUINO UNO LED CUBE dansande ljus

låt oss se hur man gör dansande ljus LED kuben med din arduino uno.För detta projekt arduino uno är must och 64 leds du behöver för ditt färgval.Jag har använt blue LED för detta projekt.Du måste löda alla 64 ledde lager av lager men som skulle vara...

4 x 4 x 4 LED-cube baserade Arduino och blomma protoboard

detta instructable kommer att lära dig hur man bygger din 4 x 4 x 4 LED cube med Blomma ProtoBoard och kontroll av Arduino. Varför är blomma ProtoBoard? inte ProtoBoard?På grund av använder jag ofta grindar för att testa om en ny idé fungerar i prakt...

DIY | 3 x 3 x 3 LED Cube för Arduino Nano +

Hej alla!Mitt namn är RGBFreak och jag skapade en YouTube-kanal ganska nyligen.Jag älskar DIY och jag älskar speciellt lysdioder, så det är därför jag bestämde mig att göra min egen 3 x 3 x 3 LED Cube!Du behöver följande produkter att göra denna LED...

LED CUBE KODGENERATOR 4 x 4 x 4 Arduino

Detta är en handledning om hur du lättare göra mönster för din Arduino-kontrollerad LED cube 4 x 4 x 4.Jag kände igen de svårigheter som många människor har med programmering LED cube efter bygga det, så jag har gjort ett program för att göra detta t...

Att göra en Arduino 3 X 3 LED Cube på mindre än 30 minuter

Tja, ska idag jag visa dig hur man gör en arduino 3 X 3 LED cube. Jag gjorde en igår och jag har försökt att förenkla förfarandet för alla att förstå. Så, mindre prata och mer demonstration.Steg 1: krav Dessa är de element du behöver:27 lysdioderLöde...