sexta-feira, 26 de abril de 2013

Conectando o display LCD ao Arduino

Esquema para ligar seu display ao arduino, ultilize o datasheet do seu display.



2º Projeto - Controle de Servo com Potenciômetro (exibindo a posição no lcd)

Neste projeto vamos controlar um servo utilizando um potenciômetro (projeto 25 do livro Arduino Básico de Michael McRoberts), porém, adicionei um lcd que ira mostrar a posição em graus do servo.

Materiais:

  • Arduino Uno
  • Servo motor (micro ou pequeno)
  • 2 potenciômetros (100k para controlar o servo e 10k para ajustar o cursorlight do lcd)
  • resistor limitador de corrente 220 ohm
  • Display lcd 16x2 (verifique o datasheet do display para conectalo)

Código:


#include <Servo.h> // inclui a biblioteca servo
#include <LiquidCrystal.h> // inclui a biblioteca LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // pinos conectados ao lcd
Servo servo1;  //cria um servo
void setup() {
servo1.attach(8); // Anexa o servo (físico), no pino 5, ao objeto servo (lógico)
lcd.begin(16,2); // declara um lcd com 16 colunas e 2 linhas
}
void loop() {
int angle = analogRead(0); // Lê o valor do potenciômetro
angle=map(angle, 0, 1023, 0, 179); // Mapeia os valores de 0 a 180 graus
servo1.write(angle); // Escreve o ângulo para o servo
delay(15); // Espera de 15ms, para permitir que o servo atinja a posição
lcd.setCursor(0,0); /* define a posição do cursor */
lcd.print("Angulo: ");  // printa Angulo
lcd.setCursor(7,1);
lcd.print(angle); /* printa a leitura do angulo de 0 a 180 */
if(angle < 10) { // se for menor que 10 apaga os digitos "sobrando"
  lcd.setCursor(8,1);
  lcd.print("  ");
  }
  if(angle < 100){
    lcd.setCursor(9,1);
    lcd.print("  ");
  }
}
 E sempre que você alterar o potenciômetro a posição do servo ira aparecer no lcd. 

quinta-feira, 25 de abril de 2013

1º Projeto - Bomba para Airsoft

Airsoft e um jogo onde os participantes usam armas de brinquedo semelhante ao paintball e fazem uma simulação de combate. Esta "bomba" e na verdade um dispertador ^^
Este primeiro projeto e bem simples, vamos utilizar um display lcd como menu, push buttons para selecionar as opções, led e um buzzer (para alertar que a contagem acabou e a bomba foi detonada).

Materiais:


  • Arduino Uno
  • Display LCD 16x2
  • 4 push buttons
  • Buzzer 5v
  • Led alto brilho vermelho
  • Potenciometro de 10k ohm para ajustar o brilho do display (cursorlight)
  • 7 resistores limitadores de corrente
  • Fonte de alimentação externa
  



Código:

#include <LiquidCrystal.h>  



LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // entradas do lcd

 int buttonPushCounter = 0;    // declara a variável contadora
 int cutwire = 0;                      // push button que desativa a bomba
 int cutwire1 = 0;                    // push button que detona a bomba
 int buttonState7 = 0;           // push button que seleciona o tempo
 int buttonState8 = 0;        // push button que ativa a bomba
 int lastButtonState = 0;     // variavel para o ultimo estado do botão
 int redled = 9;                    // led 
 int buzzer = 13;                  // buzzer
 void setup(){
  
   pinMode(7, INPUT);        //entrada
   
   pinMode(8, INPUT);           
   
   pinMode(6, INPUT);         
   
   pinMode(10, INPUT);         
   
   pinMode(redled, OUTPUT);      //saida
   
   pinMode(buzzer,OUTPUT);
   
   lcd.begin(16,2);      // inicia o display com 16 colunas e 2 linhas
   
   lcd.setCursor(0,0);   // define a posição do cursor
   
   lcd.print("Tempo:");  
   
 }
 void loop(){
   
   buttonState7 = digitalRead(7); // verifica o estado dos push buttons
   buttonState8 = digitalRead(8);
   cutwire = digitalRead(6);
   cutwire1 = digitalRead(10);
   
   if (buttonState7 != lastButtonState) {   //verifica se o estado do botão foi //alterado
     
     if (buttonState7 == HIGH) 
      
     {
      buttonPushCounter+=300;  // incrementar um valor de 300
      delay(300);
      lcd.setCursor(7,1);                
      lcd.print(buttonPushCounter); // printa o contador
        
      delay(100);
     }
   }
      buttonState8 = digitalRead(8);  // verifica se o botão foi pressionado 
      
      if(buttonState8 == HIGH){        //se sim inicia um laço 
        while(buttonPushCounter != 0){
        buttonPushCounter = buttonPushCounter - 1; // enquanto o contador for //menor que 0 subtrai 1
        
        digitalWrite(redled, HIGH);  // led aceso 
        delay(500); //durante 500millisegundos
        digitalWrite(redled, LOW); // led apagado
        delay(500);  //durante 500 millisegundos formando o laço de 1 em 1 //segundo
        
        lcd.setCursor(0,0);
        lcd.print("Detonacao em:");
        lcd.setCursor(7,1);
        lcd.print(buttonPushCounter);
        if (buttonPushCounter < 10)     // se a contagem for menor que 10
              { 
                 
             lcd.setCursor(8,1);
          
              lcd.print("  ");  // apaga o digito "sobrando"
         }  
         if (buttonPushCounter < 100)
         
         {
             lcd.setCursor(9,1);
          
              lcd.print("  ");
         }  
         if (buttonPushCounter < 1000)
         
         {
             lcd.setCursor(10,1);
          
              lcd.print("  ");
         } 
        if (buttonPushCounter < 10000)        
         {
             lcd.setCursor(11,1);
          
              lcd.print("  ");

       }
                      
           cutwire = digitalRead(6);
       
       if (cutwire == HIGH && buttonPushCounter > 0) {  //verifica se o botão //desativador foi precionado e se a contagem e maior que 0
         lcd.setCursor(0,0);
           lcd.print("  ");
           lcd.setCursor(1,0);
           lcd.print("  ");
           lcd.setCursor(0,1);
           lcd.print("  ");
           lcd.setCursor(3,0);          
         lcd.print("Desativado ");   
          break;
       }
         cutwire1 = digitalRead(10);
         
         if(cutwire1 == HIGH || buttonPushCounter <= 0){      //verifica se o botão //detonador foi precionado ou se a contagem chegou a zero
           
           lcd.setCursor(0,0);
           lcd.print("  ");
           lcd.setCursor(1,0);
           lcd.print("  ");
           lcd.setCursor(0,1);
           lcd.print("  ");
           
           lcd.setCursor(2,0);          
         lcd.print("Terroristas ");       
         lcd.setCursor(3,1);
         lcd.print("Venceram");
         for(int buzzer = 0;buzzer < 20 ; buzzer++){  
           lcd.noDisplay();  // display desligado
         delay(250);
         lcd.display(); // display ligado
         delay(250);
           tone(13,1500); 
         delay(500);
       noTone(13);
       delay(500);
         }     
         break;             
       }             
       }    
    }              
 }
E isso ai galera o codigo e bem simples, vou deixar o link dele no http://pastebin.com/FiR6Lug1 e finalizo com um video:

Quero agradecer meu amigo meganha por ter me dado a dica de criar o blog!!