[Из песочницы] Мучения с LED cube 4x4x4 (Arduino+74HC595)

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

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

Вступление Я — учитель физики, информатики и астрономии в обычной средней школе. Успел поработать сисадмином-эникейщиком и с компами немного дружу, немного умею работать с сайтами, чуть-чуть понимаю php и MySQL. Но в программировании я чуть больше, чем нуль. Это должно немного уменьшить ваш гнев от чтения написанной мною программы, которую я чуть дальше покажу.Весной 2014 года на областной конференции познакомился с LEGO WeDo и электронаборами ООО «ЛАРТ-М». Очень мне это дело понравилось, но всё это было не у меня.

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

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

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

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

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

LED cube 3×3x3 [embedded content]

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

Управлять таким кубиком было довольно просто. Проблема была в том, что все 20 имеющихся в моей Arduino UNO выходов оказались заняты светодиодами, а хотелось ещё подключить каких-нибудь датчиков и прочих прелестей.В результате некоторого количества убитых нервов и благодаря помощи хороших людей удалось переподключить мой кубик к ардуинке с помощью двух сдвиговых регистров 74HC595 (инструкция). За время написания программы удалось чуть лучше разобраться в языке, хотя некоторые вещи в моей программе до сих пор кажутся мне магией.

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

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

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

© Habrahabr.ru