Arduino cursus/i2c
I2C library (Wire)
I2C is een protocol om microcontrollers en andere onderdelen aan elkaar te verbingen, via een "bus" met 2 draden: SDA (serial data) en SCL (serial clock).
De I2C-bus heeft een master-slave opzet: dit betekent dat er altijd 1 van de apparaten op de bus als "master" fungeert, en de rest als "slave". In de Arduino-voorbeelden is de Arduino de master, en zijn de andere appareten "slave".
- Dit serie-protocol is indertijd door Philips bedacht voor communicatie tussen ic's met minder aansluitingen en minder draden dan de parallelle communicatie die tot dan toe gebruikelijk was. Het wordt inmiddels voor heel veel onderdelen gebruikt, van geheugens tot sensoren en actuatoren.
Je kunt een Arduino ook als slave laten functioneren: dan kun je twee Arduino's via I2C laten communiceren.
I2C-adres
Om een I2C-apparaat (device) vanuit de Arduino te kunnen gebruiken, moet je het I2C-adres van dit device weten. Dit staat vaak in de documentatie van het device. Als je het niet weet, kan de I2C-scanner helpen: deze zoekt alle (slave)devices op de I2C-bus.
Gebruik van de library
De I2C-library heet in de Arduino-IDE: Wire
, zie: https://www.arduino.cc/en/Reference/Wire
De Arduino-pinnen voor de I2C bus zijn:
- A4 - SDA
- A5 - SCL
Andere microcontrollers hebben soms meerdere pinnen die als I2C-bus gebruikt kunnen worden.
Importeren van de library:
#include <Wire.h>
Voor het verdere functies en het gebruik daarvan, zie de Arduino-referentie: https://www.arduino.cc/en/Reference/Wire