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 ?

Mostrando postagens com marcador circuito do lcd e arduino. Mostrar todas as postagens
Mostrando postagens com marcador circuito do lcd e arduino. Mostrar todas as postagens

14 de jan. de 2015

Projeto 38 - Jogo dos caminhões com LCD 16X2

Projeto 38 -  Jogo dos caminhões com LCD 16X2

Olá pessoal, para quem não tem um LCD nokia 5110 também pode fazer jogos muito legais com um LCD 16X2. Este jogo consiste em desviar dos caminhões, evitando assim as colisões. Parece ser fácil, porém a velocidade vai aumentando e a colisão é certeira!! Para movermos o carrinho para baixo e para cima dispomos de um potenciômetro como controle. Então vamos ao trabalho.
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 Protobord
1 LCD 16X2
1 Buzzer
2 Potenciômetros
Fios jumper
*Você pode utilizar mais um potenciômetro para controle de brilho (Verifique o post http://facacomarduino.blogspot.com.br/2013/07/projeto-10-controle-de-temperatura-com.html )



Conectando os componentes
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB. Agora, pegue a protobord, o LCD, o buzzer, os potenciômetros e os fios jumpers e conecte-os assim como mostra a figura abaixo: 








Não importa se você utiliza fios de cores diferentes ou furos diferentes na protoboard, desde que os componentes e os fios estejam conectados na mesma ordem da figura. Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a superfície dos furos ainda estará rígida. A não inserção cuidadosa dos componentes pode resultar em danos.
Certifique-se de que todos os componentes estejam conectados corretamente. Quando você estiver seguro de que tudo foi conectado corretamente, ligue seu Arduino conectando-o ao cabo USB.



Vídeo do projeto pronto



 





Agora vamos ao código


// Projeto 38 -  Jogo dos caminhões com LCD 16X2

#include <LiquidCrystal.h> // Declarando a biblioteca para comunicação com o LCD.

LiquidCrystal lcd(9, 8, 5, 4, 3, 2); // Declarando os pinos a serem usados.


const int POTPIN = 1;  // Potenciometro no pino A1 do Arduino

const int MAXPOT = 1024; // Precisamos girar todo o potenciometro para o carrinho subir de descer no visor do LCD.


const int SPEAKERPIN = 10;  // Declara o pino digital 10 para acionar o Speaker.

const int RANDSEEDPIN = 0; // Um pino analogico que não esta conectado a nada.


const int MINSTEPDURATION = 150; // Inicia devagar e a cada milisegundos vai aumetando a velocidade...

const int MAXSTEPDURATION = 300; // Até chagar ao máximo de sua velocidade.



const int NGLYPHS = 6;


byte glyphs[NGLYPHS][8] = {  // Iremos criar os carros e caminhões...

  // Imagem carro para cima.

  { B00000,

    B01110,

    B11111,

    B01010,

    B00000,

    B00000,

    B00000,

    B00000}

  // Imagem carro para baixo.

  ,{B00000,

    B00000,

    B00000,

    B00000,

    B01110,

    B11111,

    B01010,

    B00000}

  // Imagem do caminhão para cima.

  ,{B00000,

    B11110,

    B11111,

    B01010,

    B00000,

    B00000,

    B00000,

    B00000}

  // Imagem do caminhão para baixo.

  ,{B00000,

    B00000,

    B00000,

    B00000,

    B11110,

    B11111,

    B01010,

    B00000}

  // Imagem de batida para cima.

  ,{B10101,

    B01110,

    B01110,

    B10101,

    B00000,

    B00000,

    B00000,

    B00000}

  // Imagem de batida para baixo.

  ,{B00000,

    B00000,

    B00000,

    B10101,

    B01110,

    B01110,

    B10101,

    B00000}

};


const int NCARPOSITIONS = 4;


const char BLANK=32;

char car2glyphs[NCARPOSITIONS][2] = {

  {1,BLANK},{2,BLANK},{BLANK,1},{BLANK,2}

};

char truck2glyphs[NCARPOSITIONS][2] = {

  {3,BLANK},{4,BLANK},{BLANK,3},{BLANK,4}

};

char crash2glyphs[NCARPOSITIONS][2] = {

  {5,BLANK},{6,BLANK},{BLANK,5},{BLANK,6}

};



const int ROADLEN = 15; // Largura do LCD (sem contar nosso carro).

int road[ROADLEN]; // Posição dos outros carros.

char line_buff[2+ROADLEN]; 

int road_index;

int car_pos;

// Off-the-grid posição significa coluna vazia, então MAXROADPOS

 // Determina a probabilidade de um carro numa coluna

 // Por exemplo 3 * NCARPOSITIONS dá p = 1/3

const int MAXROADPOS = 3*NCARPOSITIONS;

int step_duration;



int crash; // Verdadeiro se haver colisão.

unsigned int crashtime;

const int CRASHSOUNDDURATION = 250;



const char *INTRO1="OlhePARAfrente";

const char *INTRO2="Tenha cuidado";

const int INTRODELAY = 2000; // Introdução com duração de dois segundos.



void setup()

{

  crash = crashtime = road_index = 0;

  step_duration = MAXSTEPDURATION;

  line_buff[1+ROADLEN] = '\0';

  randomSeed(analogRead(RANDSEEDPIN));

  for (int i=0; i<NGLYPHS; i++) {

    lcd.createChar(i+1,glyphs[i]);

  }

  for (int i=0; i<ROADLEN; i++) {

    road[i]=-1;

  }

  pinMode(SPEAKERPIN,OUTPUT);  // Define pino 10 com de saída.

  analogWrite(SPEAKERPIN,0); // Para estar no lado seguro.

  lcd.begin(16,2);  // Inicia o LCD de 16X2.

  getSteeringWheel();

  drawRoad();

  lcd.setCursor(1,0); // Na primeira coluna e linha 0...

  lcd.print(INTRO1);  // Imprima "CaminhoeAfrente".

  lcd.setCursor(1,1); // Na primeira coluna linha 1...

  lcd.print(INTRO2); // Imprima "Tenha cuidado".

  delay(INTRODELAY); // Aguarda 2 segundos antes de começar o jogo.

}



void loop() {

  unsigned long now = millis()-INTRODELAY;

  if (!crash) {

    getSteeringWheel();

    crash = (car_pos==road[road_index]);

  }

  if (crash) {

    if (!crashtime) {

      crashtime=now;

      drawRoad();

      lcd.setCursor(2,0); // Na coluna 2 lina 0...

      lcd.print("Grave colisao!!"); // Imprima "Grave colisão!!".

      lcd.setCursor(2,1);

      lcd.print(now/1000);

      lcd.print(" segundos.");

    }

    if ((now-crashtime)<CRASHSOUNDDURATION) {

      analogWrite(SPEAKERPIN,random(255)); 

    } 

    else {

      analogWrite(SPEAKERPIN,0); // Havendo colisão ouvimos um som pelo Speaker...   

    }

    delay(10); // De 10 milisegundos.

  } 

  else {



    int prev_pos = road[(road_index-1)%ROADLEN];

    int this_pos = random(MAXROADPOS);

    while (abs(this_pos-prev_pos)<2) { 

      this_pos = random(MAXROADPOS);

    }

    road[road_index] = this_pos;

    road_index = (road_index+1)%ROADLEN;

    drawRoad();

    delay(step_duration); // Delay de 300 milisegundos.
    
    if (step_duration>MINSTEPDURATION) {

      step_duration--; 

    }

  }

}

void getSteeringWheel() {

  car_pos = map(analogRead(POTPIN),0,1024,0,NCARPOSITIONS);

}



void drawRoad() {

  for (int i=0; i<2; i++) {

    if (crash) {

      line_buff[0]=crash2glyphs[car_pos][i];

    } 

    else {

      line_buff[0]=car2glyphs[car_pos][i];

    }

    for (int j=0; j<ROADLEN; j++) {

      int pos = road[(j+road_index)%ROADLEN];

      line_buff[j+1] = pos>=0 && pos<NCARPOSITIONS ? truck2glyphs[pos][i] : BLANK;

    }

    lcd.setCursor(0,i);

    lcd.print(line_buff);

  }

}




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. Pronto, agora ajuste o contraste do seu LCD girando o potenciômetro correspondente. O jogo irá começar em breve, quando isso acontecer gire o potenciômetro para o carrinho subir e descer afim de desviar dos caminhões. Boa diversão!!!


Obs.: Quando você colidir com algum dos caminhões, reset o jogo pressionando o botão de reset de seu Arduino.


- Se você gostou do post, por favor comente! Nos dê um feedback, isso 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 !!
 



14 de jul. de 2013

Projeto 10 - Controle de temperatura com LCD e Cooler

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.
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 Protobord
1 LCD (JHD 162A de 16 colunas e 2 linhas) ou outro modelo com back light
2 Potenciômetros de 10 K ohms (Um para o contraste e o outro para a luz de fundo) *
1 Sensor LM35
1 Cooler**
Fios jumpers

*Este modelo que utilizei não possui o back light, porém o projeto foi montado com se tivesse essa função.
**Dependendo do cooler que você utilizar será necessário uma fonte externa para alimentá-lo. Uma vez que a saída do Arduino possui apenas 5V.

Conectando os componentes
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB. Agora, pegue o LCD, os potenciômetros, o sensor LM35, o cooler
e os fios e conecte-os como mostra a figura.








Não importa se você utiliza fios de cores diferentes ou furos diferentes na protoboard, desde que os componentes e os fios estejam conectados na mesma ordem da figura. Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a superfície dos furos ainda estará rígida. A não inserção cuidadosa dos componentes pode resultar em danos. Certifique-se de que todos os componentes estejam conectados corretamente. Quando você estiver seguro de que tudo foi conectado corretamente, ligue seu Arduino e conecte o cabo USB.


Para facilitar a montagem segue abaixo como inserir os jumpers no LCD/Arduino.

- Pino 1 do LCD ligado ao GND do Arduino;
- Pino 2 do LCD ligado ao 5V do Arduino;
- Pino 3 do LCD ligado ao pino central do primeiro potenciômetro (controle de contraste);
- Pino 4 do LCD ligado ao pino digital 9 do Arduino;
- Pino 5 do LCD ligado ao GND do Arduino;
- Pino 6 do LCD ligado ao pino digital 8 do Arduino;
- Pino 11 do LCD ligado ao pino digital 5 do Arduino;
- Pino 12 do LCD ligado ao pino digital 4 do Arduino;
- Pino 13 do LCD ligado ao pino digital 3 do Arduino;
- Pino 14 do LCD ligado ao pino digital 2 do Arduino;
- Pino 15 do LCD ligado ao pino central do segundo potenciômetro (controle do brilho);
- Pino 16 do LCD ligado ao GND do Arduino.
Os demais pinos não serão utilizados neste projeto.


Agora vamos ao código

// Projeto 10 -  Controle de temperatura com LCD e Cooler

#include <LiquidCrystal.h>
#include <Limits.h>

const int sensorTemp = 0; // Pino analógico em que o sensor de temperatura está conectado

int fan = 13;  // Declara o pino digital 13 para acionar o cooler
int tempPin = 0;  // Declara o pino analógico 0 para ler o valor do sensor de temperatura
int valorSensorTemp = 0;  // Variável usada para ler o valor de temperatura
int valorTemp = INT_MAX;  // Variável usada para armazenar o menor valor de temperatura

LiquidCrystal lcd(9, 8, 5, 4, 3, 2);  // Cria um objeto LCD e atribui os pinos

void setup() {
 
  pinMode (fan, OUTPUT);   // Define o pino 13 como saída
  lcd.begin(16, 2);   // Define o display com 16 colunas e 2 linhas
}

void loop() {
   
  /*Para evitar as grandes variações de leitura do componente
  LM35 são feitas 6 leitura é o menor valor lido prevalece*/
 
  valorTemp  = INT_MAX; // Inicializando a variável com o maior valor int possível
  for (int i = 1; i <= 6; i++) {  // Lendo o valor do sensor de temperatura
 
    valorSensorTemp = analogRead(sensorTemp);  

    valorSensorTemp *= 0.54 ;  // Transforma o valor lido do sensor de temperatura em graus Celsius aproximados
   
     if (valorSensorTemp < valorTemp) {  // Mantendo sempre a menor temperatura lida
      valorTemp = valorSensorTemp;
    }
  
   delay(100);
  }  
   
    if(valorTemp > 35)  // Indica condição para acionamento do cooler
    {
      lcd.setCursor(0,1);  // Define a coluna 0 e linha 1 do LCD onde será impresso a string
      lcd.write("Fan ligado !");  // Imprime no LCD
      digitalWrite(fan, HIGH);  // Quando condição verdadeira, liga o cooler
    }
    else
    {
      lcd.setCursor(0,1);
      lcd.write("Fan desligado !");
      digitalWrite(fan, LOW);  // Desliga cooler quando este estiver a baixo da valorTemp, indicando no LCD que esta desligado
    }
    delay(1000);
   
  // Exibindo valor da leitura do sensor de temperatura no display LCD
  lcd.clear();  // Limpa o display do LCD    
  lcd.print("Temperatura:");  // Imprime a string no display do LCD                
  lcd.print(valorTemp);
  lcd.write(B11011111); // Símbolo de graus Celsius
  lcd.print("C");
 
  delay(2000); // Aguarda 2 segundos
}


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. Pronto, agora você irá visualizar no visor do LCD a temperatura que está no ambiente e se o cooler está desligado ou ligado - dependendo da temperatura que você estipulou para acioná-lo. Caso seja necessário, ajuste o contraste e luz de fundo para melhor visualização.


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 !
- Baixe o APP Faça Com Arduino e carregue para onde você for os projetos. É simples. É fácil !!





6 de jul. de 2013

Projeto 8 - Controle básico com LCD

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ós utilizaremos o modelo JHD 162A, deixando nossos projetos mais amigáveis. Para isso teremos que utilizar a biblioteca LiquidCrystal.h, que já inclui todas as funções sem precisarmos declarar linha por linha. Bom trabalho !!!

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 Protobord
1 LCD (JHD 162A de 16 colunas e 2 linhas) ou outro modelo com back light
2 Potenciometros de 10 K ohms (Um para o contraste e o outro para a luz de fundo) *
Fios jumper
*Este modelo que utilizei não possui o back light, porém o projeto foi montado com se tivesse essa função.


Conectando os componentes

Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB. Agora, pegue o LCD, os potênciometros e os fios e conecte-os como mostra a figura.








Não importa se você utiliza fios de cores diferentes ou furos diferentes na protoboard, desde que os componentes e os fios estejam conectados na mesma ordem da figura. Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a superfície dos furos ainda estará rígida. A não inserção cuidadosa dos componentes pode resultar em danos.
Certifique-se de que todos os componentes estejam conectados corretamente. Quando você estiver seguro de que tudo foi conectado corretamente, ligue seu Arduino e conecte o cabo USB.


Para facilitar a montagem segue abaixo como inserir os jumpers no LCD/Arduino.

- Pino 1 do LCD ligado ao GND do Arduino;
- Pino 2 do LCD ligado ao 5V do Arduino;
- Pino 3 do LCD ligado ao pino central do primeiro potênciômetro (controle de contraste);
- Pino 4 do LCD ligado ao pino digital 9 do Arduino;
- Pino 5 do LCD ligado ao GND do Arduino;
- Pino 6 do LCD ligado ao pino digital 8 do Arduino;
- Pino 11 do LCD ligado ao pino digital 5 do Arduino;
- Pino 12 do LCD ligado ao pino digital 4 do Arduino;
- Pino 13 do LCD ligado ao pino digital 3 do Arduino;
- Pino 14 do LCD ligado ao pino digital 2 do Arduino;
- Pino 15 do LCD ligado ao pino central do segundo potênciômetro (controle do brilho);
- Pino 16 do LCD ligado ao GND do Arduino.

Os demais pinos não serão utilizados neste projeto.



Agora vamos ao código


// Projeto 8 -  Controle básico com LCD

 #include <LiquidCrystal.h>  // Define a utilização da biblioteca para controle de telas LCD’s

LiquidCrystal lcd(9, 8, 5, 4, 3, 2);  //  Cria um objeto LCD e atribui os pinos

void setup() {
 
  lcd.begin(16, 2);  // Define o display com 16 colunas e 2 linhas
}

void loop() {
  lcd.clear();                 // Limpa o display do LCD 
  lcd.print("Ola pessoal !!");         // Imprime a string no display do LCD
  delay(2000);      // Espera 2 segundos antes de imprimir a proxima string no LCD 
 
  lcd.clear();
  lcd.print("Este e um");  
  lcd.setCursor(0,1);       // Posiciona o cursor na coluna 0 linha 1 do LCD
  lcd.print("controle basico");
  delay(2000);
 
  lcd.clear();
  lcd.print("de LCD !!");
  delay(2000);
 
  lcd.clear();
  lcd.print("www.facacomarduino.blogspot.com");
  delay(1000);
 
  for (int i = 0; i < 16; i++) {  // Rolando o display para a esquerda 16 vezes
    lcd.scrollDisplayLeft();
    delay(600);
  }
 
     delay(3000);
}


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. Pronto, agora você poderá ajustar o contraste e luz de fundo para melhor visualização.


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 !
- Baixe o APP Faça Com Arduino e carregue para onde você for os projetos. É simples. É fácil !!