Cum sa te legi la dispozitive I2C cu Arduino Diecimila/Duemilanove/Uno

I2C (I²C sau Inter-Integrated Circuit) este un tip de transmisie de date seriale de tip master-slave.

Pasul 1: Pinouts I2C

Arduino Diecimila/Duemilanove/Uno (poate si altele) nu au scrise pe ele care anume sunt pinii necesari protocolului I2C (sau TWI = Two Wire Interface) dar se pare ca, rasfoind documentatia am aflat ca pentru a folosi I2C/TWI avem nevoie sa conectam pinii SCL/SDA/+5V/GND intre device-uri.

La Arduino cele 2 porturi necesare sunt:
SCL - Serial Clock Line - se afla pe pinul Analog 5
SDA - Serial Data Line - se afla pe pinul Analog 4

Pasul 2: Scanner de device-uri pe bus-ul I2C/TWI

Uneori nu stii exact ce adresa are un device asa ca e nevoie de un scanner. Se conecteaza cei 4 pini (+5V/GND/SCL/SDA) si se ruleaza pe Arduino codul de mai jos:

 // i2c_scanner
 //
 // This program (or code that looks like it)
 // can be found in many places.
 // For example on the Arduino.cc forum.
 // The original author is not know.
 //
 // This sketch tests the standard 7-bit addresses
 // from 0 to 127. Devices with higher bit address
 // might not be seen properly.
 //
 // Adapted to be as simple as possible by Arduino.cc user Krodal
 
#include <Wire.h>
 
void setup()
{
	Wire.begin();
	Serial.begin(115200);
	Serial.println("\nI2C Scanner");
}
 
void loop()
{
	byte error, address;
	int nDevices;
 
	Serial.println("Scanning...");
 
	nDevices = 0;
	for(address = 0; address <= 127; address++ )
	{
		Wire.beginTransmission(address);
		error = Wire.endTransmission();
		if (error == 0)
		{
			Serial.print("I2C device found at address 0x");
			if (address<16)
				Serial.print("0");
			Serial.print(address, HEX);
			Serial.println(" !");
			nDevices++;
		}
		else if (error==4)
		{
			Serial.print("Unknow error at address 0x");
			if (address<16)
				Serial.print("0");
			Serial.println(address,HEX);
		}
	}
	if (nDevices == 0)
		Serial.println("No I2C devices found\n");
	else
		Serial.println("done\n");
 	delay(30000);
 }

Pasul 3: Libraria Wire

Pentru a putea comunica cu device-ul de pe I2C/TWI e nevoie de libraria Wire.h: 
http://arduino.cc/en/reference/wire .


Cuvinte cheie: Arduino electronica i2c twi


Despre autor

sorin
Telefon: 0724540234
Trimite-i un email


Faci ceva interesant?

Împărtăşeşte acum cu ceilalţi!