domingo, 25 de janeiro de 2015

Cubo de LEDs 3x3x3

Olá galerinha, hoje ensinarei a vocês como montar um cubo de LEDs 3x3x3, é um projeto relativamente fácil, como todos os nossos tutoriais.

Para este tutorial precisaremos de:

- 1 Arduíno uno;
- 27 LEDs (de preferencia uma unica cor);
- 3 Transistores (BC548);
- 3 Resistores de 10kΩ;
- 9 Resistores de 220Ω;
- Jumpers

Para este projeto precisaremos de uma biblioteca, você pode baixa-la aqui.
Copie e cole a biblioteca dentro da pasta C:\Program Files \Arduino\libraries 

Voce encontra estes e outros componentes na loja Sttamp.com
Fonte: https://electronicavm.files.wordpress.com/2011/07/





Então o Cubo funciona praticamente da seguinte forma, linha X coluna, na coluna você ira soldar todos os cátodos, (negativo) e nas linhas ira soldar todos os Anodo (Positivo).
Fonte: http://2.bp.blogspot.com/-KKkSGaTF5Kc/TgUXZMtsTzI/
Apos ter feito todos os passos, baixe a biblioteca do cubo, e copie o código abaixo.

Para este projeto precisaremos de uma biblioteca, você pode baixa-la aqui.
Copie e cole a biblioteca dentro da pasta C:\Program Files \Arduino\libraries 

Se gostou ou tem duvidas sobre o tutorial, deixe um comentário abaixo.

Código:

/*
Mais tutoriais em http://blog.sttamp.com/
grupo no whatsApp "Viciados em Arduino" des de 27/04/2014
WhatsAppp +55 66 9691-3568
*/
#include <LedCube.h>
#define SIZE 3
#define COLS (SIZE*SIZE)
byte levelPins[SIZE] = {11,12,13};
byte colPins[COLS] = {2,3,4,5,6,7,8,9,10};
LedCube cube(SIZE, levelPins, colPins);
void setup ()
{}
void loop ()
{
delay(10);
// acender uma luz em um sinal de tempo, uma luz de cada vez
for(byte level=0; level<cube.getLevels(); level++)
{
for(byte col=0; col<cube.getCols(); col++)
{
cube.lightPulse(level, col, 100);
}
}
// um nível de luz de cada vez, o aumento da velocidade
for(byte d=25; d>2; d-=2)
{
for(byte l=1; l <= cube.getLevels(); l++)
{
cube.lightLevel(l, d);
}
}
// acender cada linha em cada nível
for(byte level=1; level<=cube.getLevels(); level++)
{
for(byte row=1; row<=cube.getLevels()*2; row++)
{
cube.lightRow(row, level);
}
}
// acender cada plano
for(byte i=3; i; i--)
{
for(byte row=1; row<=cube.getLevels()*2; row++)
{
cube.lightPlane(row, 10*i);
}
}
// luz aleatória simples de cada vez
cube.randomLight(random(25,100),100);
// coluna aleatória
for(byte x=0; x<=15; x++)
{
cube.lightDrop(random(0,cube.getCols()), random(50,150));
}
// círculo em torno de cubo em um nível aleatório
for(byte x=0; x<=5; x++)
{
cube.lightPerimeter(random(0,cube.getLevels()), random(1,5), random(25,100));
}
// acender cada rosto
byte planes[] = {cube.getLevels()+1,cube.getLevels(),cube.getLevels()*2,1};
for(byte i=5; i; i--)
{
for(byte p=0; p<sizeof(planes); p++)
{
cube.lightPlane(planes[p], 5*i);
}
}
// colunas aleatórias
cube.randomColumn(25);
// desativar uma única coluna aleatoriamente
cube.enableBuffer();
for(byte c=0; c<30; c++)
{
cube.fillBuffer();
cube.invertBuffer();
cube.randomColumn();
cube.drawBuffer(7);
}
cube.enableBuffer(false);
// dentro e fora
for(byte c=1, d=0; c<=10; c++)
{
if(c%2 == 0)
{
for(d=0; d<20; d++)
{
cube.lightColumn(2,1);
cube.lightColumn(4,1);
cube.lightColumn(6,1);
cube.lightColumn(8,1);
}
}
else if(c%4 == 1)
{
for(d=0; d<30; d++)
{
cube.lightColumn(1,1);
cube.lightColumn(3,1);
cube.lightColumn(7,1);
cube.lightColumn(9,1);
}
}
else
{
for(d=0; d<70; d++)
{
cube.lightColumn(5,1);
}
}
}
// diamante e caixa
byte diamond[] = {0,4, 1,1, 1,3, 1,4, 1,5, 1,7, 2,4};
byte box[] = {
2,0, 2,1, 2,2, 2,3, 2,5, 2,6, 2,7, 2,8,
1,0, 1,2, 1,6, 1,8,
0,0, 0,1, 0,2, 0,3, 0,5, 0,6, 0,7, 0,8
};
cube.lightSequence(box, sizeof(box), 200);
cube.lightSequence(diamond, sizeof(diamond), 400);
// efeito helicóptero
byte topSeq[8] = {0,3,6,7,8,5,2,1};
byte botSeq[8] = {8,5,2,1,0,3,6,7};
for(byte loops = 0, delay = 50; loops<=8; loops++)
{
for(byte s=0; s<8; s++)
{
byte seq[] = {2,topSeq[s], 1,4, 0,botSeq[s]};
cube.lightSequence(seq, sizeof(seq), delay);
}
if(loops < 5) delay-=10; else delay += 10;
}
// desligar uma luz de cada vez
cube.enableBuffer();
cube.fillBuffer();
cube.drawBuffer(25);
for(byte w=0, l, c, max = cube.getNumLights(); w<max; )
{
// limite inferior é, inclusive, superior é exclusivo
l = random(0, cube.getLevels());
c = random(0, cube.getCols());
if(cube.getBufferAt(l,c) == HIGH)
{
cube.lightOff(l,c);
cube.drawBuffer(5);
w++;
}
}
cube.enableBuffer(false);
}
view raw gistfile1.ino hosted with ❤ by GitHub

12 comentários:

  1. Arduino: 1.8.2 (Windows 7), Placa:"Arduino/Genuino Uno"

    C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\leandro\Documents\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=0X2341_0X0043 -ide-version=10802 -build-path C:\Users\leandro\AppData\Local\Temp\arduino_build_143065 -warnings=none -build-cache C:\Users\leandro\AppData\Local\Temp\arduino_cache_430952 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\leandro\Desktop\teste\LedCube\examples\ledcube\ledcube.ino
    C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\leandro\Documents\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=0X2341_0X0043 -ide-version=10802 -build-path C:\Users\leandro\AppData\Local\Temp\arduino_build_143065 -warnings=none -build-cache C:\Users\leandro\AppData\Local\Temp\arduino_cache_430952 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\leandro\Desktop\teste\LedCube\examples\ledcube\ledcube.ino
    Using board 'uno' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
    Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
    Detecting libraries used...
    "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10802 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "C:\Users\leandro\AppData\Local\Temp\arduino_build_143065\sketch\ledcube.ino.cpp" -o "nul"
    "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10802 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "C:\Users\leandro\AppData\Local\Temp\arduino_build_143065\sketch\ledcube.ino.cpp" -o "C:\Users\leandro\AppData\Local\Temp\arduino_build_143065\preproc\ctags_target_for_gcc_minus_e.cpp"
    C:\Users\leandro\Desktop\teste\LedCube\examples\ledcube\ledcube.ino:7:21: fatal error: LedCube.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Erro compilando para a placa Arduino/Genuino Uno

    boa noite, conheci o arduino a pouco tempo, este e o meu primeiro trabalho que tento fazer mais esta aparecendo este erro.
    sera que poderia me ajudar

    ResponderExcluir
  2. gente em ves de eu usar a resistencia 220 eu poderia estar usando a 1k

    ResponderExcluir
  3. boa noite como baixar a biblioteca acho eu que ninguém conseguiu, peço sua ajuda.

    ResponderExcluir
  4. NÃO CONSIGO BAIXAR A BIBLIOTECA; ME AJUDEM . COMO E ONDE ENCONTRÁ-LA.

    ResponderExcluir
    Respostas
    1. Serio mesmo? ta no link que ele postou. https://drive.google.com/file/d/0B-MMGPEFPE77TTV0WFFVRGhBTkE/view

      Excluir
  5. Perfeito! muito obrigada por compartilhar este projeto com tantos detalhes!

    ResponderExcluir