I2C Og Arduino Interface

Indholdsfortegnelse:

I2C Og Arduino Interface
I2C Og Arduino Interface

Video: I2C Og Arduino Interface

Video: I2C Og Arduino Interface
Video: Видеоуроки по Arduino. I2C и processing (7-я серия, ч1) 2024, Kan
Anonim

I denne artikel vil vi se på, hvad en I2C-grænseflade (ay-tu-si, i-two-tse) er, hvad er dens funktioner, og hvordan man arbejder med den.

I2c interface
I2c interface

Er det nødvendigt

  • - Arduino;
  • - digitalt potentiometer AD5171;
  • - Lysdiode;
  • - 220 ohm modstand;
  • - 2 modstande til 4,7 kOhm;
  • - tilslutning af ledninger.

Instruktioner

Trin 1

IIC seriel kommunikationsprotokol (også kaldet I2C - Inter-Integrated Circuits) bruger to tovejskommunikationslinjer til at overføre data, kaldet SDA (Serial Data) bus og SCL (Serial Clock) bus. Der er også to kraftledninger. SDA- og SCL-busserne trækkes op til motorbussen gennem modstande.

Der er mindst en master i netværket, der starter datatransmission og genererer synkroniseringssignaler. Netværket har også slaver, der transmitterer data efter masterens anmodning. Hver slaveenhed har en unik adresse, hvor masteren adresserer den. Enhedsadressen er angivet i pas (datablad). Op til 127 enheder kan tilsluttes til en I2C-bus, inklusive flere mastere. Enheder kan forbindes til bussen under drift, dvs. det understøtter hot plugging.

I2C forbindelsesdiagram
I2C forbindelsesdiagram

Trin 2

Arduino bruger to porte til at arbejde på I2C-grænsefladen. For eksempel i Arduino UNO og Arduino Nano svarer analog port A4 til SDA, analog port A5 svarer til SCL.

Til andre kortmodeller:

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

Kortlægning af Arduino-stifter til SDA- og SCL-busser
Kortlægning af Arduino-stifter til SDA- og SCL-busser

Trin 3

For at lette udveksling af data med enheder via I2C-bussen er der blevet skrevet et standard "Wire" -bibliotek til Arduino. Den har følgende funktioner:

start (adresse) - initialisering af biblioteket og forbindelse til I2C-bussen; hvis der ikke er angivet en adresse, betragtes den tilsluttede enhed som master; 7-bit adressering bruges;

requestFrom () - bruges af masteren til at anmode om et bestemt antal bytes fra slave;

beginTransmission (adresse) - begyndelsen af dataoverførsel til slaveenheden på en bestemt adresse;

endTransmission () - afslutning af dataoverførsel til slaven;

skriv () - skrivning af data fra slaven som svar på en anmodning;

tilgængelig () - returnerer antallet af byte med information tilgængelig til modtagelse fra slaven;

læse () - læse en byte overført fra slave til master eller fra master til slave;

onReceive () - angiver den funktion, der skal kaldes, når slaven modtager en transmission fra mesteren;

onRequest () - Angiver en funktion, der skal kaldes, når masteren modtager en transmission fra slaven.

Trin 4

Lad os se, hvordan vi arbejder med I2C-bussen ved hjælp af Arduino.

Først samler vi kredsløbet som vist i figuren. Vi styrer lysstyrken på LED'en ved hjælp af det digitale potentiometer AD5171 64-position, der forbinder til I2C-bussen. Den adresse, hvor vi vil henvise til potentiometeret, er 0x2c (44 i decimal).

LED-kontrolkredsløb ved hjælp af digitalt potentiometer og Arduino
LED-kontrolkredsløb ved hjælp af digitalt potentiometer og Arduino

Trin 5

Lad os nu åbne en skitse fra bibliotekseksemplerne "Wire":

File -> Prøver -> Wire -> digital_potentiometer. Lad os indlæse det i Arduino-hukommelse. Lad os tænde det.

Ser du, lysdioden på LED stiger cyklisk og slukker pludselig. I dette tilfælde styrer vi potentiometeret ved hjælp af Arduino via I2C-bussen.

Anbefalede: