Есть у американцев такая игра - Саймон говорит.  А есть Саймон с цветами.

undefined

Местами имеет вполне семейный характер.  В свою очередь  в России эта  же игра известна далеко не всем. В  магазинах они есть но редко. Да и те что есть -  игры хасбро (ищите саймон свайп)  за лютые бабки. 

undefined

Ну да не суть важно. В рамках 1kB Challenge на Hackaday.com появился проект Tiny Game of Simon on an ATtiny13, который я повторил со второго раза. Тем кто не желает читать по английски, предлагаю по-русски. Все картинки и файлы взяты оттуда.

Строится эта мини игрушка на Attiny13 (неожиданно) и рассыпухе. Схема такая:

undefined

Сложного в ней ничего нет. Динамик на 42 Ома - это обычная пищалка с материнской платы. Все остальное по желанию. Видео (ниже) - автора. У него и тинька в DIP'e и элементы выводные и кнопочки с длинным штоком, чтобы все это в корпус поместить. Первый вариант у меня был примерно такой же, но пока он портился в хлорном железе, я подумал и переделал на вертикальные кнопки.

Плохо (перетравилось):

undefined

Хорошо и по другому:

undefined

Корпуса из вырезанной лазером фанеры у меня не планировалось и с такими кнопками держать-нажимать гораздо удобней. Нижняя часть в связи с этим покрыта пластификатом, во избежание, так сказать. Ну и светодиода оранжевого не нашлось, пришлось ставить синий, но все же он слишком прозрачный.

Теперь об оригинале (частичный перевод оригинальной статьи). Игра может работать в пяти режимах:

1. Когда игра запускается только с помощью кнопки сброса, надо запоминать и повторять возрастающую последовательность цветов и тонов. Чем выше уровень - тем быстрее игра. Если допустили ошибку, правильный светодиод моргнет три раза и сыграет музыка-анимация окончания игры. Если результат был лучшим, игра будет записана в EEPROM (а записан будет уровень на котором остановился и такая штука как seed, которая генерируется для случайности последовательностей) и сыграет музыка-анимация победы.
2. Если удерживать кнопку оранжевого цвета (у меня - зеленого) во время сброса, можно продолжить лучшую игру. Она начинается с максимального достигнутого уровня.
3. При удержании желтой (у меня - красной) кнопки во время сброса, можно начать лучшую игру с первого уровня.
4. Если красная (у меня - желтая) кнопка нажата во время сброса, лучший результат стирается, и начинается новая игра как в п. 1
5. При нажатии на зеленую (у меня - синяя) кнопку во время сброса, начинается воспроизведение псевдослучайной последовательности. Она может пиликать 3,5 часа, прежде чем начнет повторяться :)

Заумную часть про генерацию псевдослучайного числа приводить не буду (не дошло :) ). А по-простому: seed x[0] генерируется при помощи не подключенного АЦП, сторожевого таймера и RC осциллятора, и это дает большую долю вероятности непредсказуемости и неповторимости. Вот.

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