Arduino, интерфейс i2c

Здесь обсуждаем Arduino
Аватара пользователя
GhostX
Сообщения: 1112
Зарегистрирован: 07 дек 2015, 14:40
Откуда: Рязань

Arduino, интерфейс i2c

Сообщение GhostX » 08 дек 2015, 09:49

1) Подключение устройств на i2c шине требует подтягивающие резисторы к плюсу. В контроллерах на ардуинах есть возможность подключать такие резисторы через PULLUP. Правильно ли я это понимаю? Если да, то как это правильно прописать в скетче?
Или их можно использовать только условно на кнопках?
P.S. На i2c шину, хочу повесить часы ds3231 и lcd 1602 с i2c адаптером.

2) второй вопрос связан с адресацией.
На адаптере у lcd все перемычки отсутствуют А0 А1 А2
И на часикх они так же открыты.
Я еще чайник в этих мелочах. Прошу сильно не смеяться.:)
Интуитивно понимаю что для lcd прописывать
LiquidCrystal_I2C lcd(0x27,16,2);
Используемая библиотека, Указываем адрес в моем случае, это 0х27, количество символов в строке,количество строк
А как с часами обстоят дела? Что нужно писать и какую лучше использовать библиотеку? (сам под свои нужды не смогу написать) :)

Аватара пользователя
gurvinok
Сообщения: 1480
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: Arduino, интерфейс i2c

Сообщение gurvinok » 08 дек 2015, 11:50

У AVR подтягивающие резисторы включаются только в режиме чтения. То есть настраиваем вывод на чтение и записываем туда единицу. Лучше для I2C поставить внешние резисторы на 4,7К и не париться.

Адрес у микросхемы pcF8574 0100[А2][А1][А0][R/W] То есть без перемычек 0100000b = 0x20, а с перемычками 0100111 = 0x27.

По поводу библиотек на ардуино я чуть позже напишу, а то тут целая статья получится.
Если долго мучиться, может быть получится.

Аватара пользователя
GhostX
Сообщения: 1112
Зарегистрирован: 07 дек 2015, 14:40
Откуда: Рязань

Re: Arduino, интерфейс i2c

Сообщение GhostX » 08 дек 2015, 12:15

С резисторами вопрос полностью понятен.
С адресами не до конца. Скетч когда писал, где то нашел адрес именно с 0х27 без перемычек. И это так работает!
Потом на несколько дней отлучился и подзабыл, что к чему. Начал снова искать и нашел только противоречивую моему скетчу информацию. А именно 0х20. Не пробывал еще переписывать адрес. Но тот первый адрес точно работает.
На шине на тот момент весел только монитор, к ардуине прикручен температурный датчик dc11(буквы могу попутать синий такой есть еще внешне такие же но поточнее 22) и реле.
Как оно смогло заработать?
Или адрес не имеет значения, если устройство одно.
Или дублируется какой либо широковещательный пакет...?!
Последний раз редактировалось GhostX 08 дек 2015, 12:21, всего редактировалось 1 раз.

Аватара пользователя
gurvinok
Сообщения: 1480
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: Arduino, интерфейс i2c

Сообщение gurvinok » 08 дек 2015, 12:20

Я данные брал из документации на микросхему. А если посмотреть на китайскую плату, то можно увидеть что перемычки коротят на землю. Это значит что на ножках без перемычек висят единицы, что говорит об адресе 0100111, то есть в хексе 0х27. А если впаять перемычки, то будет адрес 0х20
Если долго мучиться, может быть получится.

Аватара пользователя
GhostX
Сообщения: 1112
Зарегистрирован: 07 дек 2015, 14:40
Откуда: Рязань

Re: Arduino, интерфейс i2c

Сообщение GhostX » 08 дек 2015, 12:23

С перемычками вопрос понятен.
Остались библиотеки. :)

И еще есть вопрос с переводом двоичных кодов в HEX
Но это тему совсем другую нужно создать.

Аватара пользователя
gurvinok
Сообщения: 1480
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: Arduino, интерфейс i2c

Сообщение gurvinok » 08 дек 2015, 12:45

Зачем. Берем виндовый калькулятор и переводим куда угодно.))
Если долго мучиться, может быть получится.

Аватара пользователя
GhostX
Сообщения: 1112
Зарегистрирован: 07 дек 2015, 14:40
Откуда: Рязань

Re: Arduino, интерфейс i2c

Сообщение GhostX » 08 дек 2015, 13:52

Это отдельная тема, тут не уместно, это писать.
Пока ехали китайские запчасти, я игрался с приемником и передатчиком на 433мгц
Сделал по инструкциям найденным в интернете грабер брелка от шлагбаума CAME содрал код, прикрутил передатчик, нашел скетч, подправил его немного и открыл свой шлагбаум. Забавно, но бесполезно.
И вот на этих играх любопытство в программировании только разгоралось.
Скетч, который я нашел написан был кем то явно на скорую руку и чтоб прописать свой код пришлось сплясать с бубном. Он в двоичном виде вводится. (Поймал же я с брелка в HEX формате. Скетч другой и для меня пока сложноват.)
И еще задом наперед и весь шиворот на выворот.
Да еще в оригинале код был 12 битным, а мой брелок выдал 24.
Как его переводить в коде?
Пришлось и со способом отправки разобраться и подправить.
Тут не один вопрос остался открытым.
Есть такие как: было бы интересно сделать брутус. С практической стороны, это конечно бессмысленно, 24 битный код перебирать, а со стороны самообразования, бесценно.

Аватара пользователя
gurvinok
Сообщения: 1480
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: Arduino, интерфейс i2c

Сообщение gurvinok » 08 дек 2015, 13:59

Ну битность кода к передаче отношение не имеет. На 99% передача восмибитная, а уже сам код собирается в МК. По поводу голубого зуба вот здесь я уже писал как это реализовать. Кстати реализовывать на голом МК намного интереснее и более гибче чем на Ардуино.
Если долго мучиться, может быть получится.

Аватара пользователя
GhostX
Сообщения: 1112
Зарегистрирован: 07 дек 2015, 14:40
Откуда: Рязань

Re: Arduino, интерфейс i2c

Сообщение GhostX » 08 дек 2015, 14:09

Перенесите последние сообщения в другую тему, она не связана с i2с протоколом ни как!
Нет у меня голубых зубов, только 433мгц прямо в эфир.
И битность похоже играет роль. Отправление идет не через протокол, а перебором сразу на передатчик.
А передатчик я полагаю должен быть тупым, и все что пришло на ногу "дата" улетело в эфир, на частотной модуляции с несущей частотой в 433Мгц.
Я попозже скетчи выложу.
Вложения
image.jpeg
Вот такой, только этот на 315, а мой на 433мгц
image.jpeg (47.27 КБ) 7310 просмотров

Аватара пользователя
gurvinok
Сообщения: 1480
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: Arduino, интерфейс i2c

Сообщение gurvinok » 08 дек 2015, 15:01

Да пусть тут висит, а то мысль потеряется. А если дальше развивать тему Ардуино и радиосвязь, то я прикрутил соответствующие ветки в железе и программировании.
Если долго мучиться, может быть получится.

Ответить