Я начинаю программировать на Arduino, и я попытался соединить две карты, используя шину I2 C, как показано в этом руководстве . Мне бы хотелось, чтобы каждый раз, когда ведомая карта получала байт от мастера, мигает встроенный светодиод ведомого (она должна включиться на секунду, а затем выключиться). Проблема в том, что на практике светодиод мигает очень странным образом (это очень быстрое мигание, намного меньше секунды), он не горит ни на секунду. Есть идеи, почему это может происходить?
Вот код:
Мастер:
#include <Wire.h>
void setup() {
Wire.begin();
}
void loop() {
Wire.beginTransmission(4);
Wire.write(1);
Wire.endTransmission();
delay(5000);
}
Раб:
#include <Wire.h>
void setup() {
Wire.begin(4);
Wire.onReceive(receiveEvent);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
delay(100);
}
void receiveEvent(int howMany) {
int x = Wire.read(); // without this, it doesn't work
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
}
PD: Я проверил, правильно ли светодиод работает с программой, которая включает и выключает его в l oop.
Спасибо!