Оглавление:

Часы из четырех букв с генератором слов Акафугу и вдохновляющими фразами: 3 шага
Часы из четырех букв с генератором слов Акафугу и вдохновляющими фразами: 3 шага

Видео: Часы из четырех букв с генератором слов Акафугу и вдохновляющими фразами: 3 шага

Видео: Часы из четырех букв с генератором слов Акафугу и вдохновляющими фразами: 3 шага
Видео: Что Произойдет Если не Разговаривать Целый Год?😱 #shorts #язык #еда 2024, Июль
Anonim
Image
Image
Часы из четырех букв с генератором слов Акафугу и вдохновляющими фразами
Часы из четырех букв с генератором слов Акафугу и вдохновляющими фразами
Часы из четырех букв с генератором слов Акафугу и вдохновляющими фразами
Часы из четырех букв с генератором слов Акафугу и вдохновляющими фразами

Это моя версия словарных часов из четырех букв, идея, которая возникла еще в 1970-х годах. Часы отображают серию четырехбуквенных слов, которые генерируются либо с помощью алгоритма генератора случайных слов, либо из базы данных связанных четырехбуквенных слов.

В этой версии используются более современные 14-сегментные светодиодные дисплеи и микроконтроллер Atmega 328p для отображения слов и времени. Поддерживаются два режима генерации слов. Первый использует алгоритм для генерации четырехбуквенных групп слов, которые, вероятно, будут настоящими словами, похожими на оригинал. Каждое последующее слово не связано с предыдущим. Во втором режиме используется реляционная база данных слов из «Эдинбургского ассоциативного тезауруса», документа словесных ассоциаций, основанных на ответах людей на вопрос о первом слове, которое приходит им в голову после того, как им было дано начальное слово, а затем процесс продолжается с ответным словом. База данных была адаптирована для генерации четырехбуквенных слов корпорацией Akafugu, которая создала файл данных размером 57 Кбайт, который хранится во внешней EEPROM для обработки Atmega. В результате часы используют время Unix в качестве случайного начального числа и генерируют строку связанных четырехбуквенных слов на основе человеческих ответов, а не какого-либо алгоритма.

Примечание. База данных слов Акафугу содержит некоторые слова откровенно сексуального характера и потенциально оскорбительные. Если вас это беспокоит, включите режим случайного выбора слова. Это также может привести к появлению некоторых оскорбительных слов, но, по крайней мере, не отобразит потоки связанных оскорбительных слов!

«Эдинбургский ассоциативный тезаурус» был составлен на основе ответов людей, живших в Англии в начале 60-х годов. Слово «отношения» определенно отражает эту предвзятость! Например, за словом «ЛУЧШИЙ» часто следует «ПИТ». Никакой очевидной связи не существует, если только никто не знает, что Пит Бест был оригинальным барабанщиком Beatles в начале 60-х! Есть множество других предубеждений в отношении британской культуры 60-х годов. Думаю, смотреть очень интересно!

Устройство также содержит модуль часов реального времени с адресацией I2C и резервной аккумуляторной батареей. Часы отображают 5 слов одного из двух выбираемых алгоритмов, а затем отображают время, дату, день недели и год. Часы и режимы работы устанавливаются с помощью трех кнопочных переключателей. Рабочие режимы хранятся в энергонезависимой EEPROM и сохраняются после сброса или сбоя питания. RTC продолжает работать около года после отключения питания с исключительной точностью с учетом температурной компенсации. Правильное время отображается автоматически при восстановлении питания.

Дополнительная функция - 107 цитат о времени, которые отображаются случайным образом каждые 10 минут. Эти цитаты прокручиваются справа налево по четырем персонажам, обеспечивая частую поддержку и вдохновение! Хранение фраз находится во внешней EEPROM с базой данных слов Akafugu. База данных занимает только 57 Кбайт из 64 Кбайт, доступных в устройстве, оставляя место для 107 фраз. Фраза «хвастовство» всегда отображается первой при первом включении часов в следующие 10 минут.

В устройстве используются обычные катодные 14-сегментные дисплеи (по 2 катода для каждой цифры), которые мультиплексируются с помощью процедуры обслуживания прерывания таймера, в результате чего четырехзначный дисплей обновляется с частотой 100 Гц. Каждый раз, когда выполняется ISR, он выключает предыдущий полусимвол, извлекает 7 из 14 сегментов для одного из четырех символов, включает соответствующие выводы сегмента и заземляет соответствующий катод. Дисплеи немного необычны, но у меня был большой запас, который я хотел использовать. Двойной общий катод уменьшает количество выводов, необходимых на цифру, с 15 до 9. На Atmega 328p выводов ровно достаточно, чтобы обеспечить прямое управление дисплеем без сдвигового регистра.

ЗАДАНИЕ: Измените код, чтобы использовать 4-символьный буквенно-цифровой светодиодный модуль Adafruit

Шаг 1. История

История
История
История
История
История
История
История
История

Оригинальные часы FLW были построены с использованием больших буквенно-цифровых неоновых трубок Burroughs B7971, собранных со списанных табло биржевых тикеров. Они похожи на цифровые газовые трубки того времени, но использовали 14-сегментный дисплей для формирования всех символов ASCII. Часы использовали дискретную логику, выбирая буквы из таблицы для формирования случайных четырехбуквенных комбинаций, которые были взвешены так, чтобы давать реальные слова.

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

