Advertisement
Villalba2006

POST_68

Nov 29th, 2016
4,389
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.60 KB | None | 0 0
  1. /*  TITULO: Conectando dos LCD 1602 independientes mediante comunicación I²C.
  2.  
  3.     AUTOR:
  4.    
  5.     MARIANO DEL CAMPO GARCÍA (@2016) --> 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.     Con este programa vamos a comunicar dos Display LCD 16x2 con Arduino mediante comunicación I²C,
  14.     gracias a la utilización de módulos LCM 1602 I2C V1, que tenemos previamente soldados a los pines de
  15.     cada LCD 1602. Simplemente se realiza un parpadeo alterno inicial de los LCD 1602, para que posteriormente
  16.     se muestren unas líneas de texto y asteriscos a través de ellos, sin que se mezcle la comunicación, aún
  17.     estando conectados los dos LCD a los mismos pines de comunicación I²C. Esto es posible gracias a que cada
  18.     LCD 1602 tiene una dirección I²C única y predeterminada para la comunicación con nuestro Arduino.
  19.    
  20.  
  21.     ESQUEMA DE CONEXION
  22.    
  23.                                       +-----+
  24.          +----[PWR]-------------------| USB |--+
  25.          |                            +-----+  |
  26.          |         GND/RST2  [ ][ ]            |
  27.          |       MOSI2/SCK2  [ ][ ]  A5/SCL[ ] |   SCL de los 2 módulos I²C conectados a los LCD 1602
  28.          |          5V/MISO2 [ ][ ]  A4/SDA[ ] |   SDA de los 2 módulos I²C conectados a los LCD 1602
  29.          |                             AREF[ ] |
  30.          |                              GND[ ] |
  31.          | [ ]N/C                    SCK/13[ ] |  
  32.          | [ ]IOREF                 MISO/12[ ] |  
  33.          | [ ]RST                   MOSI/11[ ]~|  
  34.          | [ ]3V3    +---+               10[ ]~|  
  35.          | [ ]5v    -| A |-               9[ ]~|  
  36.          | [ ]GND   -| R |-               8[ ] |  
  37.          | [ ]GND   -| D |-                    |
  38.          | [ ]Vin   -| U |-               7[ ] |  
  39.          |          -| I |-               6[ ]~|  
  40.          | [ ]A0    -| N |-               5[ ]~|  
  41.          | [ ]A1    -| O |-               4[ ] |  
  42.          | [ ]A2     +---+           INT1/3[ ]~|  
  43.          | [ ]A3                     INT0/2[ ] |  
  44.          | [ ]A4/SDA  RST SCK MISO     TX>1[ ] |  
  45.          | [ ]A5/SCL  [ ] [ ] [ ]      RX<0[ ] |  
  46.          |            [ ] [ ] [ ]              |
  47.          |  UNO_R3    GND MOSI 5V  ____________/
  48.           \_______________________/
  49.  
  50.   NOTAS:
  51.    - La alimentación y la masa de ambos módulos LCM 1602 I2C V1 van directamente conectadas
  52.      a VCC (+5V) y GND respectivamente.  
  53. */
  54.  
  55.  
  56.   // Importar librerías
  57.   #include <Wire.h> // Librería comunicación I²C
  58.   #include <LiquidCrystal_I2C.h> // Librería LCD I²C
  59.  
  60.   // Declaración de los objetos
  61.   // Ajustar la dirección de los LCD (previamente comprobadas)
  62.   // Terminales de conexión del LCD
  63.   //                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
  64.   LiquidCrystal_I2C lcd1(0x3E, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
  65.   LiquidCrystal_I2C lcd2(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
  66.  
  67.   void setup()
  68.   {
  69.     Serial.begin(9600);  // Configura la velocidad de la comunicación serie
  70.     lcd1.begin(16,2);    // Inicializa el LCD1 para 16x2
  71.     lcd2.begin(16,2);    // Inicializa el LCD2 para 16x2
  72.  
  73.     // Realiza 3 parpadeos alternos del LED (backlight)
  74.     for(int i = 0; i< 3; i++)
  75.     {
  76.       lcd1.backlight();
  77.       lcd2.noBacklight();
  78.       delay(250);
  79.       lcd1.noBacklight();
  80.       lcd2.backlight(); // Finaliza el ldc2 con el LED encendido (backlight)
  81.       delay(250);
  82.     }
  83.     lcd1.backlight(); // Finaliza el ldc1 con el LED encendido (backlight)
  84.  
  85.     // Escribe el texto en los LCD 1602
  86.     // La posición del cursor de los LCD (Carácter, línea) comienza en (0,0)
  87.     lcd1.setCursor(0,0);    
  88.     lcd1.print("LCD numero 1");
  89.     lcd2.setCursor(0,0);
  90.     lcd2.print("LCD numero 2");
  91.     delay(2000);
  92.     lcd1.setCursor(0,1);
  93.     lcd1.print("Color VERDE");
  94.     lcd2.setCursor(0,1);
  95.     lcd2.print("Color AZUL");
  96.     delay(2000);
  97.     lcd1.clear();
  98.     lcd2.clear();
  99.   }
  100.  
  101.   void loop()
  102.   {
  103.     // Realiza una secuencia de barrido vertical de la línea de arteriscos
  104.     lcd1.setCursor(0,0);
  105.     lcd1.print("****************");
  106.     delay(1000);
  107.     lcd1.clear();
  108.     lcd1.setCursor(0,1);
  109.     lcd1.print("****************");
  110.     delay(1000);
  111.     lcd1.clear();
  112.     lcd2.setCursor(0,0);
  113.     lcd2.print("****************");
  114.     delay(1000);
  115.     lcd2.clear();
  116.     lcd2.setCursor(0,1);
  117.     lcd2.print("****************");
  118.     delay(1000);
  119.     lcd2.clear();
  120.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement