Как запретить подчиненному устройству выполнять код до тех пор, пока мастер не отправит новое значение? I2C
Я полный нуб, когда дело касается Arduino. Я медленно учусь. Я пробовал этот код, который в основном получает входные данные в Arduino1 (главный) и отображает символ на последовательном мониторе Arduino2 (ведомый). Кодовые слова просто находятся, но мне просто нужно, чтобы ведомое устройство подождало, пока ведущее устройство не отправит следующий символ. Прямо сейчас подчиненное устройство непрерывно печатает символ.
Главный код:
#include "Wire.h"
char ch;
void setup() {
Serial.begin(9600);
Wire.begin();
}
void loop() {
while(Serial.available()==0)
{}
ch=Serial.read();
delay(1000);
Serial.print("The character that you entered is ");
Serial.println(ch);
Wire.beginTransmission(9);
Wire.write(ch);
Wire.endTransmission();
}
Подчиненный код:
#include "Wire.h"
char x;
void setup() {
Serial.begin(9600);
Wire.begin(9);
Wire.onReceive(Event);
}
void Event(char bytes){
x = Wire.read();
}
void loop() {
Serial.print("The character that you entered in the other Arduino is ");
Serial.println(x);
}
Я знаю, что это будет просто, но я просто не могу понять, что делать. Пожалуйста, помогите мне
@Kishore, 👍0
Обсуждение1 ответ
Лучший ответ:
▲ 2
#include "Wire.h"
volatile char x;
volatile bool received;
void setup() {
Serial.begin(9600);
Wire.begin(9);
Wire.onReceive(Event);
}
void Event(char bytes){
x = Wire.read();
received = true;
}
void loop() {
if (received) {
received = false;
Serial.print("The character that you entered in the other Arduino is ");
Serial.println(x);
}
}
,
@Juraj
Сделать обоих нестабильными?, @Jot
да, конечно, он вызывается из прерывания., @Juraj
Смотрите также:
- Соединение I2C с модулем камеры MT9D111, странные результаты после записи регистров через i2C
- Как назвать датчики температуры вместо адреса печати с помощью датчиков ds2482-100 и ds18b20 - Справка
- Сколько читаемого текста может поместиться в ATTINY85? Возможность прокрутки буклета на 0,91-дюймовом OLED-дисплее
- Нужно сделать кнопку, чтобы выключить будильник на часах
- Печать string and integer LCD
- Отправка и получение различных типов данных через I2C в Arduino
- Как работают функции вне цикла void?
- Как отображать переменные на 0,96-дюймовом OLED-дисплее с библиотекой u8glib?
Изменил код. Пожалуйста, проверьте сейчас, @Kishore
отправить больше байтов, прочитать больше байтов. собрать байты в буфер, отправить весь буфер и получить буфер, @Juraj
@Juraj Пожалуйста, переведите это на нубский язык. Извини. Могу ли я внести какие-либо изменения в код, чтобы заставить ведомое устройство сделать это?, @Kishore
см. примеры master_writer и подчиненного_reader в меню «Файл» IDE., @Juraj