Zbernica i2c: nástroje II.
Zo stránky SensorWiki
Niekoľko užitočných programov k zbernici i2c. Nech poslúžia na štúdium a tvorbu vlastných pokusov.
Príklady sú doplnkom cvičenia s obvodom AT24C02 - pamäť EEPROM.
Základný zápis a čítanie podľa návodu
#include <Wire.h>
#define deviceAddress B01010000
void setup()
{
Serial.begin(9600);
Wire.begin();
/* Zapiseme do EEPROM niekolko znakov */
for (int i = 0; i < 10; i++)
{
eeprom_i2c_write(deviceAddress, i, 'A'+i);
delay(100); /* lebo zapis chvilu trva a nekontrolujeme ACK */
}
Serial.println("Writen to memory!");
}
void loop()
{
byte myData;
for (int memAddress = 0; memAddress < 20; memAddress++)
{
myData = eeprom_i2c_read(deviceAddress, memAddress);
Serial.print(memAddress);
Serial.print(" - ");
Serial.print((char)myData);
Serial.print("\n");
delay(100);
}
delay(2000);
}
void eeprom_i2c_write(byte address, byte from_addr, byte data) {
Wire.beginTransmission(address);
Wire.write(from_addr);
Wire.write(data);
Wire.endTransmission();
}
byte eeprom_i2c_read(int address, int from_addr) {
byte result=0xFF; // ak nic neprijmeme, tak vrati FF
Wire.beginTransmission(address);
Wire.write(from_addr);
Wire.endTransmission();
Wire.requestFrom(address, 1);
if(Wire.available())
result = Wire.read();
Wire.endTransmission();
return result;
}