i2c между ардуино

Ответить
dee-vize
Рядовой
Сообщения: 34
Зарегистрирован: 10.09.2015{, 12:13}
Репутация: 0
Откуда: Москва
Контактная информация:

i2c между ардуино

#1

Сообщение dee-vize » 24.05.2016{, 20:22}

Всем привет!На днях попытался создать 2 пользовательских блока,один Master,другой Slave.Slave блок передаёт переменную integer в Master,но только до значения 255.Затем сбрасывается в 0.Может кто подскажет как исправить код?
Вложения
Master_receiver.ubi
(89.89 КБ) 79 скачиваний
Slave-sender-CO.ubi
(105.48 КБ) 86 скачиваний

Аватара пользователя
support
Супермодератор
Сообщения: 1900
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 787
Откуда: Астрахань
Имя: Сергей
Контактная информация:

i2c между ардуино

#2

Сообщение support » 24.05.2016{, 20:36}

Функция  Wire.write(data)  умеет отправлять только один байт (байт - число от 0 до 255). ДЛя отправки Integer необходимо его разбить на два байта
 
 

Код: Выделить всё

byte hB = highByte(data );
 byte lb = lowByte( data );
и отправлять их по очереди. На принимающей стороне собрать обратно

Код: Выделить всё

int data = word( lb,hb);
ну и естественно надо подумать как всё это синхронизировать. Вообще я думаю есть смысл попробывать перенести логику модбас на I2C, он так неплохо вроде вписывается, но это попозже
Автор программы FLProg.

dee-vize
Рядовой
Сообщения: 34
Зарегистрирован: 10.09.2015{, 12:13}
Репутация: 0
Откуда: Москва
Контактная информация:

i2c между ардуино

#3

Сообщение dee-vize » 24.05.2016{, 20:38}

Спасибо!Попробую переделать.

Аватара пользователя
Kocтик
Рядовой
Сообщения: 75
Зарегистрирован: 07.09.2015{, 23:51}
Репутация: 0

i2c между ардуино

#4

Сообщение Kocтик » 24.05.2016{, 23:40}

Я, делал так.

Ответить

Вернуться в «Другие»