Обмен данными между arduino по i2c. Библиотека Wire для Arduino для работы с шиной I2C. Альтернативная библиотека для работы с i2c дисплеем

Помощь 18.03.2019
Помощь

На сегодняшний день в России и СНГ в продаже имеется обширное количество игровых девайсов из различных ценовых сегментов. Нередко бывает так, что во время прихода в магазин, у покупателя просто разбегаются глаза от обилия игровых мышек, клавиатур и геймпадов. Для того, чтобы выбрать качественное и подходящее устройство, уже недостаточно узнаваемого бренда или изучения тех или иных характеристик приобретаемого продукта. Все чаще на первое место выходит дизайн устройств, который позволяет девайсу выделиться из себе подобных.

Передняя сторона коробки с игровой мышкой Mad Catz R.A.T.7

Бренд Mad Catz появился на российском рынке всего несколько лет назад. Однако, за это время компания стала популярной и узнаваемой среди игроков. Секретом подобной известности стал весьма своеобразный и запоминающийся дизайн выпускаемых компанией устройств.

Модельный ряд игровых мышек R.A.T. - это отдельная ступенька, являющаяся по сути визитной карточкой Mad Catz . У большинства игроков, при упоминании компании, всплывают в памяти именно продукты из этой линейки. На текущий момент времени в ней присутствует 8 устройств (от самого бюджетного до самого топового): проводные мыши R.A.T.3 , R.A.T.5 , R.A.T.7 , R.A.T. TE и беспроводныеR.A.T.9, Office R.A.T.m , Office R.A.T. , R.A.T.m .

Сегодня в железный цех прибыла игровая мышь Mad Catz R.A.T.7 . Тестируемое устройство, на наш взгляд, является оптимальным в линейке с точки зрения соотношения цены и качества. Но, обо всем по порядку.

Начнем мы, как и полагается, с описания основных характеристик модели Mad Catz R.A.T.7 . Их вы можете посмотреть в приведенной ниже таблице:

Технические характеристики мышки Mad Catz R.A.T.7
Тип мышки проводная
Совместимость PC
Интерфейс
USB
Цвет черный, белый, красный
Тип оптическая лазерная
Дизайн для правой руки
Регулировка веса
присутствует
Колесо прокрутки есть
Количество клавиш 8
Программируемые клавиши 8
Частота опроса
Время отклика
Ускорение
Разрешение сенсора 6400 dpi
Встроенная память 128 Кбайт
Другие особенности Позолоченный штекер; разрешение 100-6400 dpi; До 3 команд на 1 кнопку; настраивается масса с помощью пяти комплектных грузиков массой 6 г каждый; возможность подгонки мышки под руку конкретного пользователя

Вскрыв коробку обнаруживаем: непосредственно саму мышь Mad Catz R.A.T.7 , инструкцию по эксплуатации, сменные панели под ладонь (пластиковую и с прорезиненным покрытием), боковую подставку-крыло, подставку под мизинец, а также инвайт-код для игры World of Tanks . Подробную комплектацию устройства вы можете посмотреть на прилагаемой ниже фотографии:

Интересность и необычность дизайна мышки R.A.T.7 проявляется в отсутствии цельного корпуса. Алюминиевый каркас является его основой. А уже сверху на него крепятся те или иные панели и модули. В этом и кроется основное различие с большинством представленных на рынке манипуляторов. Важно отметить, что даже при такой компоновке элементов, во время использования устройства детали не скрипят и полностью отсутствует какой-либо люфт.

Mad Catz R.A.T.7 обладает огромным количеством возможностей в области подгонки мыши под вашу руку. Расскажем о некоторых из них. В устройстве присутствует система из пяти небольших грузиков, каждый из которых имеет вес шесть граммов. Изначально все они надеты на мышь. Однако, если вы вдруг захотите ее облегчить – можно снять часть грузиков, открутив внутреннюю штангу, расположенную в задней части корпуса.

Тем не менее, изменением массы мышки нынче удивить кого-то сложно. Система грузиков присутствует в немалом числе игровых манипуляторов. Главным же отличием Mad Catz R.A.T.7 от большинства из них является возможность изменять ширину, длину и форму панелей под ладонь и большой палец. Причем процесс замены данных панелей достаточно прост. Применив расположенную в задней части скрытую восьмигранную отвертку, можно изменить угол расположения панелей и расслабить их. Сдвинуть их возможно при помощи специального рычага.

