Advertisement
Villalba2006

POST_9

Nov 24th, 2016
12,110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.31 KB | None | 0 0
  1. /*  TITULO: Display LCD 16x2 con comunicación I2C
  2.  
  3.     AUTOR:
  4.    
  5.     MARIANO DEL CAMPO GARCÍA (@2015) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA
  6.     - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia
  7.     - TWITTER: https://twitter.com/MarianoCampoGa
  8.     - CORREO: marianodc83@gmail.com
  9.    
  10.    
  11.     DESCRIPCIÓN DEL PROGRAMA
  12.    
  13.     En este programa vamos a comunicar un Display LCD 16x2 con Arduino mediante comunicación I2C,
  14.     gracias a la utilización del módulo LCM 1602 I2C V1, que tenemos soldado a los pines del LCD 1602.
  15.     Además mediante la utilización del IDE de Arduino, vamos a poder mandar caracteres a Arduino y
  16.     visualizarlos a través del LCD 1602.
  17.    
  18.  
  19.     ESQUEMA DE CONEXION
  20.    
  21.                                       +-----+
  22.          +----[PWR]-------------------| USB |--+
  23.          |                            +-----+  |
  24.          |         GND/RST2  [ ][ ]            |
  25.          |       MOSI2/SCK2  [ ][ ]  A5/SCL[ ] |   SCL del módulo I2C conectado al LCD 1602
  26.          |          5V/MISO2 [ ][ ]  A4/SDA[ ] |   SDA del módulo I2C conectado al LCD 1602
  27.          |                             AREF[ ] |
  28.          |                              GND[ ] |
  29.          | [ ]N/C                    SCK/13[ ] |  
  30.          | [ ]IOREF                 MISO/12[ ] |  
  31.          | [ ]RST                   MOSI/11[ ]~|  
  32.          | [ ]3V3    +---+               10[ ]~|  
  33.          | [ ]5v    -| A |-               9[ ]~|  
  34.          | [ ]GND   -| R |-               8[ ] |  
  35.          | [ ]GND   -| D |-                    |
  36.          | [ ]Vin   -| U |-               7[ ] |  
  37.          |          -| I |-               6[ ]~|  
  38.          | [ ]A0    -| N |-               5[ ]~|  
  39.          | [ ]A1    -| O |-               4[ ] |  
  40.          | [ ]A2     +---+           INT1/3[ ]~|  
  41.          | [ ]A3                     INT0/2[ ] |  
  42.          | [ ]A4/SDA  RST SCK MISO     TX>1[ ] |  
  43.          | [ ]A5/SCL  [ ] [ ] [ ]      RX<0[ ] |  
  44.          |            [ ] [ ] [ ]              |
  45.          |  UNO_R3    GND MOSI 5V  ____________/
  46.           \_______________________/
  47.  
  48.   NOTAS:
  49.    - La alimentación y la masa del módulo LCM 1602 I2C V1 van directamente conectadas a VCC (+5V) y GND
  50.      respectivamente.  
  51. */
  52.  
  53.  
  54.   // Importar librerías
  55.   #include <Wire.h> // Librería comunicación I2C
  56.   #include <LiquidCrystal_I2C.h> // Librería LCD I2C
  57.  
  58.   // Declaración del objeto
  59.   // Terminales de conexión del LCD:
  60.   //                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
  61.   LiquidCrystal_I2C lcd(0x3E, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
  62.  
  63.   void setup()
  64.   {
  65.     Serial.begin(9600);  // Configura la velocidad de la comunicación serie
  66.     lcd.begin(16,2);   // Inicializa el LCD para 16x2
  67.    
  68.  
  69.   // Realiza 3 parpadeos del LED (backlight)
  70.     for(int i = 0; i< 3; i++)
  71.     {
  72.       lcd.backlight();
  73.       delay(250);
  74.       lcd.noBacklight();
  75.       delay(250);
  76.     }
  77.    lcd.backlight(); // Finaliza con el LED encendido (backlight)
  78.  
  79.   // Escribe el texto en el LCD
  80.   // NOTA: La posición del cursor del LCD (Carácter, línea) comienza en (0,0)
  81.     lcd.setCursor(0,0);
  82.     lcd.write("Hola, Usuario!"); // Podemos poner tanto write como print
  83.     delay(1000);
  84.     lcd.setCursor(0,1);
  85.     lcd.write("Bienvenido");
  86.     delay(2000);  
  87.  
  88.   // Espera a que se conecte el monitor serie y envía los caracteres al LCD
  89.   // Configurar el monitor serie en el modo "Sin final de línea"
  90.     lcd.clear();
  91.     lcd.setCursor(0,0);
  92.     lcd.print("Monitor serie...");
  93.     lcd.setCursor(0,1);
  94.     lcd.print(">Pulsa una tecla");
  95.   }
  96.  
  97.  
  98.   void loop()
  99.   {
  100.       char ch;
  101.       // Si se recibe un carácter por el puerto serie...
  102.       if (Serial.available())
  103.       {
  104.         // Retardo para que pueda recibir el caracter
  105.         delay(100);
  106.         // Borra la pantalla
  107.         lcd.clear();    
  108.         lcd.print("Recibiendo>>> ");
  109.         lcd.setCursor(14,0);
  110.          
  111.         // Si lo recibido es mayor que 0...
  112.         while (Serial.available() > 0)
  113.         {
  114.           // Lee el carácter que llega
  115.           ch = Serial.read();
  116.           // Muestra el carácter a través del LCD
  117.           lcd.write(ch);
  118.           // Muestra por terminal virtual el carácter enviado al LCD
  119.           Serial.write(ch);
  120.         }
  121.       }
  122.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement