Pesquisar

COMO UTILIZAR LCD 16X2

Vamos montar um circuito para mostrar como utilizar um LCD 16x2

display LCD 16×2 utilizado neste projeto, é o baseado no controlador HD44780, possui backlight azul e caracteres brancos, seus pinos de conexão encontram-se na parte superior do display 1 à 16. As conexões utilizadas para o projeto foram:

Pino 4 (RS) ligado ao pino 9 do Arduino
Pino 6 (E) ligado ao pino 8 do Arduino
Pino 11 (D4) ligado ao pino 7 do Arduino
Pino 12 (D5) ligado ao pino 6 do Arduino
Pino 13 (D6) ligado ao pino 5 do Arduino
Pino 14 (D7) ligado ao pino 4 do Arduino
Pino 16 Catodo ligado ao GND
Pino 5 RW ligado ao GND
Pino 15 Anodo ligado ao 5V
Pino 1 Vss ligado ao Gnd
Pino 2 Vdd  ligado ao 5V


Para controle do LCD iremos utilizar a biblioteca LiquidCrystal a mesma já vêm instalada na IDE do Arduino).
  
O comando delay ao final não é recomendado que seja menor que 2000 (2 segundos), pois é mínimo valor para que o sensor forneça dados de forma correta.
  
      // utilizando Display LCD 16x2
      //BY AF ELETRONICA
      
     #include <LiquidCrystal.h> //Carrega a biblioteca LCD
      // Aqui define-se a ligação ao pino de dados do sensor
       //Define os pinos que serão ligados ao LCD
      LiquidCrystal lcd(9, 8, 7, 6, 5, 4);
      //   pin4   D7
      //   pin 5  D6
      //   pin 6  D5
      //   pin 7  D4
      //   pin8   Enable
      //   pin9   RS    
      //  Catodo ligado ao GND
      //  RW ligado ao GND
      //  Anodo ligado ao 5V
     
      void setup()
      {
        lcd.begin(16,2); //Inicializa LCD
        lcd.clear(); //Limpa o LCD
      }
     void loop()
      {
        lcd.setCursor(0,0); // aqui ira colocar o cursor na coluna 0 coluna 0
        lcd.print("       AF        ");
        lcd.print(" ");
        lcd.setCursor(0,1); // aqui ira colocar o cursor na coluna 0 coluna 1
        lcd.print("   ELETRONICA   ");
        lcd.print(" ");          
        delay(2000); //Tempo recomendado para leitura do sensor

      }      

GIROSCÓPIO MPU6050 & CONTROLE SERVO

Você tem em um mesma placa um acelerômetro e um Giroscópio de alta precisão, tudo controlado pelo CI MPU6050
O MPU6050 (datasheet) tem embutido o recurso DMP(Processador de Movimento Digital) o mesmo é responsável por realizar os mais complexos cálculos com os sensores onde estes dados podem ser utilizados em sistemas de reconhecimento de movimento, navegação GPS, e as mais diversas aplicações. Outro recurso que o MPU 6050 possui é um sensor de temperatura embutido permitindo medições que podem variar emtre -40 à +85 ºC
Sua comunicação com o microcontrolador se dá através do barramento de dados I2C, utilizando os pinos SCL e SDA do sensor. Os pinos XDA e XCL pode ser ligado outros dispositivos I2C, como um magnetômetro por exemplo, e assim criar um sistema de orientação completo. Sua alimentação pode variar entre 3 e 5v, mas para um melhor desempenho e  precisão do módulo recomenda-se utilizar 5v.

O pino AD0 define o endereçamento do MPU6050,  quando desconectado define que o endereço I2C do sensor é 0x68. Uma vez conectado à 3v3 do Arduino seu endereço será  alterado para 0x69. Isto serve caso precise possuir mais de um MPU6050 no memo barramento.
Para mostrar os dados Infirmados pelo MPU6050 iremos utilizar o emulador de Serial do próprio Arduino para visualização.
Iremos mostrar os seguintes dados:
Valor de X
Valor de Y
Que são os mesmos dados enviados para movimentar o motor, outros valores pode ser mostrado fazendo pouca alteração no software.
O código abaixo utiliza apenas os valores fornecidos pelo acelerômetro. O eixo paralelo à gravidade terá força 1g adicional.

Para baixar as bibliotecas utilizadas, use os links abaixo
MPU6050.H
Wire.H
Servo.H

A biblioteca Servo.h será necessária para o controle dos servos motores.



//MPU 6050 2 axis Servo Controle
// By AF Eletronica

#include <Wire.h>
#include <Servo.h>
#include <MPU6050.h>

MPU6050 mpu;

int16_t ax, ay, az;
int16_t gx, gy, gz;

Servo meuServoY;
Servo meuServoX;

int valorY;
int prevvalorY;

int valorX;
int prevvalorX;

void setup()
{
  Wire.begin();
  Serial.begin(115200);
  Serial.println("Initializando MPU");
  mpu.initialize();
  Serial.println(mpu.testConnection() ? "Conectado" : "Conexão Falhou");
  meuServoY.attach(5);
  meuServoX.attach(6);
}
void loop()
{
  mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
  valorY = map(ay, -17000, 17000, 0, 179);
  valorX = map(ax, -17000, 17000, 0, 179);
 
  // display tab-separated accel/gyro x/y/z values


  if (valorY != prevvalorY)
  {
    meuServoY.write(valorY);
    prevvalorY = valorY;
    Serial.print("valorY:  ");
    Serial.print(valorY);Serial.print("\n");
  }

  if (valorX != prevvalorX)
  {
    meuServoX.write(valorX);
    prevvalorX = valorX;
    Serial.print("valorX:  ");
    Serial.print(valorX);Serial.print("\n");
  }
  delay(50);
}