Для того, чтобы изменить длину мышки, необходимо ослабить фиксирующий винт, после чего ослабить замок и изменить длину устройства. При этом длина Mad Catz R.A.T.7 может варьироваться от 10.7 см до 12.5 см.

Верхняя панель корпуса существует в двух исполнениях: soft-touch пластик (тестируемый нами) и глянцевый пластик. Какой вариант брать – решать вам, однако, мы бы порекомендовали покупать именно практически не пачкающийся soft-touch пластик. По опыту использования других устройств с глянцевыми поверхностями, скажем, что они достаточно быстро покрываются жиром от пальцев и их нужно чаще протирать.

Нижняя поверхность выполнена из алюминия. Также на ней уставлено четыре несъемных тефлоновых ножки, обеспечивающих очень плавное скольжение устройства по коврику.

Переходя к следующей части нашего обзора, стоит отметить, что даже после снятия всех грузиков мышка не станет невесомой и если вы любите сильно облегченные устройства, то Mad Catz R.A.T.7 не для вас. С другой стороны, если вы любитель тяжелых мышек – R.A.T.7 подходит как нельзя кстати. По возможностям подгонки устройства под габариты руки конкретного пользователя отметим, что среди всех ранее нами увиденных и протестированных продуктов, R.A.T.7 обладает максимальной кастомизацией. Единственным недостатком мышки можно считать то, что девайс абсолютно не подходит для левшей (панель под большой палец будет очень неудобна, если туда положить мизинец), но таковы издержки модульности.

На корпусе Mad Catz R.A.T.7 расположен ряд элементов управления (кнопок), причем находятся они в очень удобных местах и позволяют задействовать максимально возможное число пальцев. Всего таких кнопок 8 штук. С помощью специального софта вы можете запрограммировать любую из них на те или иные действия. Возможно, кому-то такого количества клавиш покажется мало (к примеру, для MMO геймеров), но для большинства игроков этого будет более чем достаточно. Особенно если учесть, что для любителей MMO-игр у Mad Catz есть ряд других моделей мышек.

Две из восьми кнопок имеют светодиодные индикаторы: кнопка изменения DPI и кнопка Mode. При изменении DPI, вы можете понять насколько большим или маленьким оно стало, просто посмотрев на четырёхпозиционный индикатор.

При нажатии на кнопку Mode, изменяется режим работы мышки (профиль), а вместе с ним меняется и цвет индикатора.

В целом, по кнопкам у нас нет никаких претензий. Расположены они весьма удачно, нажимаются легко и без скрипа, а процесс обучения элементам управления прошел достаточно быстро.

Колесико мышки имеет достаточно резкий ход и иногда (хоть и редко) имеет свойство к случайному прокручиванию. В играх это не будет заметно, а вот во время работы в браузерах или в ворде – это возможно будет иногда вас раздражать.

В начинке R.A.T.7 применен оптический сенсор Philips Twin Eye PLN 2032, который позволяет получить максимальную чувствительность 6400 dpi. Отклик составляет 1мс, а частота опроса 1000 Гц. Встроенная память мышки составляет 128 Кбайт.

В данном обзоре мы не будем подробно останавливаться на фирменном ПО, скажем лишь что, скачав драйвера с официального сайта , вы сможете настроить программируемые клавиши и различные игровые профили (активируемые кнопкой Mode). Для опытных игроков процесс изучения программы особых проблем не составит. Разобраться в ней можно за 20-30 минут, так как все необходимые элементы управления присутствуют в пределах 2-3 кликов.

В заключение, отметим что игровая мышь Mad Catz R.A.T.7 является отличной геймерской моделью, которая сочетает в себе футуристический дизайн, продуманную эргономику и качественные материалы при ее производстве. Разборный корпус и сменные панели наверняка понравятся всем тем, кто любит настраивать эргономику устройств под себя. При этом и цена мышки, среди подобных моделей от других производителей, достаточно невысока - 6200 рублей (на момент написания данного обзора). Конечно, не обошлось и без небольших недостатков: мышка не подходит для левшей, а также иногда самопроизвольно прокручивается колесико (хотя, возможно, это особенность именно тестируемого образца). В остальном же, мы смело можем рекомендовать Mad Catz R.A.T.7 как профессиональным игрокам, так и обычным людям, играющим время от времени.

Компания Mad Catz, специализирующаяся на разнообразной игровой периферии, — от клавиатур и мышей до гитар для игры Rock Band и стиков для файтингов — славится оригинальным подходом к рядовым, казалось бы, гаджетам. Спутать девайсы от Mad Catz с какими-то ни было невозможно. Сегодня мы поговорим о ярчайшем примере фирменного подхода канадской компании — мыши (для простоты — R.A.T. 7).

На первый взгляд кажется, что такая мышь просто не может существовать в реальности — создается ощущение, что отдельные ее элементы парят в воздухе. Она больше похожа на 3D-прототип составляющих ее элементов, а не на законченный манипулятор. Но нет, она существует, и более того — очень удобна.

Дизайн и конструкция

Кроме как словом «феноменальный» обозначить дизайн Mad Catz R.A.T. 7 (ироничное имя, не находите?) невозможно. Она вся состоит из ассиметрично стыкующихся между собой панелей, переключателей, кнопок, грузиков и поверхностей неясного на первый взгляд назначения.
По сути, это сборная конструкция, нанизанная на алюминиевую раму. Намертво закреплены две ключевые клавиши, боковые кнопки и подошва, а вот спинку можно менять, регулируя ее величину. Основная часть выполняется из глянцевого пластика, либо, как в нашем варианте — soft-touch. Это, кстати, лучший вариант — немаркий, нескользкий и приятный на ощупь. Добавим, что R.A.T. 7 выпускается в трех цветовых вариациях: помимо стандартной черной, также существуют белая и красная.

R.A.T. 7 также дает возможность менять длину, ширину и даже угол расположения панелей — все это осуществляется с помощью специальной отвертки, спрятанной в задней части мыши. Длина регулируется в диапазоне от 107 мм до 125 мм — мышь подойдет под любую руку.

Но главное, что способность к таким манипуляциям никак не влияет на качество сборки. Сколько ни верти отверткой, ни меняй панельки — никаких люфтов не почувствуешь; ничего не скрипит и не отваливается.

Несмотря на обилие сменных панелей, мышь рассчитана исключительно на правшей, поменять ключевые кнопки нельзя.

Весит в районе 240-270 грамм — точную массу определяете Вы сами, размещая в теле мыши грузики: их тут пять, каждый по шесть грамм. Даже если убрать все, пушинкой R.A.T. 7 не покажется; за счет металлического каркаса мышь получилась довольно увесистой. Для геймера это скорее плюс — так лучше ощущаешь движение, «отдачу». Но тем, кто любит облегченные, «реактивные» варианты, лучше поискать себе другую модель.

На теле мыши красуются сразу 8 кнопок: помимо стандартной пары с нажимаемым колесиком, есть кнопка изменения чувствительности сенсора, кнопка Mode, меняющая профиль и режим без захода в приложение, и набор программируемых клавиш. Рифленый металлический барабан также программируется через приложение, причем двумя возможными функциями — при повороте по часовой стрелке или против нее. Некоторые кнопки снабжены светодиодами, реагирующими на нажатия и меняющими свой цвет. Стоит сказать, что у R.A.T. 7 существует и специальная версия для MMORPG со значительно увеличенным числом программируемых клавиш.

Подошва выполнена из алюминия и снабжена четырьмя тефлоновыми ножками, позволяющими мыши легко скользить по поверхности.

В качестве сенсора используется Philips Twin Eye PLN 2032 с регулируемой чувствительностью от 25 до 6400 dpi — прекрасный задел для любого игрока. Частота отклика составляет 1000 Гц, время отклика — 1 мс. В мыши есть 128 Кбайт встроенной памяти для профилей.

— мышь проводная. Это игровой инструмент, в котором скорость ценится превыше всего. Длина USB-кабеля — 1,8 метра, и этого вполне достаточно. Оплетка тканевая, контакты позолоченные — все как и положено.

Программное обеспечение

Используется фирменное программное обеспечение Cyborg Smart Technology, загружаемое с официального сайта производителя. Есть и русская версия, причем русификация корректна.

Помимо обновления драйверов и получения поддержки через ПО, можно задавать значения программируемым клавишам, регулировать чувствительность сенсора по осям Х и Y, регулировать точность прицеливания и создавать профили. По сути, Вы можете записать несколько разных макросов со своим набором значений программируемых кнопок и привязать их к конкретным профилям-играм.
Приложение удобное — с исчерпывающей функциональностью и простое в освоении.

Заключение

золотая середина семейства R.A.T., одного из самых футуристичных и ярких в мире игровых манипуляторов. При этом функциональность ни в коей мере не принесена в жертву уникальному дизайну. Разборная конструкция позволяет подогнать длину, ширину и наклон панелей мыши под себя. Большое число программируемый клавиш (и один программируемый селектор) придется по вкусу любому серьезному геймеру. Лазерный сенсор высокой чувствительности (6400 dpi) не подведет. А удобное программное обеспечение со всеми необходимыми настройками прекрасно дополняет картину и делает Mad Catz R.A.T. 7 одной из самых интересных игровых мышей на рынке.

Решил я сделать текстовую панель оператора(HMI) и подключить ее по «квадратной» шине I2C к Arduino. Для этого разработал на основе микросхемы PCF8574P плату клавиатуры из 5 кнопок.

PCF8574P это расширитель портов, корпус DIP, работает по шине I2C. Приобрел я партию из двух таких микросхем за 0.94$ с бесплатной доставкой из Китая, таким образом одна штука стоит 0.47$. Покупка выгодная, так как в местных магазинах эти же микросхемы стоят больше 2 долларов за штуку.

Дисплеем HMI будет стандартный экранчик 1602, так же через платку FC-113 работающий по квадратной шине.

PCF8574P выслали, дали трек-номер и через 2 недели я их уже получил на почте.


Извлекаем из пластиковой трубки, вроде бы все нормально.


Однако, снизу на корпусе одной из микросхем есть следы загадочных термомеханических воздействий.


Природа этих повреждений мне не ясна, но очевидно, что во время пересылки они появиться не могли.

Долго думал над этой загадкой, пока меня не осенило.
Просто на склад продавца пробрался Люк Скайуокер, вдруг уменьшившийся до микроскопических размеров. Там он приметил один из расширителей портов, спутал с имперским шагоходом и принялся рубить его световым мечем. Тут зашла комплектовальщица, увидела эту картину и такая говорит: «Прекрати, Люк Скайуокер! Это не имперский шагоход, это микросхема PCF8574P, за которую уже уплочено из Запорожья».

Хорошо хоть, обе микросхемы при проверке оказались рабочими.

Приступаем к созданию самой клавиатуры по такой схеме.


В Layout 6.0 нарисовал одностороннюю плату.


Скачать файл с платой можно .

Плату травил перекисью водорода и лимонной кислотой.

В сети много рецептов травления платы перекисью.
Я делал такой раствор: 100 мл перекиси водорода 3%, 50 г лимонной кислоты, 3 чайные ложки соли. Баночку с перекисью подогрел в кастрюле с водой.

Погружаем плату в раствор рисунком вниз, как рекомендуют при травлении перекисью.

Пшшшшшш! Сначала процесс идет бурно.


Пс… Потом заметно стихает. Переворачиваем, смотрим на рисунок.


Красота.


Готовая плата выглядит так.




Адресные ножки микросхемы подключены на GND, поэтому адрес платы на шине будет 0x20.

Пишем программу для Ардуино.

#include
#include

#define led 13
#define ADDR_KBRD 0x20
#define ADDR_LCD 0x27

String str;
byte dio_in;
bool b;
bool key;

LiquidCrystal_I2C lcd(ADDR_LCD,16,2); // Устанавливаем дисплей

