Biblioteca Wire (dispositivos I2C)
Fontes:
https://www.arduino.cc/reference/en/language/functions/communication/wire/
Descrição da biblioteca no site oficial do Arduino
Descrição
Esta biblioteca permite que você se comunique com dispositivos I2C/TWI. Nas placas Arduino com layout R3 (pinagem 1.0), o SDA (data line) e SCL (clock line) estão nos cabeçalhos dos pinos próximos ao pino AREF. O Arduino Due possui duas interfaces I2C/TWI SDA1 e SCL1 estão próximas ao pino AREF e a adicional está nos pinos 20 e 21.
Como referência, a tabela abaixo mostra onde os pinos TWI estão localizados em várias placas Arduino.
Quadro | pinos I2C/TWI |
UNO, Ethernet | A4 (SDA), A5 (SCL) |
Mega2560 | 20 (SDA), 21 (SCL) |
leonardo | 20 (SDA), 21 (SCL), SDA1, SCL1 |
A partir do Arduino 1.0, a biblioteca herda das funções Stream, tornando-a consistente com outras bibliotecas de leitura/gravação. Por causa disso, send()
e receive()
foram substituídos por read()
e write()
.
Versões recentes da biblioteca Wire podem utilizar timeouts para evitar um travamento diante de determinados problemas no barramento, mas isso não está habilitado por padrão (ainda) nas versões atuais. Recomenda-se sempre habilitar esses tempos limite ao usar a biblioteca Wire. Consulte a função Wire.setWireTimeout para obter mais detalhes.
Nota: Existem versões de 7 e 8 bits de endereços I2C. 7 bits identificam o dispositivo e o oitavo bit determina se ele está sendo gravado ou lido. A biblioteca Wire usa endereços de 7 bits por toda parte. Se você tiver uma folha de dados ou código de amostra que usa endereço de 8 bits, você vai querer descartar o bit inferior (ou seja, mudar o valor um bit para a direita), resultando em um endereço entre 0 e 127. No entanto, os endereços de 0 a 7 não são usados porque são reservados, então o primeiro endereço que pode ser usado é 8. Observe que um resistor pull-up é necessário ao conectar os pinos SDA/SCL. Consulte os exemplos para obter mais informações. A placa MEGA 2560 possui resistores pull-up nos pinos 20 e 21 onboard.
A implementação da biblioteca Wire usa um buffer de 32 bytes, portanto qualquer comunicação deve estar dentro desse limite. O excesso de bytes em uma única transmissão será descartado.
Para usar esta biblioteca:
#include <Wire.h>