Popular channels

Conecta un LCD I2C a un arduino y escribe como Kari el bot





Bienvenidos a mi post!


En esta entrega les dejo un "tutorial" de como conectar una pantalla LCD a un arduino por medio de la comunicación I2C. Además, les enseñaré a crear números aleatorios para usos posteriores.
.



Antes de comenzar.







  • Necesitas un arduino (uno, mega, due, etc.)
  • Necesitas un LCD con comunicación I2C (sí, no me refiero al LSD, si tienen un poco me dicen (? )
  • Necesitas un push button
  • Necesitas una resistencia de 1 kilo ohm
  • Necesitas 4 cables hembra-macho
  • Este proyecto pequeño es la base para crear una máquina de esas que puedes sacar premios. Por medio de los números aleatorios puedes "activar" ciertos dispositivos para hacer ganador a una sola persona, es decir, de 1 a 10, 1 gana un premio.
  • Este post es un tributo a @dimekari que fue baneado, es ese bot molesto que quieres bloquear (?


.






Material y diagrama eléctrico.


Anteriormente mencioné el material a usar pero para ello requieren comprar lo siguiente (si ya tienen arduino, cables, resistencias o botones no hay bronca, lo importante aquí es el monitor que pueden conseguir en Dispositivo de I2C para monitor, LCD.





















Una vez que tengan dicho material, deben soldar las terminales y deben averiguar la dirección i2C que tiene el dispositivo para configurarlo, más detalles en este link


El circuito quedaría de la siguiente forma.:















Código de arduino.


Una vez conectado todo, se procede a compilar y a correr el programa. Cada vez que presionemos el push button, se escribe algo random en la pantalla. Tiene 7 posibilidades de escribir cosas diferentes.

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

//                     Addr, En, Rw, Rs, d4, d5, d6, d7, backlighpin, polarity
LiquidCrystal_I2C lcd( 0x27, 2,   1,  0,  4,  5,  6,  7,           3, POSITIVE );
volatile int x = 0;
void setup() {
  Serial.begin(9600);
  randomSeed(analogRead(0));

  DDRC &= 0xFB;
  PORTC |= 0x04;
  lcd.begin(16, 2);
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Kari dice: ");
}

void loop() {
  while (1)
  {
    if ((PINC & 0x04) == 0)
    {
      x = random(1, 7);
      delay(200);
    }
    if (x == 1)
    {

      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Kari dice: ");
      lcd.setCursor(0, 1);
      lcd.print("Matate");
      delay(1000);
    }
    if (x == 2)
    {

      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Kari dice: ");
      lcd.setCursor(0, 1);
      lcd.print("Nada");
      delay(1000);
    }
    if (x == 3)
    {

      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Kari dice: ");
      lcd.setCursor(0, 1);
      lcd.print("2+2=5");
    }
    if (x == 4)
    {

      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Kari dice: ");
      lcd.setCursor(0, 1);
      lcd.print("Dios te ama");
    }
    if (x == 5)
    {

      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Kari dice: ");
      lcd.print("Ahhhhhh");
      lcd.setCursor(0, 1);
    }
    if (x == 6)
    {

      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Kari dice: ");
      lcd.setCursor(0, 1);
      lcd.print("Hola");
    }
    Serial.println(x);
  }
  delay(100);

}






Resultado final


Después de todo me quedó así:




















Si apenas entendiste de que hablo puedes pasar por mi post de electrónica:

http://www.taringa.net/posts/hazlo-tu-mismo/17877485/Aprende-algo-de-electronica-sin-salir-de-aqui.html

O por mi post de arduino y electrónica digital básica:

http://www.taringa.net/posts/hazlo-tu-mismo/17886610/Hice-un-piano-con-android-arduino-bluetooth.html

O por mi post con matlab y arduino

http://www.taringa.net/posts/hazlo-tu-mismo/18671586/Controla-la-intensidad-de-un-led-con-Matlab-y-Arduino.html

Si eres nuevo en esto, te recomiendo que compres un arduino, nunca sabes cuando lo puedes necesitar.

Si quieren más post de este estilo, me avisan.




Fin del post.


Saludos.


Gracias.


0
0
0
0No comments yet