LCD 16X2 & SENSOR DE TEMPERATURA DHT11



Iremos montar um circuito para mostrar a temperatura e a humidade de um ambiente utilizando um LCD 16x2 que será nossa interface com o usuário, para ler a temperatura do ambiente utilizaremos  o sensor de temperatura DHT11.

A montagem do circuito vamos utilizar o módulo DHT11 ou simplesmente o  sensor DHT11. A ligação de ambos são idênticos e utiliza apenas um pino para comunicação com o Arduino.

Sensor DHT11   
Uma peculiaridade do sensor DHT11 é que o mesmo fornece apenas números inteiros, por exemplo irá fornecer 10 graus mesmo que esteja uma temperatura de 10,4 graus.
Isto quer dizer que você não irá conseguir mostrar temperaturas “quebradas” somente números inteiros exemplo 15, 20, 25, ... graus.
display LCD 16×2 utilizado neste projeto, é o baseado no controlador HD44780, possui backlight azul e caracteres brancos, seus pinos de conexão encontram-se na parte superior do display 1 à 16. As conexões utilizadas para o projeto foram:

Pino 4 (RS) ligado ao pino 9 do Arduino
Pino 6 (E) ligado ao pino 8 do Arduino
Pino 11 (D4) ligado ao pino 7 do Arduino
Pino 12 (D5) ligado ao pino 6 do Arduino
Pino 13 (D6) ligado ao pino 5 do Arduino
Pino 14 (D7) ligado ao pino 4 do Arduino
Pino 16 Catodo ligado ao GND
Pino 5 RW ligado ao GND
Pino 15 Anodo ligado ao 5V
Pino 1 Vss ligado ao Gnd
Pino 2 Vdd  ligado ao 5V


Para controle do LCD iremos utilizar a biblioteca LiquidCrystal a mesma já vêm instalada na IDE do Arduino), Para realizar as leituras do Sensor DHT11 iremos utilizar a biblioteca DHT, que pode ser baixada aqui.
Para mostrar o símbolo do grau (º), podemos utilizar um dos caracteres especiais disponíveis nesse display, usando o comando
lcd.print((char)223);
Que se trata de um caractere quadrado o mesmo customizar um caractere, com a forma mais arredondada. Para isso, foi necessário criar uma array de forma a desenhar este símbolo, para posteriormente utiliza-lo no programa, para esta tarefa utilizamos o comando
lcd.createChar(symbol_grau, data);
Onde: symbol_grau refere-se ao nome dado ao caractere especial, podendo ser um número de 0 a 7, data  refere-se ao array criado para formar o símbolo do grau.

O comando delay ao final não é recomendado que seja menor que 2000 (2 segundos), pois é mínimo valor para que o sensor forneça dados de forma correta.

// Mostra Humidade e Temperatura do DHT11 em um  LCD 16x2
      
      #include <DHT.h> //Carrega a biblioteca DHT
      #include <LiquidCrystal.h> //Carrega a biblioteca LCD
      #define DHTPIN 2     // define em qual pino do Arduino esta ligado o pino de dados do sensor   
      #define DHTTYPE DHT11       //define-se o tipo de sensor DHT utilizado no nosso caso o DHT11
      //#define DHTTYPE DHT22   // DHT 22  (AM2302)
      //#define DHTTYPE DHT21   // DHT 21 (AM2301)

      DHT dht(DHTPIN, DHTTYPE);
       //Define os pinos que serão ligados ao LCD
      LiquidCrystal lcd(9, 8, 7, 6, 5, 4);
      //   pin4   D7
      //   pin 5  D6
      //   pin 6  D5
      //   pin 7  D4
      //   pin8   Enable
      //   pin9   RS    
      //  Catodo ligado ao GND
      //  RW ligado ao GND
      //  Anodo ligado ao 5V
     
      //Matriz simbolo grau
      byte symbol_grau[8] ={ B00001100,
                      B00010010,
                      B00010010,
                      B00001100,
                      B00000000,
                      B00000000,
                      B00000000,
                      B00000000,};
      
      void setup()
      {
      Serial.begin(9600); //Inicializa a serial
      lcd.begin(16,2); //Inicializa LCD
      lcd.clear(); //Limpa o LCD
      //Cria o caractere customizado com o simbolo do grau
      lcd.createChar(1, symbol_grau);
      }
     void loop()
      {
      float h = dht.readHumidity(); //Le o valor da umidade guarda em h
      float t = dht.readTemperature(); //Le o valor da temperatura guarda em t
      lcd.setCursor(0,1);
      lcd.print("Temp : ");
      lcd.print(" ");
      lcd.setCursor(7,1);
      lcd.print(t,1);
      lcd.setCursor(12,1);
             
      //Mostra o simbolo do grau redondo formado pela array
      //lcd.write((byte)0);
      
      //Mostra o simbolo do grau quadrado
      lcd.print((char)223);
      lcd.setCursor(13,1);
      lcd.print("C"); // mostra o caracter C após o simbolo Graus
      
      lcd.setCursor(0,0);
      lcd.print("Umid : ");
      lcd.print(" ");
      lcd.setCursor(7,0);
      lcd.print(h,0);
      lcd.setCursor(12,0);
      lcd.print("%");
            
      delay(2000); //Tempo recomendado para leitura do sensor
      }