Pull to refresh

Айтишный сувенир на память своими руками

Reading time2 min
Views15K
сувенир своими рукамиЧто скрывать, все мы любим получить и делать различные подарки и сувениры. Особенно хорошо удаются неожиданные презенты и знаки внимания оказываемые без повода. И уж тем более памятными становятся те, что сделаны своими руками.

Об одном из таких подарков, изображенным на фото справа, и будет сей рассказ.

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

Cхема, код прошивки и комментарии под хабракатом.

Начнем со схемы:
Схема

Где К1 — ключ лишь «виртуальный», роль которого выполняют руки — либо они друг за друга держатся и цепь не разомкнута, либо — нет. VD1 и VD2 — самые обыкновенные ИК светодиоды, те самые что работают в пультах от ваших телевизоров. Именно их свечение не видно невооруженному глазу но очень хорошо заметно через камеру вашего мобильного телефона. Вместо них можно использовать обычные, скажем, красные светодиоды, но при этом теряется тот самый эффект неожиданности и удивления во время презентации этих чудны́х танцующих человечков.

На схеме хоть и присутствует множество резисторов, но критичных для работы всего три: R1 = R2 = 51 Ом и R3 = 10 кОм. Все остальные должны быть нулевого сопротивления или накоротко замкнуты. Емкость C1 = 0.1 мкФ.

Что же касается передачи сообщений азбукой Морзе, то тут без микроконтроллера (Atmel ATtiny13A) не обойтись. Именно он будет выдавать серии «точек» и «тире» на наши светодиоды. Для этого в программе сообщения хранятся в виде подготовленных массивов чисел, где каждый бит числа указывает на то, будет ли светиться заданный светодиод или нет. Для подготовки этих массивов был написана простенькая консольная программка принимающая на стандартный вход строку из закодированного азбукой Морзе сообщения в виде точек и тире и возвращающая массив чисел обратно в консоль.

Питание всей схемы осуществляется от всем нам знакомой, и, быть может, даже любимой батарейки CR2032.

Сама же прошивка микроконтроллера довольна проста и тривиальна. Приведу лишь ключевую функцию обработчика прерываний от таймера:

ISR(TIM0_COMPA_vect)
{
	static uint8_t tmp;
	if (!(PINB & _BV(HANDS))) // если руки замкнуты
	{
		if (hands_flag < 3) // фильтр от случайных замыканий
			hands_flag++;
		else
		{
			tmp = pgm_read_byte(&(str1[p1/8])); // читаем байт из pgm памяти
			if (tmp & _BV(p1 % 8)) // проверяем нужный нам бит
				led_on(LED1);
			else
				led_off(LED1);
			if(++p1 >= (str1_len * 8))
				p1 = 0;

			tmp = pgm_read_byte(&(str2[p2/8]));
			if (tmp & _BV(p2 % 8))
				led_on(LED2);
			else
				led_off(LED2);
			if(++p2 >= (str2_len * 8))
				p2 = 0;
		}
	}
	else // если руки разомкнуты
	{
		hands_flag = 0;
		p1 = p2 = 0;
		led_off(LED1);
		led_off(LED2);
	}
}

Где p1 и p2 — счетчики отображаемых в данный момент бит в наших сообщениях.

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


А теперь несколько фото готового сувенира:

сувенир своими руками

На некоторых из них даже видно руку счастливой обладательницы :)

сувенир своими руками

А еще, в качестве «охранников» можно использовать вот этих милашек из микросхем К155ЛА3 :)

Церберы

Ну или просто поражаться смелости альпинистов, карабкающихся изо всех сил на системник:

Альпинисны

Прошу прощения за качество некоторых фото и спасибо за внимание!
Tags:
Hubs:
+139
Comments47

Articles

Change theme settings