Alex753
Здесь я подсказать не в силах, с SPI мало имел дело.
Вот скетч который у меня работает, задержка на отключения, после выхода из режима AV 3 секунды, может пригодится.
Код:
#include <Wire.h>
#define ADDR 72 //адрес устройства
int AV = 13; // управляющий пин
unsigned long AVtime=0;
int AVflag=false;
void setup()
{
Wire.begin(ADDR); //определим как ведомый с указанным адресом
Wire.onReceive(receive_handler); //ждем данных от мастера, функция возвращает int число байт данных
pinMode(AV, OUTPUT); // назначаем пины как выходы
}
void loop()
{
}
void receive_handler(int numbytes)
{
for (int i=0;i<numbytes;i++) //читаем весь пакет
{
int a = Wire.read(); // присваиваем переменной значение a
if (a == 194 || a == 210) // если код 0194192247208 или 0210208247208 включить пин 13
{
digitalWrite(AV, HIGH);
AVflag == true;
}
else if (a == 80 || a == 88 || a == 64 || a == 67 || a == 91) // если код 080192247208 или 088192247208 или 064192247208 или 067192247208 или 091216247208 включить пин 13
AVflag == false,AVtime=millis();
if(millis()-AVtime>3000 && AVflag == false) digitalWrite(AV, LOW);
}
}