|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
T Búsqueda en este sitio:


.

Arduino en español
Circuitos con Arduino - Juan Antonio Villalpando

-- Tutorial de iniciación a Arduino --

Volver al índice del tutorial

____________________________

49B.- Adaptación de teclado 4x4 a bus I2C. Adaptador a bus I2C, el PCF8574.

- En el tutorial anterior vimos teclados de matriz 4x4 que necesitan 8 terminales de conexión.

- Vamos a adaptarlo a bus I2C mediante el integrado PCF8574. De esta manera solo necesitará 4 cables para conectarlo al Arduino.

- Aquí tenemos el DataSheet de este integrado: pcf8574.pdf

- Es muy barato, puede costar menos de 1€.

______________________________________________________
- Módulo conversor de 8 bits a I2C.

- Pero nosotros para mayor comodidad, en vez de utilizar solo el chip, vamos a utilizar esta tarjeta:

- Tarjeta adaptadoras de 8 conexiones a I2C que contiene al chip PCF8574. Esta tarjeta tiene un precio menor a 2 € y es la opción preferida.

- Tiene 8 terminales amarillos (P0 ... P7) para las conexiones de entrada. Dos conexiones de salida SDA y SCL, además de la alimentación Vcc y Gnd.

______________________________________________________
- Consultar la dirección I2C de la tarjeta.

- Además tiene tres puentes para establecer su dirección I2C, ya que los dispositivos que se conectan a este bus deben tener una dirección propia y que no coincida con la de otro dispositivo del bus.

- Lo más conveniente es conocer la dirección que tiene, para ello conectamos esta tarjeta al Arduino: Vcc, Gnd, SDA y SCL [Por ahora no es necesario conectar el teclado]

- Y cargamos este programa. Ponemos el Serial Monitor a 115200. Consultamos el Serial Monitor. Nos indicará la dirección que tiene actualmente configurada la tarjeta.

Código para ver direcciones I2C
#include <Wire.h>

void setup() {
  Serial.begin (115200);

  // Leonardo: wait for serial port to connect
  while (!Serial)
    {
    }

  Serial.println ();
  Serial.println ("I2C scanner. Scanning ...");
  byte count = 0;
 
  Wire.begin();
  for (byte i = 1; i < 120; i++)
  {
    Wire.beginTransmission (i);
    if (Wire.endTransmission () == 0)
      {
      Serial.print ("Found address: ");
      Serial.print (i, DEC);
      Serial.print (" (0x");
      Serial.print (i, HEX);
      Serial.println (")");
      count++;
      delay (1);  // maybe unneeded?
      } // end of good response
  } // end of for loop
  Serial.println ("Done.");
  Serial.print ("Found ");
  Serial.print (count, DEC);
  Serial.println (" device(s).");
}  // end of setup

void loop() {}

- En este caso la dirección que tiene la tarjeta I2C es 0x38.

 

- Si cambias los puentes y reinicias el Serial Monitor, verás que cambia la dirección.

______________________________________________________
- Conexión del módulo conversor de 8 bits a I2C al teclado y al Arduino.

 

- Los terminales del teclado encajan perfectamente en el módulo.

- Del módulo conectamos SCL, SDA, Gnd y Vcc al Arduino.

- Las entradas correspondientes al bus I2C, que son SCL y SDA en el Arduino UNO, pueden ser las indicadas en la figura, es indiferente utilizar la pareja de arriba o la de abajo.

- He probado conectar el módulo I2C a los 5 V y a los 3,3 V del Arduino y funciona con las dos tensiones.

 

______________________________________________________
- Código para el Arduino.

- Fíjate que he puesto la dirección I2C de mi tarjeta: 0x38

- Además el Serial Monitor lo establezco en 9600

- El código utiliza dos librerías de teclado la Keypad_I2C y la Keypad

- Las dos las puedes bajar de este enlace: Keypad-KeypadI2C.zip

- Esas dos librerías las debes copiar en la carpetar libraries de donde tengas instalado el IDE del Arduino.

- Una vez que carges el código en el Arduino, abre el Serial Monitor y pulsa teclas.

Código para el teclado.
#include <Wire.h>
#include <Keypad_I2C.h>
#include <Keypad.h>
 
const byte ROWS = 4; 
const byte COLS = 4; 
 
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
 
byte rowPins[ROWS] = {0,1,2,3}; 
byte colPins[COLS] = {4,5,6,7};
 
int i2caddress = 0x38;
 
Keypad_I2C kpd = Keypad_I2C( makeKeymap(keys), rowPins, colPins, ROWS, COLS, i2caddress );
 
void setup(){
  Serial.begin(9600);
  kpd.begin();
}
 
void loop(){
  char key = kpd.getKey();
  if (key){
    Serial.println(key);
  }
}

- En la carpeta de la librería Keypad_I2C hay una subcarpeta de ejemplos interesantes.

______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________

- Otros códigos.
- Conexión y código para adaptar un teclado 4x4 a bus I2C.

- Consulta: https://majsterkowo.pl/klawiatura-numeryczna-pod-i2c/

 

______________________________________________________
- Adaptación de 8 conexiones a bus I2C.

- Supongamos que queremos controlar 8 LED, necesitaríamos 8 conexiones al Arduino (además de alimentación positiva y negativa).

- Con el PCF8574 solo necesitaríamos 2 conexiones al Arduino (además de alimentación positiva y negativa).

- Consulta: http://johnny-five.io/examples/expander-PCF8574/

http://tok.hakynda.com/article/detail/28/interface-8-led-with-2-arduino-pins-using-pcf8574p

https://startingelectronics.org/beginners/start-electronics-now/tut18-two-wire-arduino-knight-rider/

_________________________________________________________
- Otro ejemplo de adaptación a I2C, pero algo más complicado.

http://www.haberocean.com/2015/05/circuit-for-44-button-keypad-using-74165-and-74595-part-1/

________________________________

 

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información