Projeto 1 - Pisca LED

Olá pessoal, agora vamos iniciar na prática como montar os componentes e executar os programas para vermos como o placa Arduino funciona realmente.

Projeto 3 - Alarme com sonorizador piezo

Olá pessoal, este projeto será um pouco barulhento pois, vamos fazer um alarme com sonorizador piezo conectado a um pino de saída digital, podendo ser criado um som de sirene. Iremos gerar uma onda senoidal para gerar os pulsos e criando o som

Projeto 10 - Controle de temperatura com LCD e Cooler

Olá pessoal, já vimos basicamente como utilizar um LCD com o Arduino, agora vamos fazer um pequena aplicação utilizando o mesmo esquema do projeto anterior acrescentando um cooler. Este projeto tem pouca complexidade, desde que montado com calma para não se perderem nas inserções dos jumpers.

Projeto 8 - Controle básico com LCD

Olá pessoal, agora vamos deixar nossos projetos visualmente mais interessantes. Iremos aprender como utilizar o LCD (Liquid Crystal Display), não utilizaremos o modelo JHD 162A, deixando nossos projetos mais amigáveis.

Projeto 19 – Arduino como um osciloscópio

Olá pessoal, nós que gostamos de mexer com eletrônica sempre ficamos na curiosidade de sabermos qual é o tipo de onda que está sendo gerada em um circuito qualquer, pois então vamos aprender como fazer um osciloscópio com o Arduino, o programa é muito útil e fácil de utilizar, com ele podemos tirar nossa curiosidade em relação as ondas em circuitos eletrônicos. Vamos saciar nossa curiosidade ?

7 de dez. de 2014

Projeto 37 – Jogo do Ping Pong com LCD Nokia 5110

Projeto 37 – Jogo do Ping Pong com LCD 5110 

Olá pessoal, conforme prometido neste projeto iremos utilizar o módulo LCD Nokia 5110 para fazermos um jogo simples e muito conhecido - o ping pong. Eu utilizei dois joysticks como controle para controlar as barras, porém se vocês não tiverem este componente em mãos vocês podem utilizar potenciômetros que fará a mesma função do joystick. Então mãos aos componentes !!
Os códigos serão todos comentados para melhor entendimento, podendo ser retirados após a compreensão de cada linha. Bom trabalho !!!


Vídeo do projeto pronto








Componentes necessários

1 Shield LCD Nokia 5110
1 Buzzer
2 Joysticks ou potenciômetros
1 Resistor de 220 Ω
Fios jumper do tipo macho/fêmea e macho/macho.

Conectando os componentes

Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB. Agora, conecte todos componentes como mostra a figura abaixo:







Segue o esquemático abaixo para melhor entendimento:

Pinos do módulo LCD Nokia 5110               Pinos do Arduino

                       RST                                                       6
                       CE                                                         7
                       DC                                                         5
                       Din                                                         4
                       Clk                                                         3
                       Vcc                                                        5V
                       Gnd                                                       GND
                       BL                                                          Resistor (+)  
                                                         


Agora vamos ao código:


// Setando os pinos do LCD Nokia 5110 no Arduino Uno
#define PIN_SCE   7
#define PIN_RESET 6
#define PIN_DC    5
#define PIN_SDIN  4
#define PIN_SCLK  3

#define PIN_BUZZER 8

#define LCD_C     LOW
#define LCD_D     HIGH

// Inicializa o LCD com apenas 504 pixels de resolução.
#define LCD_X     84
#define LCD_Y     6

int barWidth = 14;  // Comprimento das barras.
int barHeight = 4;  // Largura das barras.
int ballPerimeter = 5;    // Tamanho da bola.
unsigned int bar1X = 0;
unsigned int bar1Y = 0;
unsigned int bar2X = 0;
unsigned int bar2Y = LCD_Y * 8 - barHeight;
int ballX = 0;
int ballY = 0;
boolean isBallUp = false;
boolean isBallRight = true;

byte pixels[LCD_X][LCD_Y];
unsigned long lastRefreshTime;
const int refreshInterval = 150;
byte gameState = 3; // Estágios do game.
byte ballSpeed = 4; // Velocidadeda bola.
byte player1WinCount = 0;
byte player2WinCount = 0;
byte hitCount = 0;

void setup(){  
  
  pinMode(PIN_BUZZER, OUTPUT);
  // Inicializa as funções abaixo.
  LcdInitialise();
  restartGame();
}

void loop(){    
  
  unsigned long now = millis();
  if(now - lastRefreshTime > refreshInterval){
      update();
      refreshScreen();
      lastRefreshTime = now;  
  }  
}


// Função reinciar jogo.
void restartGame(){
  
   ballSpeed = 1;
   gameState = 1;
   ballX = random(0, 60);
   ballY = 20;
   isBallUp = false; 
   isBallRight = true;
   hitCount = 0;
   
  }


// Função atualzar tela do LCD.
void refreshScreen(){

  if(gameState == 1){
    for(int y = 0; y < LCD_Y; y++){
        for(int x = 0; x < LCD_X; x++){
           byte pixel = 0x00;
           int realY = y * 8;
           
           // Inicia a bola na tela.
           if(x >= ballX && x <= ballX + ballPerimeter -1 && ballY + ballPerimeter > realY && ballY < realY + 8 ){
             byte ballMask = 0x00;
             for(int i = 0; i < realY + 8 - ballY; i++){
               ballMask = ballMask >> 1;
               if(i < ballPerimeter)
                 ballMask = 0x80 | ballMask;
             }
             pixel = pixel | ballMask;
           }
           
           // Inicia a barra na tela.
           if(x >= bar1X && x <= bar1X + barWidth -1 && bar1Y + barHeight > realY && bar1Y < realY + 8 ){
             byte barMask = 0x00;
             for(int i = 0; i < realY + 8 - bar1Y; i++){
               barMask = barMask >> 1;
               if(i < barHeight)
                 barMask = 0x80 | barMask;
             }
             pixel = pixel | barMask;
           }
           
           if(x >= bar2X && x <= bar2X + barWidth -1 && bar2Y + barHeight > realY && bar2Y < realY + 8 ){
             byte barMask = 0x00;
             for(int i = 0; i < realY + 8 - bar2Y; i++){
               barMask = barMask >> 1;
               if(i < barHeight)
                 barMask = 0x80 | barMask;
             }
             pixel = pixel | barMask;
           }
           LcdWrite(LCD_D, pixel);
         }
    }
  } else if(gameState == 2){
    // Faz a tratativa dos estágios do jogo.
    int pinOut = 8;
    int freq = 150;
    int duration = 1000;
    tone(pinOut, freq, duration);
  
  }
   
}

void update(){
    
  if(gameState == 1){
     int barMargin = LCD_X - barWidth;
     int joystick1 = analogRead(A0); // Lê os joysticks e posiciona as barras no LCD.
     int joystick2 = analogRead(A1);
     bar1X = joystick1 / 2 * LCD_X / 512;
     bar2X = joystick2 / 2 * LCD_X / 512;
    
     if(bar1X > barMargin) bar1X = barMargin;
     if(bar2X > barMargin) bar2X = barMargin;
     
     // Movimento da bola.
     if(isBallUp)
       ballY -= ballSpeed;
     else
       ballY += ballSpeed;
     if(isBallRight)
       ballX += ballSpeed;
     else
       ballX -= ballSpeed;
       
     // Verifica se ouve colisões.  
     if(ballX < 1){
       isBallRight = true;
       ballX = 0;
     }
     else if(ballX > LCD_X - ballPerimeter - 1){
       isBallRight = false;
       ballX = LCD_X - ballPerimeter;
     }
     if(ballY < barHeight){
       if(ballX + ballPerimeter >= bar1X && ballX <= bar1X + barWidth){ // Faz com que a bola ping para a barra 1.
         isBallUp = false;
         if(ballX + ballPerimeter/2 < bar1X + barWidth/2)
           isBallRight = false;
         else
           isBallRight = true;
         ballY = barHeight;
         if(++hitCount % 10 == 0 && ballSpeed < 5) 
           ballSpeed++;
       }else{   
         // Jogador 2 é o vencedor.
         gameState = 2;
         player2WinCount++;
       }
     }
     if(ballY + ballPerimeter > LCD_Y * 8 - barHeight){
       if(ballX + ballPerimeter >= bar2X && ballX <= bar2X + barWidth){ // Faz com que a bola ping para a barra 2.
         isBallUp = true; 
         if(ballX + ballPerimeter/2 < bar2X + barWidth/2)
           isBallRight = false;
         else
           isBallRight = true;
         ballY = LCD_Y * 8 - barHeight - ballPerimeter;
         if(++hitCount % 10 == 0 && ballSpeed < 5) 
           ballSpeed++;
       }
       else{ // Jogar 1 é o vencedor.
         gameState = 2;
         player1WinCount++;
       }
     }
  }else if(gameState == 2){
      for(int i =0; i < 4; i++){
        LcdWrite(LCD_C, 0x0D );  // LCD no modo inverso.
        delay(300);
        LcdWrite(LCD_C, 0x0C );  
        delay(300);
      }
      restartGame(); // Chama da função para resetar o game.
  }  
}

// Inicializa o LCD.
void LcdInitialise(void){  

  pinMode(PIN_SCE, OUTPUT);
  pinMode(PIN_RESET, OUTPUT);
  pinMode(PIN_DC, OUTPUT);
  pinMode(PIN_SDIN, OUTPUT);
  pinMode(PIN_SCLK, OUTPUT);
  delay(200);
  digitalWrite(PIN_RESET, LOW);
  delay(500);
  digitalWrite(PIN_RESET, HIGH);
  LcdWrite(LCD_C, 0x21 );  // Comandos ampliados do LCD.
  LcdWrite(LCD_C, 0xB1 );  // Configura o contraste do LCD. 
  LcdWrite(LCD_C, 0x04 );  // Configura o tempo de coeficiente.
  LcdWrite(LCD_C, 0x14 );  
  LcdWrite(LCD_C, 0x0C );  // LCD em modo normal.
  LcdWrite(LCD_C, 0x20 );
  LcdWrite(LCD_C, 0x80 ); 
  LcdWrite(LCD_C, 0x40 ); 
  LcdWrite(LCD_C, 0x0C );
}

void LcdWrite(byte dc, byte data){

  digitalWrite(PIN_DC, dc);
  digitalWrite(PIN_SCE, LOW);
  shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
  digitalWrite(PIN_SCE, HIGH);
}



Para confirmar se está tudo certo clique no botão Verify/Upload. Não havendo nenhum erro parabéns!! Agora divirta-se com este divertido jogo.


- Se você gostou do post, por favor comente! Nos dê um feedback, isto nos incentiva a continuar!
- Inscreva-se na fan page !
- Curta nossa fan page !
- Baixe o APP Faça Com Arduino e carregue para onde você for os projetos. É simples. É fácil !!





23 de out. de 2014

Projeto 36 – Acionando LED's e rele com infravermelho

Projeto 36 – Acionando LED's e rele com infravermelho 
Olá pessoal, hoje iremos acionar LED’s e rele via controle remoto. Qualquer controle remoto serve: de TV, rádio...etc. Para você fazer este projeto, você precisará saber qual o valor hexadecimal de cada botão que será utilizado neste projeto, para saber como visualizar o código veja o tutorial http://facacomarduino.blogspot.com.br/2014/09/projeto-34-verificando-codigo-de.html. Já obteve os respectivos valores hexadecimais? Então vamos ao projeto !! Os códigos serão todos comentados para melhor entendimento, podendo ser retirados após a compreensão de cada linha. Bom trabalho !!!


Componentes necessários

1 Infravermelho receptor TL1838 (ou similar)
1 Shield Rele
2 Resistores de 330Ω
2 LED’s
1 Protobord
Fios jumpers


Fazendo o download e importando a biblioteca do IRremote_Master:
2) Faça o download do arquivo IRremote_Master;
3) Descompacte o arquivo;
4) Agora entre no diretório (C:) e na pasta Arquivos de Programas, Arduino, libraries, copie o arquivo descompactado nesta pasta;
5) Pronto para utilizar;


Agora vamos ao código
                                                           
// Projeto 36 – Acionando LED's e rele com infravermelho 
 
#include <IRremote.h>  // Biblioteca necessária para controle do infravermelho receptor.
  
int RECV_PIN = 6; // Pino responsável por receber o código do IR.
int armazenavalor = 0; // Iniciando com valor igual a zero.
int pino_rele = 7; // Pino onde o rele foi conectado no arduino. 
int pino_led1 = 8; // Pino onde o primeiro LED esta conectado no arduino. 
int pino_led2 = 9; // Pino onde o segundo LED esta conectado no arduino. 
int estado_rele = LOW; // Inicia com o rele desligado. 
int estado_led1 = LOW; // Inicia com o primeiro LED apagado. 
int estado_led2 = LOW; // Inicia com o segundo LED também apagado. 

IRrecv irrecv(RECV_PIN); 
decode_results results; 
 
void setup() 
  pinMode(pino_rele, OUTPUT);  // Define todos os pino como de saída. 
  pinMode(pino_led1, OUTPUT);   
  pinMode(pino_led2, OUTPUT); 
 
  digitalWrite(pino_rele, estado_rele); // Coloca os pinos todos os pino em...
  digitalWrite(pino_led1, estado_led1); // estado baixo (pinos desligados). 
  digitalWrite(pino_led2, estado_led2); 
   
  Serial.begin(9600); // Inicializa a serial monitor. 
  irrecv.enableIRIn(); // Inicializa o receptor IR. 


  
void loop() 
  // Verifica se o sensor IR recebeu algum sinal.
  if (irrecv.decode(&results))  
  { 
    // Mostra na serial o valor lido pelo sensor IR.
    Serial.print("Valor lido : ");
    Serial.println(results.value, HEX);
   
    // Armazena o sinal recebido pelo sensor IR. 
    armazenavalor = (results.value);  
    switch (armazenavalor) 
    { 
     case 0xE0E020DF: // Verifica se o botão número 1 do controle remoto foi prescionada.
     // Se prescionado aciona o rele.
     estado_rele = !estado_rele; 
      digitalWrite(pino_rele, estado_rele);
      break; 
     
     case 0xE0E0A05F: // Verifica se o botão número 2 do controle remoto foi prescionada.
     // Se prescionado acende o primeiro LED.
      estado_led1 = !estado_led1; 
      digitalWrite(pino_led1, estado_led1);
      break; 
     
     case 0xE0E0609F: // Verifica se o botão número 3 do controle remoto foi prescionada.
     // Se prescionado ascende o segundo LED. 
      estado_led2 = !estado_led2; 
      digitalWrite(pino_led2, estado_led2);
      break; 
    }
    irrecv.resume(); //Le o próximo valor 
  } 
}


Para certificar se o código está correto pressione o botão Verify/Compile.
Se tudo estiver correto pressione o botão Upload para fazer o upload do código para seu Arduino.


Abra seu Serial Monitor pressionado as teclas Ctrl + Shift + M simultaneamente.

Pressione qualquer um dos botões: 1, 2, 3 de seu controle uma vez e verá o rele, os LED’s serem acionados. Para desliga-los basta pressiona-los novamente.


 Esquema do projeto:






Vídeo do projeto pronto:






- Se você gostou do post, por favor comente! Nos dê um feedback, isto nos incentiva a continuar! :)
- Curta nossa fan page
- Faça o download do nosso app e mantenha-se atualizado em qualquer lugar



13 de out. de 2014

Projeto 35 – Clonando controle remoto de TV

Projeto 35 – Clonando controle remoto de TV

Olá pessoal, neste tutorial vamos apreender como enviar comandos em hexadecimais para controlar sua TV como volume, trocar de canal e ligar/desligar. O projeto em si é de fácil compreensão, desde que seguindo como foi explicado no passo a passo. Então mãos aos componentes.Os códigos serão todos comentados para melhor entendimento, podendo ser retirados após a compreensão de cada linha. Bom trabalho !!!


Componentes necessários

1 LED infravermelho emissor TIL32 (ou similar)
5 Pushes buttons
6 Resistores de 330Ω
1 Protobord
Fios jumpers

Fazendo o download e importando a biblioteca do LCD Nokia 5110:
2) Faça o download do arquivo IRremote_Master;
3) Descompacte o arquivo;
4) Agora entre no diretório (C:) e na pasta Arquivos de Programas, Arduino, libraries, copie o arquivo descompactado nesta pasta;
5) Pronto para utilizar;

Agora vamos ao código

                                                          
// Projeto 35 – Clonando controle remoto de TV

#include <IRremote.h> // Biblioteca para controlar o led infravermelho  
  IRsend irsend; // Variável para poder enviar o código a TV 
 
  // Variáveis constantes para o controle remoto  
  const int mais_volume = 4;   // Pino onde estará o botão para aumentar o volume 
  const int menos_volume = 5;  // Pino responsavél por diminuir o volume
  const int mais_canal = 6;    // Pino onde estará o botão para mudar o canal em ordem crescente
  const int menos_canal = 7;   // Pino responsavél por mudar o canal em ordem decrescente
  const int liga_desliga = 8;  // Pino onde estará o botão que iremos ligar/desligar a TV 
  const int ledIR = 3;         // Pino onde iremos conectar o LED emissor de infravermelho
 
  // Inicia o botão com o valor do estado em 0   
  int buttonState = 0;     
 
  void setup() {      
  pinMode(ledIR ,OUTPUT); // Definimos o LED de infra como de saída 
 
  Serial.begin(9600);   // Iniciamos o Serial Monitor
 
  // Configurando as entradas dos botões como de entrada
  pinMode(mais_volume, INPUT);   
  pinMode(menos_volume, INPUT);   
  pinMode(mais_canal, INPUT);   
  pinMode(menos_canal, INPUT); 
  pinMode(liga_desliga, INPUT);
  }  
 
  void loop(){  
  // Se o botão mais_volume for pressionado ele ira enviar o código para aumentar o volume na TV 
  if (digitalRead(mais_volume) == HIGH) {       
   irsend.sendNEC(0xE0E0E01F, 32); // Código que será enviado a TV para aumentar o volume  (Como a sintaxe manda devemos iniciar com 0x + número em hexadecimal, 32) 
  }     
 
  // Se o botão menos_volume for pressionado ele irá enviar o código para diminuir o volume na TV
  if (digitalRead(menos_volume) == HIGH) {      
   irsend.sendNEC(0xE0E0D02F, 32); // Código que será enviado a TV para diminuir o volume   
  }    
 
  // Se o botão mais_canal for pressionado ele irá enviar o código para aumentar o canal na TV 
  if (digitalRead(mais_canal) == HIGH) {      
   irsend.sendNEC(0xE0E048B7, 32);    
  }     
 
  // Se o botão menos_canal for pressionado ele irá enviar o código para diminuir o canal na TV
  if (digitalRead(menos_canal) == HIGH) {      
   irsend.sendNEC(0xE0E008F7, 32);    
  }    
 
  // Se o botão liga_desliga for pressionado ele irá enviar o código para ligar/desligar a TV
  if (digitalRead(liga_desliga) == HIGH) {
    irsend.sendNEC(0xE0E040BF, 32);
   }  
 }

Para certificar se o código está correto pressione o botão Verify/Compile.
Se tudo estiver correto pressione o botão Upload para fazer o upload do código para seu Arduino.


Abra seu Serial Monitor pressionado as teclas Ctrl + Shift + M simultaneamente.

Pressione qualquer botão de seu controle remoto e se tudo estiver OK você verá impresso na tela do Serial Monitor os dados de seu controle remoto.


Esquema do projeto






Vídeo do projeto pronto:






- Se você gostou do post, por favor comente! Nos dê um feedback, isto nos incentiva a continuar! :)
- Curta nossa fan page
- Faça o download do nosso app e mantenha-se atualizado em qualquer lugar



28 de set. de 2014

Projeto 34 – Verificando código de comando de um controle remoto

Projeto 34 – Verificando código de comando de um controle remoto

Olá pessoal, vamos descobrir como utilizar uma tecnologia um pouco antiga, porém ainda muito utilizado: o infravermelho. Ao apertar um botão de um controle remoto de uma TV, o CI envia um comando binário ou hexadecimal pelo emissor e o receptor capta estes dados e realiza a função programada pelo respectivo comando. Nós sabemos o valor hexadecimal/binário de cada botão? Não, até agora!

Os códigos serão todos comentados para melhor entendimento, podendo ser retirados após a compreensão de cada linha. Bom trabalho !!!

Componentes necessários

1 Infravermelho receptor TL1838 (ou similar)
1 Protobord
Fios jumpers

Fazendo o download e importando a biblioteca do LCD Nokia 5110:
2) Faça o download do arquivo IRremote_Master;
3) Descompacte o arquivo;
4) Agora entre no diretório (C:) e na pasta Arquivos de Programas, Arduino, libraries, copie o arquivo descompactado nesta pasta;
5) Pronto para utilizar;


Agora vamos ao código

                                                          
// Projeto 34 – Verificando código de comando de um controle remoto

#include <IRremote.h>  // Biblioteca para conunicação com o Arduino.

int RECV_PIN = 6; // Pino utilizado para fazer a leitura dos valores dos botões do controle remoto.

IRrecv irrecv(RECV_PIN);

decode_results results;  // Decodifica os dados do controle remoto.

void setup()
{
  Serial.begin(9600);  // Inicia o Serial Monitor.
  irrecv.enableIRIn(); // Inicia o infrared receptor.
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);  // Imprime na tela do Serial Monitor o valor dos botões do controle remoto em hexatecimal.
    irrecv.resume(); // Aguarda para receber o novo valor quando for pressionado um outro botão.
  }
  delay(100);  // Dá um tempo de 100 ms entre um valor e outro.
}


Para certificar se o código está correto pressione o botão Verify/Compile.
Se tudo estiver correto pressione o botão Upload para fazer o upload do código para seu Arduino.


Abra seu Serial Monitor pressionado as teclas Ctrl + Shift + M simultaneamente.

Pressione qualquer botão de seu controle remoto e se tudo estiver OK você verá impresso na tela do Serial Monitor os dados de seu controle remoto.


Esquema do projeto







Vídeo do projeto pronto:







- Se você gostou do post, por favor comente! Nos dê um feedback, isto nos incentiva a continuar! :)
- Curta nossa fan page
- Faça o download do nosso app e mantenha-se atualizado em qualquer lugar