Skip to content

I2C ​

Popis ​

I2C (Inter-Integrated Circuit) je sériový komunikační protokol používaný pro komunikaci mezi mikrokontrolerem a periferními zařízeními.

Používá pouze 2 vodiče:

  • SDA – Serial Data (data)
  • SCL – Serial Clock (hodiny)

Každé zařízení na sběrnici má unikátní adresu.

Používá se například pro:

  • senzory
  • OLED displeje
  • RTC moduly
  • komunikaci mezi mikrokontrolery

Používané knihovny ​


Syntaxe ​

cpp
#include <Wire.h>

void setup() {
    Wire.begin();
}

Důležité funkce ​

Inicializace ​

  • Wire.begin()
    zahájí I2C komunikaci

Odesílání dat ​

  • Wire.beginTransmission(address)
    zahájí komunikaci se zařízením

  • Wire.write(data)
    odešle data

  • Wire.endTransmission()
    ukončí přenos


Čtení dat ​

  • Wire.requestFrom(address, bytes)
    požádá zařízení o data

  • Wire.read()
    přečte přijatá data

  • Wire.available()
    zjistí kolik bajtů je dostupných


Příklady ​

Základní inicializace ​

cpp
#include <Wire.h>

void setup() {
    Wire.begin();
}

void loop() {

}

Odeslání dat zařízení ​

cpp
Wire.beginTransmission(0x3C);
Wire.write(0x00);
Wire.endTransmission();

Čtení dat ​

cpp
Wire.requestFrom(0x3C, 1);

while (Wire.available()) {
    int data = Wire.read();
}

Typické použití ​

  • OLED displeje
  • BMP280 / BME280 senzory
  • RTC moduly (DS3231)
  • EEPROM paměti
  • ADC převodníky

Poznámky ​

  • všechna zařízení sdílí stejné vodiče SDA a SCL
  • každé zařízení musí mít unikátní adresu
  • většinou je potřeba pull-up rezistor na SDA a SCL

Typické adresy zařízení:

  • 0x3C – OLED displej
  • 0x68 – RTC modul
  • 0x76 / 0x77 – BMP280

Odkazy / dokumentace ​

Arduino dokumentace:

https://www.arduino.cc/reference/en/language/functions/communication/wire/