Поиграем-2. Страдания вокруг кубика или «между первым и вторым перерывчик мал-малым».

Ынтыль_Тыгдым
Идет загрузка
Загрузка
25.12.2018
2063
26
печатает на Anet A8
Творчество

Подпишитесь на автора

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

Отписаться от уведомлений вы всегда сможете в профиле автора.

38
Доброго здоровья вам, господа тудэевцы!

В предыдущем посте я обмолвился, что товарищ мой, которому я похвастался какую мы хрень с внучариком замутили, возжелал поиметь что-то подобное для игры в «тихие» нарды. И я ему пообещал сделать. Скромнее надо было быть, однако. Я же думал, что тут делать то? Щас я быстренько… А вот быстренько то и не получилось. Короче, как говорят одесситы - «Я имею Вам кое-что сказать…»

Раз в конструкции будут сразу два кубика, то я взял свою любимую ардуино нану (у неё дофига пинов) и прикинул, что удобно будет для индикации использовать порты D и C.
Во-первых, потому, что у каждого можно, не замудряясь особо, задействовать семь пинов - с нулевого по шестой. Будет просто написать подпрограмму вывода выпавших чисел. Кинул в порт байт и вся любовь.

А во-вторых, легко будет развести печатную плату. От одного порта - в одну сторону, от другого – в другую. Как говорится, «мальчики – налево, девочки – направо».

В скетчапе (гусары, молчать!) спроектировал будущую конструкцию. Два дня кайфовал пока проектировал. Смоделировал платку, ардуинку, кнопочку, аккумуляторы, светодиодики. Расставил всё как надоть. Получилось, на мой взгляд, очень даже не плохо. Всё на одной печатке, никаких проводов, ну, разве что от батареек да кнопки, ровным счётом три провода. Короче, мне понравилось.
Кстати, тут на рисунках размеры в десять раз больше. Я, когда проектирую свою мелочёвку, всегда так делаю, а потом масштабирую на 0.1, иначе скетчап некорректно всякие закругляшки обрабатывает, дырки делает. Ну, блин, не «Левша» он, блох подковывать – это не его специализация. Вот и приходится выкручиваться.

Воодушевившись достигнутым результатом, решил на брэдборде схему не собирать и не отлаживать. Ну, типа, я же крутой, а сразу развёл печатку, накатал её ЛУТ-ом и забросил в бульбулятор.
И когда платка была протравлена и залужена, то есть совсем готова, я понял, что малость пролетел. Как говорится – «поспешишь – б..дей рассмешишь». На пин А6 дорожку то я не туда завёл! Первый косяк, однако.
Запаял светодиоды. Собрался ставить резисторы. Оба! Второй косяк. Места для установки резисторов не предусмотрел. Порезал дорожки, запаял резисторы. Под сенсор и под светодиоды (снизу) наклеил изолирующую плёночку. Осталось запаять нану и можно писать скетч.
Вот тут-то меня и поджидал третий косяк. Если запаять так, как было задумано, чтобы влезло в коробочку, то штекер в USB разъём не воткинается! Плюнул я на это, подрезал его и стал писать прогу.
Первым делом по очереди поморгал всеми диодами. Чтобы определиться «где какая рыба и почём». Ага, вот он, четвёртый косяк – диод, подключенный к D6, не желал светиться ни под каким видом. Как же так?! Ведь написано же там – 29-PC6-RESET-PCINT14, и я его объявляю как «выход», а он, сцуко, не «выходит»! Ну, никак. Толи загрузчик воду мутит, толи …?? Если он только на RESET заточен, то какого фига его объявлять как PC6? Погоревал я по этому поводу, плюнул второй раз и запаял его на D9, потому как разбираться с этим мне совсем не хотелось. Господа тудэевцы, если кто знает причину этой подлянки и как её побороть, плиз, научите уму-разуму.

Поморгав диодами, я понял, что ставить в конструкцию диоды разного цвета, это «чревато боком». Оказалось, (ну надо же, какая неожиданность, ну кто бы мог подумать!), что при одинаковом токе они светятся с разной яркостью и ставить их в одну конструкцию стрёмно. Ярче всех горели синие диоды, и я решил оставить их.

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

Всё. Картина Репина – «Приплыли!» Сразу вспомнился закон Мерфи, который гласит: «Необходимость в изменениях, которые совершенно необходимо внести в прибор, всегда наступает после того, как его изготовление почти закончено.» Есть, правда, ещё и закон корректировки: «Информация, ведущая к обязательному изменению проекта, поступит к автору этого проекта тогда и только тогда, когда чертежи уже выполнены.» Ну, прямо мой случай. А вот не надо было выпендриваться и думать, что очень крут. Собрал бы всё на монтажке и отладил, и косяков бы не было.

Пошевелив мозговой извилиной, я понял, что всё решается очень просто. Надо только всё перевернуть. Сенсор, плату и ардуину. Тут же переразвёл платку, накатал, собрался травить. А травить решил не в медном купоросе, а в перикиси водорода с лимонной кислотой. Он травит очень быстро. Думаю, платочка маленькая, одного пузырька перикиси хватит. Вылил в кружку, замутил раствор, вылил в бульбулятор и жду. Потом опять жду. Потом снова жду. Пузыри идут, а плата не травится, хоть ты сдохни! И чёта те места, которые я корректирующим карандашом замазывал, они вроде как смылись? А хочется, чтобы протравилось побыстрее. Для ускорения сего процесса рекомендую «ускоряющую мантру». Надо петь на всем известный мотив - «Тра-а-а-а-вись платка мала и велика!» Сижу это я, значицца, пою, а тут заходит мой товарищ и говорит:

- Ты что тут, водку пьянствуешь и безобразия нарушаешь?

- Да какую, нафиг, водку, вот плату травлю.

- А чем травишь? У тебя тут такой штынк стоит, аж в коридоре с ног валит!

Подходит к бульбулятору и нюхает.

- А зафигом у тебя там спирт? Плату промываешь?

- ????!!! Травлю!

Я тоже понюхал – блин горелый, точно – спирт! Тут то до меня и дошло, почему она не травится. Спирт у меня в таком же флаконе был, что и перикись, вот я и перепутал. Ну что, поматерился на себя, что испортил флакон спиртяжки, и разбодяжил новый раствор. На этот раз всё получилось по уму. И быстро.

Дальше всё пошло без косяков. Запаял новую платку, ардуинку и сенсор.
Напечатал понравившимся мне цветом PLA три части корпуса. Дно и бок заполнение 30%. Верхняя крышка – 100%, чтобы не засвечивались соседние дырдочки. Никакой постобработки не делал. Только облой срезал и всё. Лень потому что. Ещё хотел палец на верхней крышке чем-нибудь черным залить. Дунул на бумажку нитрокраски, иголочкой аккуратненько маленькую капельку в канавку положил, а она, зараза такая, по внутренним пустотам растеклась и испортила весь внешний вид. Перепечатал и решил, что лучшее – враг хорошего. И так всё получилось круче фабержовых яиц.

Из белой жести от банки из-под сгущёнки вырезал контакты и воткнул их в прорези корпуса.
Ну и запаял те самые последние три провода и прикрутил плату к корпусу винтами М2.
Вот такая, в итоге, получилась фиговина. Как и в прошлом варианте, после включения показывается оставшийся заряд батареек, ход игрока сопровождается демкой «кручения» кубиков. «Ходить» можно сразу, не дожидаясь погасания индикации. Выпавшие числа держатся на индикации 8 секунд. Долго, согласен. Это для начинающих нардистов и детей. По истечении 8 секунд индикация гасится. Если не было хода в течение 30 секунд, то на 0,3 секунды вспыхивают по светодиоду с обеих сторон, типа, «вы там что, дрыхните что ли, или забыли выключить ценный девайс?».

На этом можно было бы и закончить моё длинное и утомительное повествование, но пытливые умы тудэевцев наверняка возмутятся и скажут: «А вопрос сисег потребления не достаточно раскрыт!», и будут абсолютно правы.

Итак, пара слов о потреблении.

В конструкции, для уменьшения размеров, я поставил батарейки AG13. Они, кстати, и определили высоту коробочки. Конечно, можно было бы их положить на дно корпуса, уменьшив тем самым высоту, но тогда пришлось бы мудрить с отсеками под них, с контактными ламельками, с крышечкой и т.д. А я, повторюсь, человек ленивый. Даже моя бабушка, царствие ей небесное, говаривала: «Лень то, ищщё вперёд тебя родилась». И это правда. Так вот про батарейки. AG13, если верить инету, имеют ёмкость 145 мА/час. Я померил ток, потребляемый от USB разъёма. В режиме ожидания, когда ничего не светится, он равен 24 мА. В максимуме, когда на кубиках 6:6, – 42 мА. Конечно, для таких пендюрочных батареек это дофига. Я отключил всё «лишнее» на плате ардуино: сдул все четыре светодиода, стабилизатор пятивольтовый и оторвал от питания шестнадцатую ногу переходника USB-COM - CH340G. В итоге, в режиме ожидания, от батареек, потребление составило 9 мА, а при счёте 6:6 – 24,5 мА. Неплохая «прибавка к пенсии». Получается, при максимальном токе, ёмкости батареек хватит почти на 6! часов непрерывной работы? Тут за три то часа наиграться можно так, что потом от усталости со стула упадёшь. Или я не прав? Что-то мне про 6 часов не очень верится. Во всяком случае, практика – критерий истины. Отдам товарищу на испытания, а он потом скажет, на какое время хватило батареек. Кстати, в цепь питания диодов я поставил резисторы на один килоом. Наверняка можно поставить и большее сопротивление. Если будет желание – попробуйте.

Ну, вот и всё. Терпеливым тудэевцам, дочитавшим мой опус до конца, большой спасиб.

Желающим воплотить мою конструкцию «в металле» - прошу в 3D модели.

Всем здоровья и весёлого Нового Года!

Подпишитесь на автора

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

Отписаться от уведомлений вы всегда сможете в профиле автора.

38
Комментарии к статье

Комментарии

25.12.2018 в 17:29
0

Уважаемый автор! Я рекомендую в качестве источника питания китайский аккумулятор от китайского же маленького вертолетика, или любой другой небольшой игрульки. Размер у них ненамного больше таблеточек, однако, на них сразу разъем приделан, так что если ответный сделать в батарейном отсеке то можно сразу же быстренько и подзарядить коли подсядет. Да и 'зарядок' для таких аккумуляторов полным полно на просторах китая.

Про липоль малой ёмкости я думал, но мне было интересно испытать именно AG13 батарейки. Липоли удобны, спору нет, только чтобы их не убить, забыв выключить устройство, нужен контроллер заряда-разряда. А это - место, объём, внешний разъём...

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

25.12.2018 в 17:54
2

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

Да, вы правы. У 'Шеш-беша' существует своя неповторимая энергетика и азарт и играть 'бесшумным кубиком' то же самое, что играть в домино и не стучать по столу. Скорее эта девайсятина подойдёт детям с их ходилками-бродилками с помощью фишек.

25.12.2018 в 20:47
1

Мякиши из поролона (жесткий мебельный) или пенопласта - бесшумные, правда сделать их надежными сложно (можно купить готовые для детей и перекрасить/перешить ткань сверху), но реально, чем они больше, тем проще, но играть такими не очень удобно.


p.s. окуните обычные кубики в прозрачный силикон, стряхните и оставьте сушиться на иголках (четыре штуки проткнуть пенопласт таким образом чтобы они упирались в точки - ямки на кубиках), будут не бесшумными но значительно тише, правда проверить надежность случайного числа тоже не помешает


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

25.12.2018 в 22:19
2

я ухитряюсь 'выпрашивать' нужные комбинации и оно таки прокатывает,а тут что сделаешь против генератора чисел??

25.12.2018 в 22:28
1

Как же так?! Ведь написано же там – 29-PC6-RESET-PCINT14, и я его объявляю как «выход», а он, сцуко, не «выходит»! Ну, никак. 
Что бы заставить его работать так, как хочешь, нужна другая 'черная магия'. Ардуино так вроде не может.
Если не изменяет склероз, пин reset через фьюзы переключается на порт.

25.12.2018 в 23:50
0

А мне понравилось, и конструкция и пост :))

26.12.2018 в 00:30
3

Про ресет - читать даташит на мегу. Если коротко, в ардуине так не получится и после переключения ресета на гпио придется шить высоковольтным программатором. Если совсем-совсем коротко, то нельзя использовать ресет как гпио.
По потреблению. Лучше сделать динамическую индикацию чтобы в каждый момент времени горел только один светодиод. Т.к. для такого устройства 6 часов - очень мало. Очень быстро окажется что батареек не напасешься. И да, мне кажется лучше будет после окончания индикации валить контроллер в глубокий сон и просыпаться по прерыванию на пине.

26.12.2018 в 10:24
0

Лучше сделать динамическую индикацию чтобы в каждый момент времени горел только один светодиод.


Имеете ввиду переключать светодиоды с очень высокой частотой, как бы 'вырисовывая' картинку? Хорошая мысль, кстати
валить контроллер в глубокий сон и просыпаться по прерыванию на пине.
зависит от контроллера, некоторые сложно просыпаются, хотя 8 битная атмега должна быстро просыпаться по идее.

27.12.2018 в 08:29
0

К сожалению, эта атмега, как мне кажется, не сможет проснутся по прерыванию. У них с режимами Low Power грустно все. Лучше посмотреть на AtTiny, у них получше

26.12.2018 в 06:39
0

Отличная реализация! Я попробую сделать на Nano. 
И вопрос к автору, где скечт? :)

26.12.2018 в 08:51
0

Ой, блин! Забыл совсем. Сейчас попробую добавить. Если не получится кину сюда.

26.12.2018 в 08:57
0

Добавил. Если что не так, то напишите, я выложу сюда. скетч не большой.

26.12.2018 в 09:43
0

Благодарю.

26.12.2018 в 13:35
0

Вот на месте автора я бы замутил с учетом приобретенного опыта проект 'Игральные кости 2.0'. Потому что ардуино как универсальная платформа для макетирования устройств - это вещь! А вот реальные кости лучше бы собрать, например, на Attiny2313a. У нее 10 ног (минус GND/VCC/RST - останется 7). Но для  динамической индикации (если включать светодиоды встречными парами - они же диоды, хоть и свето-) в матрице должно хватить 5 ног (3 строки x 2 столбца = 6 узлов).

Кнопку запуска можно повесить на прерывание INT0 - оно асинхронное, и если притянуть ногу через кнопку к земле - вытаскивает контроллер из любого режима сна.

Если не забыть отключить перед сном компаратор и WDT (и, опционально BOD вместе с VRef, см раздел - Minimizing Power Consumption в даташите) - потребление в режиме POWER_DOWN_SLEEP будет менее 0.01mA, что дает при любых раскладах автономность от года и более.

Да, вы правы, 'реальные кости' нужно делать по-другому. Но у меня не было задачи сделать что-то идеальное ни со стороны дизайна, ни со стороны схемного и программного решения. Моя игрушка скорее подходит под 'конструкцию выходного дня'. Так, для собственного развлечения, ну и сделать приятное детям или другу. А чтобы сделать 'по уму', то есть так, как вы сказали, надо быть достаточно продвинутым в программировании, писать на ассемблере, отлаживать в MPlab, да и в контроллерах разбираться, какой лучше в каждом конкретном случае подходит. А это уже не для меня. Как сказал Козьма Прутков - 'Нельзя объять необъятное.'

26.12.2018 в 16:07
1

Проверяли Вы насколько случайные числа - случайны, если да, то как?

В программе в setup_e есть вот такие строчки:
.....
  int voltage=readVcc();            // считываем напряжение питания
.....
  randomSeed(voltage);              // Перезапускаем генератор случайных чисел
..... 
Когда включается кубик, то идёт обращение к подпрограмме readVcc(), которая считывает с внутренних регистров напряжение питания и записывает его значение в переменную voltage. Это значение будет хоть немного, но отличаться, при каждом включении кубика. Это значение я подставляю в функцию randomSeed, которая: '... инициализирует генератор псевдослучайных чисел, заставляя его запускаться в произвольной точке своей случайной последовательности.' Поэтому, после включения кубика, не выпадают одни и те же значения чисел.
Вообще-то, обычно там пишу так: randomSeed (analogRead (0)), то есть подставляют значение, считанное с какого-либо свободного (не подключенного) аналогового порта. Но у меня все они заняты под индикацию.
Я пробовал и так:   randomSeed(millis()); , но как-то мне не очень это понравилось.

26.12.2018 в 20:28
0

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

27.12.2018 в 08:40
0

Так то бы и не плохо, вопрос питания уже выше обсуждался. А вот с разводкой платы - где разводили, что аж промахнулись? Для травления плат - перешел на сульфат аммония, тоже очень быстро, но не нужно никакого бурбулятора или чего либо ещё. Правда иногда текстолит подводит, но это уже тонкости

Разводил в SprintLayout5. Все мои конструкции не настолько сложны, чтобы пользоваться какой-либо более продвинутой прогой. Тем более, что я к ней привык, да и простая она и удобная.
По поводу травления.
Вы, наверное, хотели сказать персульфат аммония?


Он, конечно хорош, и травит быстро, но не дай бог попадёт на одежду - отбеливает моментально. И ещё, когда травишь в нём, то на меди образуются мелкие пузырьки, которые не хотят лопаться и препятствуют травлению. Приходится частенько вынимать плату из раствора и тогда пузырьки на воздухе лопаются. А в растворе болтать плату бесполезно. крепко они на меди держатся. Я для этого бульбулятор и сделал.

27.12.2018 в 15:10
0

можно без ардурины жи.
https://www.youtube.com/watch?v=R5RV8K4M71M
https://www.youtube.com/watch?v=SvychuLybY8
https://www.youtube.com/watch?v=dqTUqjX1K9I

27.12.2018 в 15:36
0

Прям интересный рассказ получился, приятно было почитать. Спасибо.

09.01.2019 в 09:57
0

Уважаемые коллеги! Все, кто скачал и собрался сделать сей девайс, скачайте 'толкачик' на кнопку включения, который я забыл положить в архив. STL файл называется  - 'Кнопка'

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Обдув на DEXP BOX-C-K2 (DDKUN C-K2)

Продолжаю ковырять прошивку Anycubic Photon S

Печать фигурки по технологии SLA

Парочка. Обратите внимание на руки.

Халявный фильтр-очиститель для филамента

Пробиваем потолок мелкотравчатости. 1:64