Void setup()
{
pinMode(13, OUTPUT);
lcd.init();
lcd.backlight();// Включаем подсветку дисплея
Wire.begin();

Wire.beginTransmission(ADDR_KBRD);
Wire.write(B11111111);
Wire.endTransmission();
Serial.begin(9600);
}
void loop()
{
Wire.requestFrom(ADDR_KBRD,1);
while (!Wire.available());
byte dio_in = Wire.read(); //читаем состояние портов PCF8574P
byte mask=1;
for(int i=0; i<5;i++)
{
key[i]=!(dio_in & mask);
mask=mask<<1;
}

Str=String(dio_in, BIN); //
Serial.println(str);

B=!b;
digitalWrite(led, b);

//
lcd.setCursor(0, 0);
lcd.print(String(key)+" "+
String(key)+" "+
String(key)+" "+
String(key)+" "+
String(key)+" "
);
delay(100);
}


Загружаем программу в Ардуино и подключаем его к созданной клавиатурной плате и дисплею.

Включаем, работает!


Мой HMI будет работать не просто с Arduino, а с ардуино-совместимым ПЛК . Если будет вдохновение и интерес читателей, напишу и про него как-нибудь.

Плюсы PCF8574P:
1. Минимальная обвязка.
2. Прост в работе.

Минусы PCF8574P:
У самой микросхемы не обнаружил, хотя и советую покупать у другого продавца.

На этом обзор микросхемы PCF8574P заканчиваю.
Но как опытный уже обозреватель, заранее отвечу на вопросы, которые обязательно зададут:

Почему в DIP корпусе? SOIC лучше.
При прочих равных, я предпочитаю DIP, мне с ними проще.

DIP и выводные элементы ставят только ламеры, все специалисты используют SOIC и SMD. Вот я паяю исключительно SMD и вообще я молодец.
Вы молодец.

Почему бы просто не купить на алиэкспрессе готовый модуль с дисплеем 1602 и клавиатурой 5 кнопок? Он тоже работает по I2C.
Его цена от 11 $.
Я же потратил:
Дисплей 1602 - 1.3 $
Плата FC-113 - 0.55 $
Микросхема PCF8574P - 0.47 $
Кнопки и колпачки - 0.7 $
Реактивы для травления платы - 0.3 $
Текстолит, резисторы и прочая мелочевка - бесплатно, из старых запасов.
Итого: 3.32 $
Но главное- на своей плате я поставил кнопки с квадратным толкателем что бы одеть на них красивые цветные колпачки.

Ого, всего одна микросхема PCF8574P стоит почти как целая плата FC-113!
Да уж…

Вы сделали все неправильно. Неправильно рисовали, неправильно травили в неправильном растворе и поставили неправильные кнопки. Я бы на вашем месте сделал все правильно.
Вы молодец.

Почему пятая кнопка так далеко от остальных?
Это специально так, они функционально различны. Те четыре это влево, вправо, отмена, ввод, а пятая будет SETUP.

Я ждал более захватывающую историю про Люка Скайуокера, вы меня обманули!
Я молодец.

