Interface I2C Et Arduino

Interface I2C Et Arduino
Interface I2C Et Arduino

Table des matières:

Anonim

Dans cet article, nous verrons ce qu'est une interface I2C (ay-tu-si, i-two-tse), quelles sont ses fonctionnalités et comment l'utiliser.

Il est nécessaire

  • -Arduino;
  • - potentiomètre numérique AD5171;
  • - Diode électro-luminescente;
  • - résistance 220 ohms;
  • - 2 résistances pour 4,7 kOhm;
  • - les fils de connexion.

Instructions

Étape 1

Le protocole de communication série IIC (également appelé I2C - Inter-Integrated Circuits) utilise deux lignes de communication bidirectionnelles pour transférer des données, appelées bus SDA (Serial Data) et SCL (Serial Clock). Il y a aussi deux lignes électriques. Les bus SDA et SCL sont tirés vers le bus d'alimentation via des résistances.

Il y a au moins un maître dans le réseau qui initie la transmission de données et génère des signaux de synchronisation. Le réseau dispose également d'esclaves qui transmettent des données à la demande du maître. Chaque appareil esclave a une adresse unique à laquelle le maître l'adresse. L'adresse de l'appareil est indiquée dans le passeport (fiche technique). Jusqu'à 127 appareils peuvent être connectés à un bus I2C, dont plusieurs maîtres. Les appareils peuvent être connectés au bus pendant le fonctionnement, c'est-à-dire il prend en charge le branchement à chaud.

Étape 2

Arduino utilise deux ports pour travailler sur l'interface I2C. Par exemple, dans Arduino UNO et Arduino Nano, le port analogique A4 correspond à SDA, le port analogique A5 correspond à SCL.

Pour les autres modèles de carte:

Arduino Pro et 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

Étape 3

Pour faciliter l'échange de données avec les appareils via le bus I2C, une bibliothèque standard "Wire" a été écrite pour l'Arduino. Il a les fonctions suivantes:

begin (adresse) - initialisation de la bibliothèque et connexion au bus I2C; si aucune adresse n'est spécifiée, alors l'appareil connecté est considéré comme le maître; L'adressage 7 bits est utilisé;

requestFrom () - utilisé par le maître pour demander un certain nombre d'octets à l'esclave;

beginTransmission (adresse) - le début du transfert de données vers l'appareil esclave à une adresse spécifique;

endTransmission () - fin de la transmission de données à l'esclave;

write() - écriture de données depuis l'esclave en réponse à une requête;

available () - renvoie le nombre d'octets d'informations disponibles pour la réception de l'esclave;

read () - lit un octet transféré de l'esclave au maître ou du maître à l'esclave;

onReceive () - indique la fonction à appeler lorsque l'esclave reçoit une transmission du maître;

onRequest () - Indique une fonction à appeler lorsque le maître reçoit une transmission de l'esclave.

Étape 4

Voyons comment travailler avec le bus I2C en utilisant Arduino.

Tout d'abord, nous allons assembler le circuit, comme indiqué sur la figure. Nous contrôlerons la luminosité de la LED à l'aide du potentiomètre numérique à 64 positions AD5171, qui se connecte au bus I2C. L'adresse à laquelle on fera référence au potentiomètre est 0x2c (44 en décimal).

Étape 5

Ouvrons maintenant une esquisse à partir des exemples de la bibliothèque "Wire":

Fichier -> Échantillons -> Fil -> digital_potentiometer. Chargeons-le dans la mémoire Arduino. Allumons-le.

Vous voyez, la luminosité de la LED augmente cycliquement, puis s'éteint soudainement. Dans ce cas, nous contrôlons le potentiomètre à l'aide de l'Arduino via le bus I2C.

Conseillé: