Костыль для мозга
В одной книге мигранты из других миров не признавались за самостоятельную личность. Им назначался опекун, который был обязан заботиться о таком вот «ребёнке». На работу мигрантов брали, но делали это забавным способом. Вначале смены такой работник надевал что-то вроде шлема, который отключал сознание, а телом начинал управлять искусственный интеллект. Приходишь на работу, и по сути спишь. Мозг отдыхает, тело напрягается.
Думаю, если устроить опрос и выставить такой гаджет, скажем, за 50 килорублей, то его попросту сметут с полок. Не сами люди, так их работодатели. А уж среди призывников, так вообще отбою бы не было. Надел в начале службы и проснулся уже отслужившим, с развитой мускулатурой и дыхалкой.
Сейчас такой шляпы в продаже нет. Лично мне она без особой надобности, ведь я работаю мозгами, но кто сказал что так будет всегда? Верно?
А есть-ли у фантастов что-нибудь для мозга? Оказывается да. В серии по мирам EVA описана такая штука, как заливка «баз данных» в мозг. Нужна она (вот так сюрприз) для получения профессиональных навыков в какой-либо сфере деятельности. Вместо ВУЗов и прочих школ. Берёшь кредит, оплачиваешь такую закачку какой-нибудь свежей базы, и идёшь устраиваться на работу.
Ну… в подобном деле есть жирный-такой минус. Представь, сколько преподавателей окажутся… не нужны? Кто их будет кормить? Куда их девать? С другой стороны, закачают какую-нибудь полезную базу и займутся чем-нибудь нужным.
Но есть одно «но»: подобных услуг тоже никто не оказывает. Хочешь учиться — трать время, напрягай мозг.
Вот так. Как говорил один сержант: Чтоб жизнь мёдом не казалась.
Хорошо… Т.е. не особо, но допустим. А если-ли что-нибудь менее совершенное, но помогающее проапгрейдить мозг?
Оказывается есть, и называется оно п-здюли будильник. Мозгу не прикажешь проснуться в точно заданное время. Хотя, у Штирлица вроде-бы получалось. И вот тут помогает техническое устройство, которое воздействует на орган слуха, который, в свою очередь, в норме никогда не выключается. Для тех, у кого с восприятием звука проблемы, есть световые будильники, которые фигачат пульсирующим ярким светом, заметным даже сквозь веки.
Да, это «костыль». Костыль для мозга. Он не добавляет знаний или способностей, но с задачей испортить тебе утро, справляется.
Мне сейчас будильник без особой надобности. К началу рабочего дня я по-любому проснусь. Либо Л. разбудит, либо голуби орущие на крыше (да, эти твари умеют издавать громкие, монотонные и противные звуки), или соседи. Будильник нужен только когда нужно проснуться рано.
А вот что мне нужно, так это «костыль», который будет концентрировать внимание на одной выполняемой задаче и не давать отвлекаться на другие. В этом плане эффективным оказался таймер в телефоне. Но у него есть минусы:
- Он сажает аккумулятор, поскольку приходится держать экран включенным.
- Он не позволяет прерваться и замерить время перерыва.
- Он не напоминает о своём существовании, пока я сам о нём не вспомню.
Таймер для работы, близкий к идеальному, показан в данном видео.
Но и тут есть минусы.
- Дисплей. Он показывает только одну временную шкалу. Мне же желательно две: обратный отсчёт и таймер перерыва.
- Кнопки. Я бы хотел иметь три: 15 минут, 30 минут, 60 минут. Ну или задавать интервал энкодером.
Работать это дело должно так.
При включении я вижу стартовое значение таймера работы, которое могу изменить.
Наверное лучше использовать потенциометр. Так значение будет «запоминаться» до следующего включения прибора.
При этом, шкала таймера простоя показывает ноль.
Далее, я нажимаю кнопку, и начинается обратный отсчёт таймера работы. Когда отсчёт заканчивается, звучит некий звуковой сигнал.
Если мне нужно прерваться, я жму кнопку, таймер работы останавливается и начинает увеличиваться значение таймера простоя. Каждые 5 минут активированный таймер простоя будет подавать звуковой сигнал. При нажатии кнопки, таймер простоя останавливается, и активируется таймер работы.
Длительное нажатие на кнопку останавливает все таймеры и сбрасывает их значения на стартовые.
Вот такое простое устройство мне нужно.
Что потребуется?
Давай смотреть из имеющегося среди хлама.
- Arduino UNO — есть.
- LCD дисплей для Nokia 5110, приспособленный для подключения к Arduino — есть.
- Кнопка — есть.
- Потенциометр — есть.
- Какой-нибудь динамик — подберу.
- Корпус… А вот тут ничего идеального. Значит, придётся изъёживаться.
Спалил два светодиода и один звучёк, угрохал несколько часов. И знаете что? Получилось! И скетч написался, и детали нашлись, и даже корпус почти подошёл.
Пины:
- D2, D3, D4, D6, D5 — дисплей
- D9 — подсветка дисплея
- D10 — кнопка
- D13 — спикер
Библиотеки:
- LCD5110_Basic.h
- GyverButton.h
Скетч:
#include <LCD5110_Basic.h> #include "GyverButton.h" #define BUTTON_PIN 10 // кнопка подключена сюда (BTN_PIN --- КНОПКА --- GND) #define MELODY_PIN 13 long jTimer = 0; long wTimer = 0; int jTimerMinPrint = 0; int jTimerSecPrint = 0; int wTimerHPrint = 0; int wTimerMinPrint = 0; int wTimerSecPrint = 0; long wTimerAlert = 0; long wTimerMaxAlert = 300000; int maxDelayTimer = 1000; int nowDelayTimer = 0; bool jTimerStarted = false; bool wTimerStarted = false; GButton butt1(BUTTON_PIN); LCD5110 myGLCD(2,3,4,6,5); extern uint8_t SmallFont[]; extern uint8_t MediumNumbers[]; extern uint8_t BigNumbers[]; void setup() { pinMode(MELODY_PIN, OUTPUT); myGLCD.InitLCD(); Serial.begin(9600); tone(MELODY_PIN, 1000, 300); } void button_presser() { butt1.tick(); if (butt1.isSingle()) { if (jTimerStarted == false && wTimerStarted == false) { jTimer = 3600000; jTimerStarted = true; tone(MELODY_PIN, 3000, 50); }else{ if (jTimerStarted == true) { jTimerStarted = false; wTimerStarted = true; tone(MELODY_PIN, 700, 100); }else{ if (wTimerStarted == true) { jTimerStarted = true; wTimerStarted = false; tone(MELODY_PIN, 3000, 50); } } } Serial.println("Single"); } if (butt1.isDouble()) { if (!jTimerStarted && !wTimerStarted) { jTimer = 1800000; jTimerStarted = true; tone(MELODY_PIN, 3500, 50); } Serial.println("Double"); } if (butt1.isTriple()) { if (!jTimerStarted && !wTimerStarted) { jTimer = 900000; jTimerStarted = true; tone(MELODY_PIN, 4000, 50); } Serial.println("Triple"); } if (butt1.isHold()) { jTimerStarted = false; wTimerStarted = false; jTimer = 0; wTimer = 0; tone(MELODY_PIN, 5000, 200); Serial.println("Hold"); } } void loop() { button_presser(); if (jTimerStarted == true) { jTimer--; } if (wTimerStarted == true) { wTimer++; wTimerAlert++; if (wTimerAlert >= wTimerMaxAlert) { wTimerAlert = 0; tone(MELODY_PIN, 700, 200); } } if (jTimer < 0) { jTimer = 0; jTimerStarted = false; wTimerStarted = false; tone(MELODY_PIN, 2000, 1000); } if (nowDelayTimer >= maxDelayTimer) { myGLCD.clrScr(); nowDelayTimer = 0; myGLCD.setFont(BigNumbers); jTimerMinPrint = ceil(jTimer/60000); jTimerSecPrint = ceil((jTimer - (jTimerMinPrint*60000))/1000); if (jTimerMinPrint < 10) { myGLCD.printNumI(0, 20, 0); myGLCD.printNumI(jTimerMinPrint, 35, 0); }else{ myGLCD.printNumI(jTimerMinPrint, 20, 0); } myGLCD.setFont(BigNumbers); if (jTimerSecPrint < 10) { myGLCD.printNumI(0, 55, 0); myGLCD.printNumI(jTimerSecPrint, 70, 0); }else{ myGLCD.printNumI(jTimerSecPrint, 55, 0); } myGLCD.setFont(MediumNumbers); wTimerHPrint = ceil(wTimer/3600000); wTimerMinPrint = ceil((wTimer - (wTimerHPrint*3600000))/60000); wTimerSecPrint = ceil((wTimer - (wTimerMinPrint*60000))/1000); if (wTimerHPrint >= 3) { jTimer = 0; wTimer = 0; jTimerStarted = false; wTimerStarted = false; tone(MELODY_PIN, 500, 5000); } if (wTimerHPrint < 10) { myGLCD.printNumI(0, 4, 24); myGLCD.printNumI(wTimerHPrint, 16, 24); }else{ myGLCD.printNumI(wTimerHPrint, 4, 24); } if (wTimerMinPrint < 10) { myGLCD.printNumI(0, 32, 24); myGLCD.printNumI(wTimerMinPrint, 44, 24); }else{ myGLCD.printNumI(wTimerMinPrint, 32, 24); } if (wTimerSecPrint < 10) { myGLCD.printNumI(0, 60, 24); myGLCD.printNumI(wTimerSecPrint, 72, 24); }else{ myGLCD.printNumI(wTimerSecPrint, 60, 24); } } nowDelayTimer++; delay(1); }
Вместо Arduino UNO взял Arduino Nano. У дисплея не работает подсветка. Похоже спалил когда-то давно.
Потенциометр не понадобился:
- одиночный клик устанавливает таймер на 60 минут,
- двойной клик — 30 минут,
- тройной клик — 15 минут,
- долгое нажатие — сброс всех таймеров.
Устройство запитал от USB-порта. Задняя стенка корпуса отваливается, но работе это не мешает.
В общем, есть что дорабатывать, да и протестировать тоже нужно. Но главное, я сделал этот «костыль» сегодня. Им уже можно пользоваться.
А теперь, спать! Я офф, друзья.
Напишите комментарий