С номиналами от 10 Ом до 1 МОм);

  • 2 резистора по 4,7 кОм (из того же набора);
  • соединительные провода (например, вот хороший набор);
  • компьютер с Arduino IDE.
  • 1 Описание интерфейса I2C

    Последовательный протокол обмена данными IIC (также называемый I2C - Inter-Integrated Circuits, межмикросхемное соединение) использует для передачи данных две двунаправленные линии связи, которые называются шина последовательных данных SDA (Serial Data) и шина тактирования SCL (Serial Clock) . Также имеются две линии для питания. Шины SDA и SCL подтягиваются к шине питания через резисторы.

    В сети есть хотя бы одно ведущее устройство (Master) , которое инициализирует передачу данных и генерирует сигналы синхронизации. В сети также есть ведомые устройства (Slave) , которые передают данные по запросу ведущего. У каждого ведомого устройства есть уникальный адрес, по которому ведущий и обращается к нему. Адрес устройства указывается в паспорте (datasheet). К одной шине I2C может быть подключено до 127 устройств, в том числе несколько ведущих. К шине можно подключать устройства в процессе работы, т.е. она поддерживает «горячее подключение».

    Давайте рассмотрим временную диаграмму обмена по протоколу I2C. Есть несколько различающихся вариантов, рассмотрим один из распространённых. Воспользуемся логическим анализатором, подключённым к шинам SCL и SDA.

    Мастер инициирует обмен. Для этого он начинает генерировать тактовые импульсы и посылает их по линии SCL пачкой из 9-ти штук. Одновременно на линии данных SDA он выставляет адрес устройства , с которым необходимо установить связь, которые тактируются первыми 7-ми тактовыми импульсами (отсюда ограничение на диапазон адресов: 2 7 = 128 минус нулевой адрес). Следующий бит посылки - это код операции (чтение или запись) и ещё один бит - бит подтверждения (ACK), что ведомое устройство приняло запрос. Если бит подтверждения не пришёл, на этом обмен заканчивается. Или мастер продолжает посылать повторные запросы.

    Это проиллюстрировано на рисунке ниже.. В первом случае, для примера, отключим ведомое устройство от шины. Видно, что мастер пытается установить связь с устройством с адресом 0x27, но не получает подтверждения (NAK). Обмен заканчивается.


    Теперь подключим к шине I2C ведомое устройство и повторим операцию. Ситуация изменилась. На первый пакет с адресом пришло подтверждение (ACK) от ведомого. Обмен продолжился. Информация передаётся также 9-битовыми посылками, но теперь 8 битов занимают данные и 1 бит - бит подтверждения получения ведомым каждого байта данных. Если в какой-то момент связь оборвётся и бит подтверждения не придёт, мастер прекратит передачу.

    2 Реализация I2C в Arduino

    Arduino использует для работы по интерфейсу I2C два порта. Например, в Arduino UNO и Arduino Nano аналоговый порт A4 соответствует SDA, аналоговый порт A5 соответствует SCL.


    Для других моделей плат соответствие выводов такое:

    3 Библиотека "Wire" для работы с IIC

    Для облегчения обмена данными с устройствами по шине I2C для Arduino написана стандартная библиотека Wire . Она имеет следующие функции:

    Функция Назначение
    begin(address) инициализация библиотеки и подключение к шине I2C; если не указан адрес, то присоединённое устройство считается ведущим; используется 7-битная адресация;
    requestFrom() используется ведущим устройством для запроса определённого количества байтов от ведомого;
    beginTransmission(address) начало передачи данных к ведомому устройству по определённому адресу;
    endTransmission() прекращение передачи данных ведомому;
    write() запись данных от ведомого в ответ на запрос;
    available() возвращает количество байт информации, доступных для приёма от ведомого;
    read() чтение байта, переданного от ведомого ведущему или от ведущего ведомому;
    onReceive() указывает на функцию, которая должна быть вызвана, когда ведомое устройство получит передачу от ведущего;
    onRequest() указывает на функцию, которая должна быть вызвана, когда ведущее устройство получит передачу от ведомого.

    4 Подключение I2C устройства к Arduino

    Давайте посмотрим, как работать с шиной I2C с помощью Arduino.

    Сначала соберём схему, как на рисунке. Будем управлять яркостью светодиода, используя цифровой 64-позиционный потенциометр AD5171 (см. техническое описание), который подключается к шине I2C. Адрес, по которому мы будем обращаться к потенциометру - 0x2c (44 в десятичной системе).


    5 Управление устройством по шине IIC

    Рассмотрим диаграммы информационного обмена с цифровым потенциометром AD5171, представленные в техническом описании:


    Нас тут интересует диаграмма записи данных в регистр RDAC . Этот регистр используется для управления сопротивлением потенциометра.

    Откроем из примеров библиотеки "Wire" скетч: Файл Образцы Wire digital_potentiometer . Загрузим его в память Arduino.

    #include // подключаем библиотеку "Wire" byte val = 0; // значение для передачи потенциометру void setup() { Wire.begin(); // подключаемся к шине I2C как мастер } void loop() { Wire.beginTransmission(44); // начинаем обмен с устройством с I2C адресом "44" (0x2C) Wire.write(byte(0x00)); // посылаем инструкцию записи в регистр RDAC Wire.write(val); // задаём положение 64-позиционного потенциометра Wire.endTransmission(); // завершаем I2C передачу val++; // инкрементируем val на 1 if (val == 63) { // по достижении максимума потенциометра val = 0; // сбрасываем val } delay(500); }

    После включения вы видите, как яркость светодиода циклически нарастает, а потом гаснет. При этом мы управляем потенциометром с помощью Arduino по шине I2C.



    Рекомендуем почитать

    Наверх