Pull to refresh

Мучения с LED cube 4x4x4 (Arduino+74HC595)

Developing for Arduino *
Sandbox
Здравствуйте, дорогие хабравчане!

Наконец-то у меня есть, что вам рассказать и показать. Надеюсь, рассказ будет интересен не только мне.

Я расскажу о своём опыте работы с Ardiuno UNO и даже покажу, что у меня в итоге получилось. Если вам ещё не надоело подобное — добро пожаловать под кат.

Вступление
Я — учитель физики, информатики и астрономии в обычной средней школе. Успел поработать сисадмином-эникейщиком и с компами немного дружу, немного умею работать с сайтами, чуть-чуть понимаю php и MySQL. Но в программировании я чуть больше, чем нуль. Это должно немного уменьшить ваш гнев от чтения написанной мною программы, которую я чуть дальше покажу.

Весной 2014 года на областной конференции познакомился с LEGO WeDo и электронаборами ООО «ЛАРТ-М». Очень мне это дело понравилось, но всё это было не у меня.

Так получилось, что в начале учебного года мне предложили вести кружок робототехники с LEGO Mindstorms NXT. Даже отсутствие опыта работы с этими наборами не смутило директора областного дома детства и юношества. Пока, кажется, все мной довольны.

Я втянулся, мне стала нравится робототехника, но цены на Lego просто убивали. Тогда мне попалась вот эта статья. Я связался с фирмой, занимающейся поставкой этих наборов к нам и мы договорились о пробной покупке одного набора и дальнейшем сотрудничестве на ниве внедрения этого дела в школы. После получения этого набора в свои цепкие ручки, я начал пробовать и материться… Про проблемы, связанные с этим набором расскажу отдельно, если будет интересно. Главное не это.

Сначала я, конечно же, попробовал подключить датчики/кнопочки/диодики. Всё работало и сверкало. С одной поделкой я даже выступил на очередной областной конференции и «сорвал банк». А там всего-то было 2 фоторезистора, 2 светодиода, 1 динамик, 1 кнопка, 3 зеркала, 1 потенциометр (кнопок больше не было на тот момент) и 1 лазерная указка. Из этого получился небольшой дом, который делал следующее:
1) зажигать светодиод над входной дверью, когда на улице темно;
2) играть простенькую мелодию, когда нажимают кнопку звонка у двери;
3) зажигать светодиод в «комнате охраны», когда кто-то звонит в дверь (вдруг охранник в наушниках музыку слушает);
4) при выкручивании потенциометра на максимум (надо будет заменить второй кнопкой, благо теперь она есть) включалась сигнализация — внутренний фоторезистор начинал реагировать на прерывание лазерного луча от указки, через систему зеркал направляемую на него «с улицы». При пересечении луча в «комнате охраны» раздавалась сирена и загорался светодиод.
Страшный домик

После знакомства с этим наборомя начал активно читать про Arduino и, в конце концов, заказал на Aliexpress набор с Arduino UNO (точнее, китайским аналогом с диким именем) и кучкой всяких деталек. И тут Остапа понесло (с)…

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

Сначала собрал кубик из 27 светодиодов (кажется, по вот этой инструкции). Скетч первоначального варианта работы (как на видео) не выкладываю, т.к. надо его полностью переписывать, с учётом новых знаний. Но сначала он работал вот так:
LED cube 3x3x3

UPD: сейчас этот кубик управляется ИК-пультом: скетч, библиотека IRremote, библиотека LedCube. Сразу даю ссылки на файлы библиотек, чтобы не возникло проблем с разными версиями. Схему подключения нарисую чуть позже, простите.

Этого мне показалось мало, да и я поверил в свои силы. Поэтому решил собрать такой же кубик, но уже из 64 светодиодов. Дурное дело — не хитрое, особенно когда работать не надо. Сначала собрал кубик, используя несколько похожих инструкций (вроде этой и этой). Получилось вот так (скетч):
LED cube 4x4x4

Управлять таким кубиком было довольно просто. Проблема была в том, что все 20 имеющихся в моей Arduino UNO выходов оказались заняты светодиодами, а хотелось ещё подключить каких-нибудь датчиков и прочих прелестей.

UPD2: фото с кучей проводов
Первая версия. На Ардуинке заняты все 20 портов:

В результате некоторого количества убитых нервов и благодаря помощи хороших людей удалось переподключить мой кубик к ардуинке с помощью двух сдвиговых регистров 74HC595 (инструкция). За время написания программы удалось чуть лучше разобраться в языке, хотя некоторые вещи в моей программе до сих пор кажутся мне магией. Схема подключения кубика к Ардуино (сделано в Fritzing 0.9.1b.64. За качество простите, первый раз работал с этой программой).
UPD2: ещё несколько фоток с кучей проводов
Вторая версия. На Ардуинке заняты кубиком только 7 портов, но всё собрано на макетке и использовано около 70 проводов:



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



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

UPD2: Видео почти окончательной версии кубика

Да, забыл сказать. Жена у меня ведёт информатику в той же школе и, глядя на мои мучения, у неё родилась мысль об элективном курсе для 9 класса (пока всё в виде идеи и черновых набросков) по работе с ардуинкой. Будем надеяться, что из этого что-то получится.

Что ещё хочется сделать
1) подключить к кубику микрофон и превратить кубик в светомузыкальную установку. К сожалению, пока не очень получается. Микрофон из комплекта реагирует только если на него дуть (нужен усилитель, но пока нет его).
2) добавить разных эффектов кубику.
3) показать пользу от ардуинки на уроках физики — хочу измерять скорость объекта (2 фоторезистора + 2 лазерных указки), но пока это тоже не очень получается.
4) научиться нормально управлять серводвигателями и сделать, наконец-то, машинку! Пока при подключении двух серводвигателей управлять получается только одним, второй постоянно крутится в одну сторону.
5) научиться управлять ардуинкой по bluetooth. Модуль есть, но пока тоже не очень клеится работа с ним.
6) дождаться прихода с Aliexpress ещё нескольких датчиков/экранов и сделать ещё что-нибудь интересное.
7) заинтересовать учеников и хоть немного их этому всему научить...

UPD: добавил скетч для 3x кубика со ссылками на используемые библиотеки и схему подключения 4x кубика.
UPD2: добавил фоток и видео. Обновил схему подключения кубика 4x4x4 на гуглдиске.
Tags:
Hubs:
Total votes 42: ↑33 and ↓9 +24
Views 40K
Comments Comments 33