terça-feira, 27 de junho de 2017

Display LCD I2C #1

Ola pessoal.

A baixo a montagem do display lcd no arduino:

Resultado de imagem para montagem display i2c arduino

Para que ele funcione corretamente no arduino precisaremos instalar duas bibliotecas especiais. Os links para download das bibliotecas estão a baixo:



Monte um led conectado no pino 3 do arduino e copie este scktch:

int brilho = 0;
int tempo = 5;
int estado = 1;
float tencao = 0;

// PARAMETROS DO LCD ****************************************

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADOR 0x3F // <<
#define BACKLIGHT_PIN 3
#define En 2
#define Rw 1
#define Rs 0
#define D4 4
#define D5 5
#define D6 6
#define D7 7
LiquidCrystal_I2C lcd(I2C_ADOR,En,Rw,Rs,D4,D5,D6,D7);

// **********************************************************

void setup()
{
  pinMode(3,OUTPUT);

  Serial.begin(9600);

  lcd.begin (16,2);

  // controle da luz de fundo:
  lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
  lcd.setBacklight(HIGH);
  delay(1000);
  lcd.setBacklight(LOW);
  delay(1000);
  lcd.setBacklight(HIGH);
  delay(1000);

  // impressao na tela lcd:
  lcd.setCursor(1,0);
  lcd.print("Variador de");
  lcd.setCursor(1,1);
  lcd.print("Luminosidade");
  lcd.setCursor(15,1);
  lcd.blink();
  delay(5000);
  lcd.clear();
}

void loop()
{
   lcd.clear();
 while(estado == 1)
 {
 brilho = brilho + 1;
 Serial.print("Tenção na porta = ");
 tencao = ((brilho*5)/255.0);
 Serial.print(tencao,2);
 Serial.println("V");
      lcd.setCursor(0,0);
      lcd.print("Tencao da porta:");
      lcd.setCursor(3,1);
      lcd.print(tencao,2);
      lcd.setCursor(8,1);
      lcd.print("Volts");
 analogWrite(3,brilho);
 delay(tempo);
 if(brilho == 255)
 {
  brilho = 255;
  estado = 2;
  //delay(1000);
 }
 }
  lcd.clear();
  while(estado == 2)
 {
 brilho = brilho - 1;
 Serial.print("Tenção na porta = ");
 tencao = ((brilho*5)/255.0);
 Serial.print(tencao,2);
 Serial.println("V");
      lcd.setCursor(0,0);
      lcd.print("Tencao da porta:");
      lcd.setCursor(3,1);
      lcd.print(tencao,2);
      lcd.setCursor(8,1);
      lcd.print("Volts");
 analogWrite(3,brilho);
 delay(tempo);
 if(brilho == 1)
 {
  brilho = 1;
  estado = 1;
  //delay(1000);
 }
 }
}

// FIM DO PROGRAMA;


Pessoal, vamos trabalhar com alguns comandos deste outro sketch também:

#include <LiquidCrystal.h>

LiquidCrystal displayTeste(2,4,10,11,12,13);

int efeito = 0;
int contraste = 0;
boolean aumenta = true;


byte smiley[8] = {
  B00000,
  B10001,
  B00000,
  B00000,
  B10001,
  B01110,
  B00000,
};

void setup() {
  // put your setup code here, to run once:
  pinMode(5, OUTPUT);
  analogWrite(5, 0);

  displayTeste.createChar(0, smiley);
  displayTeste.begin(16,2);
  //displayTeste.cursor();
  //displayTeste.blink();

  displayTeste.print("Brincando com");
  displayTeste.setCursor(2,1);
  displayTeste.print("Ideias ");
  displayTeste.write(byte(0));
  
  //Teste da Tabela de Caracteres
  displayTeste.setCursor(15,1);
  displayTeste.write(byte(244));

}

void loop() {
  // put your main code here, to run repeatedly:

  if (efeito == 1) {
     analogWrite(5, contraste);
     delay(20);

     if (aumenta) contraste++;
     else         contraste--;
  
     if (contraste == 150) aumenta = false;

     if (contraste == 0) aumenta = true;
  }

  if (efeito == 2) {
     displayTeste.noDisplay();
     delay(500);
     displayTeste.display();
     delay(500);
  }

  if (efeito == 3) {
     displayTeste.scrollDisplayLeft();
     delay(350);
  }

  if (efeito == 4) {
     displayTeste.scrollDisplayRight();
     delay(350);
  }
  

}

Nenhum comentário:

Postar um comentário