Как отправлять и получать данные с Arduino Uno на Arduino Mega с помощью I2C?

Я пытаюсь отправить данные в виде строки с Arduino Uno на другой Arduino Mega. Я читал о соединении I2C, где мы подключаем RX к TX напротив.

Как запустить и отправлять и получать данные между ними? Я понятия не имею, как можно написать код.

, 👍0


1 ответ


Лучший ответ:

0

На instructables есть хороший пост.

Короче код

Мастер-код:

// Включаем необходимую библиотеку Wire для I2C
#include <Wire.h>
int x = 0;
void setup() {
  // Запускаем шину I2C как мастер
  Wire.begin(); 
}
void loop() {
  Wire.beginTransmission(9); // передать на устройство №9
  Wire.write(x);              // отправляет х
  Wire.endTransmission();    // прекращаем передачу
  x++; // Увеличение х
  if (x > 5) x = 0; // `сбросить x, как только он станет равным 6
  delay(500);
}

Подчиненный код

// Включаем необходимую библиотеку Wire для I2C
#include <Wire.h>
int LED = 13;
int x = 0;
void setup() {
  // Определяем контакт светодиода как выход
  pinMode (LED, OUTPUT);
  // Запускаем шину I2C как ведомую по адресу 9
  Wire.begin(9); 
  // Прикрепите функцию для запуска при получении чего-либо.
  Wire.onReceive(receiveEvent);
}
void receiveEvent(int bytes) {
  x = Wire.read();    // прочитать один символ из I2C
}
void loop() {
  //Если полученное значение равно 0, светодиод мигает в течение 200 мс
  if (x == '0') {
    digitalWrite(LED, HIGH);
    delay(200);
    digitalWrite(LED, LOW);
    delay(200);
  }
  //Если полученное значение равно 3 миганиям светодиода в течение 400 мс
  if (x == '3') {
    digitalWrite(LED, HIGH);
    delay(400);
    digitalWrite(LED, LOW);
    delay(400);
  }
}

В посте с инструкциями показано гораздо больше объяснений.

,