Если вы хотите использовать протокол I2C, то в библиотеке Wire есть отличные примеры работы с ним.
Вам только необходимо указать пины, к которым подсоединены SDA и SCL - PB_7_ALT1 и PC6 соответственно. Воспользуйтесь функциями setSDA и setSCL:
Wire.setSDA(PB_7_ALT1);
Wire.setSCL(PC6);
В библиотеке VBCoreG4_arduino_system PB_7_ALT1 и PC6 определены как pinSDA и pinSCL, поэтому код выше можно переписать в виде:
Wire.setSDA(pinSDA);
Wire.setSCL(pinSCL);
Ниже приведены два работающих примера из библиотеки Wire - master_writer и slave_receiver
#include <VBCoreG4_arduino_system.h>
#include <Wire.h>
// Wire Master Writer
// Демонстрирует использование библиотеки Wire
// Запись данных с master-устройства в slave-устройство по протоколу I2C
//I2С4_SDA подключен к пину PB_7_ALT1
#define pinSDA PB_7_ALT1
//I2С4_SCL подключен к пину PC6
#define pinSCL PC6
//дефайны выше прописывать необязательно - они уже есть в библиотеке
void setup()
{
Wire.setSDA(pinSDA);
Wire.setSCL(pinSCL);
Wire.begin();
pinMode(LED2, OUTPUT);
}
byte x = 0;
void loop()
{
Wire.beginTransmission(5); // передать на устройство 5
Wire.write("x is "); // отправляет пять байтов
Wire.write(x); // отправляет один байт
Wire.endTransmission(); // прекратить передачу
x++;
digitalWrite(LED2, !digitalRead(LED2)); //поморгать светодиодом
delay(200);
}
#include <VBCoreG4_arduino_system.h>
#include <Wire.h>
// Wire Slave Receiver
// Демонстрирует использование библиотеки Wire
// Получает данные как slave-устройство от master-устройства по протоколу I2C
//SDA подключен к пину PB_7_ALT1
//#define pinSDA PB_7_ALT1
//SCL подключен к пину PC6
//#define pinSCL PC6
//закомментируем эти дефайны - они уже есть в библиотеке, убедимся что программа работает
void setup()
{
Wire.setSDA(pinSDA);
Wire.setSCL(pinSCL);
//в качестве аргумента begin передаем адрес slave-устройства
Wire.begin(5); // подключение к шине i2c с адресом 5
Wire.onReceive(receiveEvent); // регистрация события, аргумент - функция, обрабоатывающая событие
Serial.begin(115200);
}
void loop()
{
delay(100);
}
// функция, которая выполняется всякий раз, когда данные получены от master-устройства
// эта функция регистрируется как событие, см. setup()
void receiveEvent(int howMany)
{
Serial.println("ok");
while(1 < Wire.available()) // цикл по всем элементам
{
char c = Wire.read(); // получаем байт в виде символа
Serial.print(c); // печатаем символ
}
int x = Wire.read(); // получить байт в виде целого числа
Serial.println(x); // вывести целое числarduino