Wire
Esta librería le permite comunicarse al arduino por medio de modulo interno i2c, ya sea como maestro a otros dispositivos o como esclavo recibiendo peticiones y respondiendo datos. Esta librería esta incluida por defecto en el entorno de desarrollo del arduino y no requiere descargarla.[1]
Pines i2c en arduino
En la siguiente tabla se muestra algunas de las principales placas y en que pines esta el modulo i2c
Notas
A partir de Arduino 1.0, la biblioteca hereda de las funciones Stream, por lo que es coherente con otras bibliotecas de lectura / escritura. Debido a esto, send () y reciben () han sido reemplazados por read () y write ().
Hay versiones de 7 y 8 bits de direcciones I2C . 7 bits identifican el dispositivo, y el octavo bit determina si se está escribiendo o leyendo. La biblioteca Wire utiliza direcciones de 7 bits en todo momento.
Para mas información del i2c en este post encontrara su definición y características.
Uso
Pata usar esta librería solo se requiere añadir la siguiente linea
#include <Wire.h>
Funciones
Wire.begin()
Descripción
Inicia la librería para unirse al bus I2C como maestro o esclavo. Esto normalmente debería llamarse solo una vez.
Sintaxis
Wire.begin(dirección)
Parámetros
- #include <Wire.h>La dirección del esclavo de 7 bits (opcional); si no se especifica, únase al bus como maestro.
Retorna
Ninguna
Wire.requestFrom()
Descripción
Usado por el maestro para solicitar bytes de un dispositivo esclavo. Los bytes se pueden recuperar con las funciones disponibles()
y read()
.
A partir de Arduino 1.0.1, requestFrom() acepta un argumento booleano que cambia su comportamiento por compatibilidad con ciertos dispositivos I2C.
Si es true, requestFrom() envía un mensaje de detención después de la solicitud, liberando el bus I2C.
Si es false, requestFrom() envía un mensaje de reinicio después de la solicitud. El bus no se liberará, lo que evita que otro dispositivo maestro solicite entre mensajes. Esto permite que un dispositivo maestro envíe múltiples solicitudes mientras está en control.
El valor por defecto es verdadero.
Sintaxis
Wire.requestFrom(address, quantity)
Wire.requestFrom(address, quantity, stop)
Parámetros
- address La dirección de 7 bits del dispositivo para solicitar bytes
- quantity El número de bytes a solicitar
- stop booleano. true enviará un mensaje de detención después de la solicitud, liberando el bus. false enviará continuamente un reinicio después de la solicitud, manteniendo la conexión activa.
Retorna
byte: el número de bytes devueltos por el dispositivo esclavo
beginTransmission()
Descripción
Comienza una transmisión al dispositivo esclavo I2C con la dirección dada. Posteriormente, pone en cola los bytes para la transmisión con la función write()
y transmítalos llamando a endTransmission()
.
Sintaxis
Wire.beginTransmission(address)
Parámetros
- address La dirección de 7 bits del dispositivo a transmitir
Retorna
Ninguna
endTransmission()
Descripción
Finaliza una transmisión a un dispositivo esclavo que comenzó con beginTransmission()
y transmite los bytes que estaban en cola por write()
.
A partir de Arduino 1.0.1, endTransmission()
acepta un argumento booleano que cambia su comportamiento por compatibilidad con ciertos dispositivos I2C.
Si es true, endTransmission()
envía un mensaje de detención después de la transmisión, liberando el bus I2C.
Si es false, endTransmission()
envía un mensaje de reinicio después de la transmisión. El bus no se liberará, lo que impide que otro dispositivo maestro transmita entre mensajes. Esto permite que un dispositivo maestro envíe múltiples transmisiones mientras está en control.
El valor por defecto es true.
Sintaxis
Wire.endTransmission()
Wire.endTransmission(stop)
Parámetros
- stop booleano. true enviará un mensaje de detención, liberando el bus después de la transmisión. falso enviará un reinicio, manteniendo la conexión activa.
Retorna
byte, que indica el estado de la transmisión:
- 0: éxito
- 1: datos demasiado largos para caber en el búfer de transmisión
- 2: NACK recibido al transmitir la dirección
- 3: NACK recibido en la transmisión de datos
- 4: otro error
write()
Descripción
Escribe datos de un dispositivo esclavo en respuesta a una solicitud de un maestro, o pone en cola bytes para la transmisión de un dispositivo maestro a esclavo (llamadas intermedias a beginTransmission()
y endTransmission()
).
Sintaxis
Wire.write(value)
Wire.write(string)
Wire.write(data, length)
Parámetros
- value Un valor para enviar como un solo byte
- string Una cadena para enviar como una serie de bytes
- data Una matriz de datos para enviar como bytes
- length El número de bytes a transmitir
Retorna
byte: write()
devolverá el número de bytes escritos, aunque leer ese número es opcional.
available()
Descripción
Devuelve el número de bytes disponibles para recuperación con read()
. Se debe invocar en un dispositivo maestro después de una llamada a requestFrom()
o en un esclavo dentro del controlador onReceive()
.
disponible()
hereda de la clase de utilidad Stream.
Sintaxis
Wire.available()
Parámetros
Ninguno
Retorna
El número de bytes disponibles para leer.
read()
Descripción
Lee un byte que se transmitió de un dispositivo esclavo a un maestro después de una llamada a requestFrom()
o se transmitió de un maestro a un esclavo. read()
hereda de la clase de utilidad Stream.
Sintaxis
Wire.read()
Parámetros
Ninguno
Retorna
El siguiente byte recibido
setClock()
Descripción
Esta función modifica la frecuencia del reloj para la comunicación I2C . Los dispositivos esclavos I2C no tienen una frecuencia mínima de reloj de trabajo, sin embargo, 100 KHz suele ser la línea de base.
Sintaxis
Wire.setClock(clockFrequency)
Parámetros
- clockFrequency el valor (en hercios) del reloj de comunicación deseado. Los valores aceptados son 100000 (modo estándar) y 400000 (modo rápido). Algunos procesadores también admiten 10000 (modo de baja velocidad), 1000000 (modo rápido plus) y 3400000 (modo de alta velocidad). Consulte la documentación específica del procesador para asegurarse de que el modo deseado sea compatible.
Retorna
Nada
onReceive()
Descripción
Registra una función a llamar cuando un dispositivo esclavo recibe una transmisión de un maestro.
Sintaxis
Wire.onReceive(handler)
Parámetros
handler
La función a llamar cuando el esclavo recibe datos; Esto debería tomar un único parámetro int (el número de bytes leídos del maestro) y no devolver nada, por ejemplo: void myHandler (int numBytes)
Retorna
Nada
onRequest()
Descripción
Registre una función que se llamará cuando un maestro solicite datos de este dispositivo esclavo.
Sintaxis
Wire.onRequest(handler)
Parámetros
la función a llamar, no toma parámetros y no devuelve nada, por ejemplo: void myHandler()
Retorna
Nada
Referencias
[1] arduino https://www.arduino.cc/en/Reference/Wire, Consultado marzo 2020
Comentario
fercho123567
26 October 2021 13:05
04 October 2022 10:26
oscar
04 April 2023 10:12
Esta libreris esta diseñada solo para arduino