segunda-feira, 26 de janeiro de 2015

Cubo de LEDs 4x4x4

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

Para este tutorial precisaremos de:


Para este projeto não precisaremos de uma biblioteca.

Você encontra estes e outros componentes na loja Sttamp.com


Então o Cubo funciona praticamente da seguinte forma, linha X coluna, na coluna você irá soldar todos os cátodos, (negativo) e nas linhas ira soldar todos os Anodos (Positivo).
Fonte: http://www.tecnosalva.com/files/imagen/images/structural-diagram1.png

Para facilitar na soldagem dos LEDs, recomendo que faça uma tabela perfurada, para que possa soldar os LEDs, verificando a distância entre eles, como a imagem abaixo.
Fonte: http://cdn.instructables.com/FBW/6WMF/G1VDTR80/FBW6WMFG1VDTR80.LARGE.jpg


Após ter feito todos os passos, baixe a biblioteca do cubo, e copie o código abaixo.

Para este projeto não precisaremos de uma biblioteca.

Seu projeto ficara parecido com o vídeo abaixo:


Se gostou ou tem dúvidas sobre o tutorial, deixe um comentário abaixo.

Alem do código abaixo, você pode baixar mais 6 outros códigos aqui para diversificar seu projeto.


Código:
/*
Mais tutoriais em http://viciadosemarduino.blogspot.com.br/
grupo no whatsApp "Viciados em Arduino" des de 27/04/2014
WhatsAppp +55 66 9691-3568
*/
int Columnas[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
int Filas[] = {16, 17, 18, 19};
int RandFila; //Variable para fila aleatoria
int RandColumna; //Variable para columna aleatoria
void setup()
{
int contador;
for (int contador = 0; contador < 17; contador++){
pinMode(Columnas[contador], OUTPUT); }
for (int contador = 0; contador < 5; contador++){
pinMode(Filas[contador], OUTPUT); }
}
void loop()
{
RandLed();
}
void RandLed()
{
RandFila = random(0,4);
RandColumna = random(0,16);
digitalWrite(Filas[RandFila], HIGH);
digitalWrite(Columnas[RandColumna], HIGH);
delay(75);
digitalWrite(Filas[RandFila], LOW);
digitalWrite(Columnas[RandColumna], LOW);
delay(50);
}
view raw gistfile1.ino hosted with ❤ by GitHub

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

quinta-feira, 8 de janeiro de 2015

Arduino + MMA7361

Aqui ensinarei a vocês como utilizarem o Acelerômetro MMA7361 para capturar a aceleração em 3 eixos: X, Y, Z.


O Acelerômetro MMA7361 é um módulo que permite medir a aceleração de um objeto em relação à gravidade. Este acelerômetro possui alta sensibilidade, podendo ser ajustando em 2 níveis de sensibilidade (1.5g ou 6g), além de possuir dois níveis de alimentação (3.3V ou 5V).

Obs. Não esqueçam de baixar a Biblioteca.
Lembrando que esta biblioteca só funciona para o Acelerômetro MMA7631.
Se estiver usando sistema 32bits, sua biblioteca estará  na pasta: C:\Program Files\Arduino\libraries
Se estiver usando sistema 64bits, sua biblioteca estará em uma pasta diferente, geralmente localizada em: C:\Program Files(x86) \Arduino\libraries

Materiais:
-Arduino
-Módulo Acelerômetro MMA7361
-Jumper Macho - Fêmea





Apos ter baixado a Biblioteca, você pode usar o código a baixo para testar seu novo projeto.



Curtiu? Deixe suas sugestões no campo de comentários abaixo e visite a nossa loja Sttamp.com 

Código:
/*
Mais tutoriais em http://blog.sttamp.com/
grupo no whatsApp "Viciados em Arduino" des de 27/04/2014
WhatsAppp +55 66 9667-0801
*/
#include //inclui a biblioteca do MMA7631
AcceleroMMA7361 accelero;
int x;
int y;
int z;
void setup()
{
Serial.begin(9600);
accelero.begin(13, 12, 11, 10, A0, A1, A2);
accelero.setARefVoltage(5); //configura a voltagem para 3.3V
accelero.setSensitivity(LOW); //configura a sensibilidae para +/-6G
accelero.calibrate();
}
void loop()
{
x = accelero.getXAccel();
y = accelero.getYAccel();
z = accelero.getZAccel();
Serial.print("\nx: ");
Serial.print(x);
Serial.print(" \ty: ");
Serial.print(y);
Serial.print(" \tz: ");
Serial.print(z);
Serial.print("\tG*10^-2");
delay(500); //make it readable
}

domingo, 4 de janeiro de 2015

Arduíno + Bluetooth HC-06

Olá pessoal hoje ensinarei vocês como usar o Arduíno para acender LEDs via Bluetooth, para este tutorial, não precisaremos de nenhuma biblioteca, pois o mesmo e tratado como serial.

Este e um projeto relativamente simples, bem fácil de montar.

Para este tutorial precisaremos de:

Você encontra estes e outros componentes na loja Sttamp.com


Após ter feito as ligações, baixe nosso aplicativo para Android aqui.

O aplicativo é aparentemente igual a foto que está abaixo:


As variáveis dos botões são:
Botão 1 = '1';
Botão 2 = '2';
Botão 3 = '3';
Botão 4 = '4';

Código:
/*
Mais tutoriais em http://blog.sttamp.com/
grupo no whatsApp "Viciados em Arduino" des de 27/04/2014
WhatsAppp +55 66 9667-0801
*/
int led1 = 2;
int led2 = 3;
int led3 = 4;
int led4 = 5;
int estado1 = LOW;
int estado2 = LOW;
int estado3 = LOW;
int estado4 = LOW;
char leitura;
void setup(){
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
}
void loop(){
if(Serial.available()){
leitura = Serial.read();
Serial.print(leitura);
if(leitura == '1'){
estado1 = !estado1;
}
if(leitura == '2'){
estado2 = !estado2;
}
if(leitura == '3'){
estado3 = !estado3;
}
if(leitura == '4'){
estado4 = !estado4;
}
}
digitalWrite(led1, estado1);
digitalWrite(led2, estado2);
digitalWrite(led3, estado3);
digitalWrite(led4, estado4);
}
view raw gistfile1.ino hosted with ❤ by GitHub