Для каждой позиции простой счетчик BCD (0-9) (74LS90 IC) работал свободно, и счет регистрировался и удерживался от одного раза в несколько секунд до одного раза в минуту, в зависимости от настройки скорости. Затем снимок счетчика был применен к матрице декодирования диодов (с использованием около 150 диодов) для формирования символов.

Поскольку для каждой позиции были выбраны только десять (или восемь) наиболее распространенных букв, без учета буквенных комбинаций, может появиться много не-слов, например, FRLR, LREE, LLLL и т. Д.

Обратите внимание, что во второй позиции было только восемь букв, так как девятая и десятая буквы в выборке имели пропорционально низкую частоту, в то время как первая и вторая имели чрезвычайно высокую частоту, поэтому они были удвоены. Таким образом, 10 x 8 x 10 x 10 = 8000 перестановок. Буквы, которые были запрограммированы в первую модель 1973 года, показаны на одном из изображений выше.

Шаг 2: код и схема

Код и схема
Код и схема
Код и схема
Код и схема
Код и схема
Код и схема
Код и схема
Код и схема

Схема прилагается.

Часы могут быть построены с использованием любого Arduino на базе Atmega 328p.

Для использования с автономным Atmega 328p, как показано на схеме, необходимо использовать программатор ISP для программирования микроконтроллера через Arduino IDE. После программирования предохранители должны быть установлены с помощью следующей команды avrdude (WinAVR должен быть установлен). Замените com-порт и тип программатора. Самый простой - использовать Arduino в качестве программиста ISP. Google для подробностей.

avrdude -c arduino -P com13 -b 19200 -p atmega328p -U lfuse: w: 0xFF: m -U hfuse: w: 0xDF: m -U efuse: w: 0x05: m

Эти настройки отключают вектор сброса загрузчика, поэтому код сразу начинается с основного вектора кода. Предохранители также установлены для внешнего генератора 16 МГц. После сжигания вы не сможете снова запрограммировать микросхему, пока кристалл и конденсаторы не будут подключены, как показано на схеме, поскольку внутренний генератор по умолчанию отключен с этими настройками предохранителя.

Библиотека DS3231 Arduino должна быть установлена для обеспечения доступа к подпрограммам часов RTC. Необходимо включить поддержку времени Unix в библиотеке, раскомментировав строку "#define CONFIG_UNIXTIME" в файле config.h библиотеки DS3231 RTC. Время Unix используется в качестве начального числа для генератора случайных чисел, так что последовательности слов и фраз не будут повторяться каждый раз при включении часов.

Сам модуль часов DS3231 RTC - обычная разновидность, продаваемая на ebay. Модуль показан выше. Ищите тип с аккумулятором резервного питания.

В дополнение к запрограммированному микроконтроллеру также необходимо получить и запрограммировать последовательную EEPROM Microchip 24LC512 с базой данных слов Akafugu и списком фраз. Это делается с помощью простой схемы, построенной с использованием Arduino и SD-карты, отформатированной как FAT32, с файлом output2.dat на ней. Скетч считывает данные с SD-карты и записывает их в EEPROM. Подробности можно найти по следующим двум ссылкам. Обязательно используйте программный набросок и файл данных из этого руководства, так как в том, что находится по ссылке Акафугу, отсутствует база данных фраз. Следуйте процедуре по ссылкам.

Обзор базы данных Akafugu FLW

Инструкция по записи файла данных в EEPROM

Шаг 3: Настройка и управление часами

Для настройки часов используются следующие комбинации кнопок:

Установка часов: удерживайте кнопку 1 во время нормальной работы.

Установка минут: удерживайте кнопку 2 во время нормальной работы. Вторые автоматически сбрасываются на «00».

Сброс секунд на ноль: удерживайте кнопку 3 во время нормальной работы, отпустите для синхронизации с началом новой минуты

Установить месяц: удерживайте кнопки 1 и 2 вместе во время нормальной работы

Установка даты: удерживайте кнопки 1 и 3 вместе во время нормальной работы

Установить год: удерживайте кнопки 2 и 3 вместе во время нормальной работы.

Установите день недели: удерживайте кнопки 1, 2 и 3 вместе во время нормальной работы

При первом включении устройства режимы работы быстро отображаются до начала генерации слова:

«EE» означает, что была обнаружена внешняя EEPROM I2C, содержащая базу данных слов Akafugu и список фраз.

«NOEE» означает, что EEPROM не обнаружен. Устройство возвращается к генерации случайных слов без отображения фраз.

«CK» означает, что время и дата отображаются после отображения 5 последовательных слов.

«NOCK» означает, что время / дата выключены. Непрерывно отображается непрерывный поток слов, прерываемый фразами каждые 10 минут.

"RND" означает, что используется режим генерации случайных слов.

«REL» означает, что используется режим создания реляционной базы данных слов «Акафугу».

Чтобы изменить и сохранить режимы, отключите часы и снова подключите их, удерживая одну из указанных кнопок. Затем отпустите кнопку. Новый режим сохраняется и отображается:

Кнопка 1: переключить и сохранить режим генерации случайных или реляционных слов.

Кнопка 2: включение или выключение отображения даты / времени после 5 последовательных слов

Рекомендуемые: