Pierwsze kroki z Raspberry Pi: obsługa magistrali I2C na przykładzie LED RGB

Zapis przez I2C

Spróbujmy teraz z linii poleceń zaświecić diodę modułu KAmodRGB, w pierwszej kolejności musimy zapisać rejestry MODE1, MODE2 i LEDOUT wartościami odpowiednio: 0x00, 0x00, 0xFF (jeśli jesteś ciekawy skąd te wartości to odsyłam do dokumentacji układu PCA9633), następnie zapisać wartości jasności do rejestrów PWMx, w poniższym przykładzie zaświecamy wszystkie składowe z maksymalną jasnością.

Pierwsze dwa parametry mają analogiczne działanie jak w i2cdetect, kolejne trzy parametry to: adres urządzenia I2C, adres rejestru oraz wartość do zapisania w rejestrze.

Odczyt przez I2C

Teraz spróbujemy odczytać rejestry z modułu. Z linii poleceń umożliwia nam to polecenie i2cget:

Dostęp do interfejsu I2C w języku C

Poniżej znajduje się przykładowy program, który płynnie zmienia kolor świecenia diody modułu KAmodRGB.

Aby zainicjalizować interfejs wywołujemy funkcję open(“/dev/i2c-1”, O_RDWR), następnie ustawiamy adres urządzenia slave wywołaniem ioctl(KAmodRGB, I2C_SLAVE, 0x07). O ile wszystko się powiodło, możemy już komunikować się przez interfejs, w przykładowym programie co 200 ms zmieniam kolor świecenia diody modułu KAmodRGB, w tym celu wywołaniem write(KAmodRGB, buf, 2) wysyłam 2 bajty z tablicy buf z czego pierwszy bajt to adres rejestru a drugi – jego nowa wartość.

O autorze