Interface I2C E Arduino

Índice:

Interface I2C E Arduino
Interface I2C E Arduino

Vídeo: Interface I2C E Arduino

Vídeo: Interface I2C E Arduino
Vídeo: Подключение нескольких устройств по шине i2c 2024, Novembro
Anonim

Neste artigo, veremos o que é uma interface I2C (ay-tu-si, i-two-tse), quais são seus recursos e como trabalhar com ela.

Interface I2c
Interface I2c

É necessário

  • - Arduino;
  • - potenciômetro digital AD5171;
  • - Diodo emissor de luz;
  • - resistor de 220 ohms;
  • - 2 resistores para 4,7 kOhm;
  • - fios de conexão.

Instruções

Passo 1

O protocolo de comunicação serial IIC (também denominado I2C - Inter-Integrated Circuits) utiliza duas linhas de comunicação bidirecionais para a transferência de dados, denominadas barramento SDA (Serial Data) e barramento SCL (Serial Clock). Existem também duas linhas de energia. Os barramentos SDA e SCL são puxados para o barramento de força por meio de resistores.

Há pelo menos um mestre na rede que inicia a transmissão de dados e gera sinais de sincronização. A rede também possui escravos que transmitem dados a pedido do mestre. Cada dispositivo escravo possui um endereço único no qual o mestre o endereça. O endereço do dispositivo é indicado no passaporte (folha de dados). Até 127 dispositivos podem ser conectados a um barramento I2C, incluindo vários mestres. Os dispositivos podem ser conectados ao barramento durante a operação, ou seja, ele suporta conexão a quente.

Diagrama de conexão I2C
Diagrama de conexão I2C

Passo 2

O Arduino usa duas portas para trabalhar na interface I2C. Por exemplo, no Arduino UNO e no Arduino Nano, a porta analógica A4 corresponde a SDA, a porta analógica A5 corresponde a SCL.

Para outros modelos de placa:

Arduino Pro e Pro Mini - A4 (SDA), A5 (SCL)

Arduino Mega - 20 (SDA), 21 (SCL)

Arduino Leonardo - 2 (SDA), 3 (SCL)

Arduino Due - 20 (SDA), 21 (SCL), SDA1, SCL1

Mapeando pinos do Arduino para barramentos SDA e SCL
Mapeando pinos do Arduino para barramentos SDA e SCL

etapa 3

Para facilitar a troca de dados com dispositivos por meio do barramento I2C, uma biblioteca "Wire" padrão foi escrita para o Arduino. Possui as seguintes funções:

begin (endereço) - inicialização da biblioteca e conexão ao barramento I2C; se nenhum endereço for especificado, o dispositivo conectado é considerado o mestre; O endereçamento de 7 bits é usado;

requestFrom () - usado pelo mestre para solicitar um certo número de bytes do escravo;

beginTransmission (address) - o início da transferência de dados para o dispositivo escravo em um endereço específico;

endTransmission () - término da transmissão de dados para o escravo;

write () - grava dados do escravo em resposta a uma solicitação;

available () - retorna o número de bytes de informação disponíveis para receber do escravo;

read () - lê um byte transferido do escravo para o mestre ou do mestre para o escravo;

onReceive () - indica a função a ser chamada quando o escravo recebe uma transmissão do mestre;

onRequest () - Indica uma função a ser chamada quando o mestre recebe uma transmissão do escravo.

Passo 4

Vamos ver como trabalhar com o barramento I2C usando o Arduino.

Primeiro, vamos montar o circuito, conforme mostrado na figura. Vamos controlar o brilho do LED usando o potenciômetro digital de 64 posições AD5171, que se conecta ao barramento I2C. O endereço no qual nos referiremos ao potenciômetro é 0x2c (44 em decimal).

Circuito de controle de LED usando potenciômetro digital e Arduino
Circuito de controle de LED usando potenciômetro digital e Arduino

Etapa 5

Agora vamos abrir um esboço dos exemplos da biblioteca "Wire":

Arquivo -> Amostras -> Fio -> digital_potenciômetro. Vamos carregá-lo na memória do Arduino. Vamos ligar.

Veja, o brilho do LED aumenta ciclicamente e, de repente, apaga-se. Nesse caso, controlamos o potenciômetro usando o Arduino por meio do barramento I2C.

Recomendado: