Светодиодные часы Shadowplay на платформе Arduino Uno

Вместо вступления




Итак, перед нашей командой из трех человек стояла задача: в очень сжатые сроки собрать небольшой аппаратный проект, желательно на платформе Arduino. Стоит оговориться, что до того момента со схемотехникой мы были знакомы, по большей части, в теории. А это значит — ни опыта работы с паяльником (практически), ни, тем более, опыта работы с Arduino.

Неожиданно мы наткнулись на статью, посвященную проекту Shadowplay Clock. Это настенные часы, разработанные командой венских дизайнеров, время по которым можно увидеть, дотронувшись пальцем до их центра. Светодиоды загораются в таком порядке, чтобы тень от пальца в центре показывала время. Было решено создать такие же (или очень похожие), но в домашних условиях. Вышеуказанная статья, как можно заметить, не содержит подробного описания проекта. Из всего этого следовало, что нам самим предстояло разобраться, как работает это устройство, и воплотить его в жизнь. Чем мы, собственно, и занялись.

Материалы


Для создания часов необходимы:

  • заготовки из ДВП
  • светодиодная лента на 60 диодов
  • Arduino Uno
  • модуль часов реального времени RTC DS1307
  • кнопка
  • макетная плата
  • сдвиговый регистр 74HC595 (x2)
  • 8-разрядный регистр-защелка 74HC573N (x8)
  • дешифратор 4-16 К155ИД3
  • инвертор с открытым стоком IN74HC05AN (x10)
  • блок питания

Приступим


Итак, алгоритм работы устройства:

  1. При подаче питания, светодиоды включаются в заданной комбинации. В оригинале Shadowplay загорались все светодиоды, но нам показалось, что интереснее будет запустить какую-нибудь комбинацию в качестве заставки.
  2. При нажатии кнопки (да, мы также отошли от оригинала и вставили в центр маленькую кнопку) считывается время из модуля RTC.
  3. Считанное время преобразуется в двоичный код (маску) и заносится в регистры.
  4. В зависимости от маски, зажигается необходимый диод.

Аппаратная часть


Когда мы, наконец, определились с идеей проекта, то первым делом попытались мысленно набросать примерные варианты схем для его реализации. Основной вопрос стоял в том, каким образом адресовать 60 светодиодов. Собственно говоря, ответ на этот вопрос и определял способ построения практически всей схемы.

Первый пришедший на ум вариант был связан с использованием дешифраторов. Составленная схема представляла собой каскад из четырёх дешифраторов 4 — 16 и одного дешифратора 2 — 4, и те и другие с входами разрешения дешифрации. Такой каскад позволял обеспечивать адресацию на 64 выхода, чего с избытком хватало для подключения 60 светодиодов.

Однако, затем встал вопрос касательно того, как при данной схеме одновременно заставить работать (адресовать) более одного светодиода (ведь нам требовалось обеспечить часы, как минимум, минутной и часовой стрелками). Здесь и проявился главный недостаток данной схемы — дешифратор не может по определению адресовать более одного выхода одновременно.

Этот недостаток заставил нас отказаться от идеи с каскадом дешифраторов. К тому же теперь у нас появилось ещё одно требование к будущей схеме – поддержка одновременной работы разного количества светодиодов.

Чтобы удовлетворить это требование мы подумали, что можно дать возможность каждому светодиоду хранить своё состояние. Для этой цели хорошо подходят регистры, где каждый отдельно взятый разряд соответствует состоянию одного из светодиодов. Мы решили использовать регистры на 8 разрядов, так как они более распространённые и более практичные. Соответственно в нашей схеме нам понадобится 8 таких регистров, чтобы обеспечить поддержку 60 светодиодов.

Дальше мы задумались о том, как осуществлять управление состоянием светодиодов с Arduino через регистры. Каждый регистр для нормальной работы должен получать все 8 бит целиком. Arduino Uno, конечно, предоставляет достаточно выходов для передачи нескольких бит одновременно, но такой подход будет не рациональным. Кроме того в схеме всего 8 регистров, а значит нужно их как-то адресовать. Для этой цели мы добавили в схему дешифратор и два 8 разрядных сдвиговых регистра, соединённых каскадом. Один сдвиговый регистр хранит 8-битую маску состояний, которая будет загружена в один из 8 обычных регистров, номер которого хранится во втором сдвиговом регистре. Соответственно, ко второму сдвиговому регистру подключён дешифратор. Для этих целей вполне хватит дешифратора 3 на 8.

Чтобы убрать инверсию с нужного нам количества выходов мы использовали две микросхемы инверторов КР1533ЛН1. Это, конечно, несколько усложнило схему.

Ещё одной задачей стало рабочее напряжение светодиодов равное 12 вольтам по сравнению с 5 вольтами логических микросхем. Предложенное решение заключалось в применении инвертора с открытым стоком. Такая микросхема исполняет роль ключа, который замыкает (при логической 1) или размыкает (при логическом 0) один из контактов светодиода с землёй, тем самым включая или отключая светодиод. Схема предполагает работу от 12 вольт, в соответствии с рабочим напряжением светодиодов, поэтому чтобы получить 5 вольт для логических микросхем в схему был добавлен стабилизатор КР142ЕН5А с двумя конденсаторами.

Некоторые входы определённых микросхем подразумевают константное значение на входе, поэтому были заведены на землю или источник питания. В данном случае это следующие входы:

  • Инверсный вход сброса MR в обоих сдвиговых регистрах через нагрузочный регистр подключён к выходу стабилизатора на 5 вольт.
  • Инверсный вход разрешения выхода OE в обоих сдвиговых регистрах подключён напрямую к земле.
  • Инверсный вход разрешения дешифратора E0 подключён к земле




Управление схемой осуществляется четырьмя входами (E1, SH, ST, DS). Назначение и уровни сигнала каждого из них более подробно рассмотрим ниже:

Вход E1 предназначен для включения дешифратора. В нашем случае, изначально на дешифраторе есть два управляющих входа E1,E0, и они оба являются инверсными. Выхода будет достаточно и одного, поэтому второй (E0) можно завести на землю. Состояние дешифратора “по умолчанию” – рабочее, пока на E1 не подать высокий уровень сигнала. Для того, чтобы сделать наоборот, мы подключили данный вход к инвертору. Без этого дешифратор может выдавать неверные управляющие сигналы регистрам, например, в момент обновления данных в сдвиговом регистре. Как уже говорилось, в схеме можно использовать дешифратор 3 на 8, у которого может быть один не инверсный управляющий вход, что позволит с лёгкостью решить все описанные выше проблемы без лишних проводов и паяльника.

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

Следующие три входа предназначаются уже для управления сдвиговыми регистрами. Начать стоит с самого простого — входа данных DS. Данный вход, как уже следует из названия, предназначен для передачи данных. Так как сдвиговые регистры в схеме соединяются каскадом, то DS представляет соответствующий вывод одного из них. Вход второго сдвигового регистра соединён с выводом последнего разряда первого регистра. В результате получается один сдвиговый регистр на 16 разрядов, из которых используются только 12 разрядов.

Вход SH является входом тактового импульса. На этот вход подаётся меандр, который отвечает за загрузку и сдвиг данных в каждом из регистров, соответственно данный контакт схемы соединяется с выводами SHCP обоих регистров.

Последний вывод ST служит защёлкой данных на выходах регистра. На данный вход подаётся импульс, однако подаётся только тогда, когда данные в сдвиговом регистре загружены окончательно и требуется зафиксировать их на выходе регистров. Только после подачи данного сигнала загруженные данные внутри регистра на первом ряду триггеров попадают на второй ряд триггеров и становятся доступны на шине. ST представляет собой контакт соединённый с выводами STcp обоих регистров.

Осталось пояснить разводку двух выводов сдвиговых регистров MR и OE. Первый вход (MR) отвечает за сброс данных внутри регистра. В данной схеме такая возможность не требуется, поэтому на данный вывод через нагрузку подаётся высокий уровень сигнала.

Второй вход регистра (OE) отвечает за отключение второго ряда триггеров внутри сдвигового регистра от шины, т.е., вход разрешения. Данная функция также не требуется, поэтому вывод заводится на землю.

Ещё один не описанный выше контакт предназначен для снятия уровня сигнал с кнопки в центре часов, схема кнопки типична и представляет собой нагрузку и ключ, в зависимости от положения которого на Arduino подаётся низкий или высокий уровень сигнала. В зависимости от состояния кнопки, часы работают либо в режиме заставки, либо в режиме показа времени.
Подключение к Arduino не имеет особенностей, за исключением того что вывод SH в идеале подключаться к цифровому выводу SCK. Остальные выводы схемы могут подключаться к любому из доступных цифровых входов общего назначения. В нашем случае подключение имеет следующий вид:

  • Arduino pin13 (SCK) – вывод схемы SH
  • Arduino pin 11 – вывод схемы ST Arduino pin 8 – вывод схемы DS Arduino pin 5 – вывод схемы E1 Arduino pin 3 – вывод кнопки Arduino pin GND – земля схемы (также подключается и к земле блока питания)
    После того как с проектированием схемы было покончено, началась работа над основой для часов.

    Были сделаны заготовки из ДВП: круг диаметром 36 см — задняя часть часов; и кольцо размерами 36 см (внешний диаметр) \ 26 см (внутренний диаметр) — передняя часть. В оригинале Shadowplay имеет диаметр круга 72 см, но нам хватило и 36. На круг приклеивается светодиодная лента, предварительно разрезанная на 60 частей (диод + резистор). По границе круга просверлили отверстия. Через них провода, подключенные к светодиодам, будут соединяться с макетной платой, которая находится на обратной стороне круга.



    На самом деле, светодиоды доставили немало головной боли. Просто приклеив их к поверхности круга, мы слегка не рассчитали. В итоге получилось, что тень светодиоды создавали недостаточно яркую. А потому пришлось потратить немало времени, чтобы «приподнять» их градусов на 50 — 60, подложив под каждый из них треугольные картонные подкладки. Да, 60 маленьких картонных треугольников. Поэтому замечание: не повторяйте наш горький опыт — запаситесь подкладками заранее.



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

    Макетная плата и общий вид устройства сзади.


    Да-да, нам стыдно.

    Изначально планировалось сделать точную копию Shadowplay. Однако способ, которым палец пользователя детектируется в центре устройства, не описывался в статье. Поразмышляв, мы пришли к выводу, что возможно для этих целей используется фоторезистор. Однако вскоре отказались от этой идеи, т.к. у фоторезистора возможны случайные срабатывания. Устройство может находится в условиях разной степени освещённости, а значит, не всегда сможет детектировать палец со 100% вероятностью. Предпочтение было отдано кнопке, которую мы и поместили в центр конструкции. Она обладает еще одним достоинством помимо надежности. Несмотря на ее небольшие размеры, тень от нее идеально подходит на роль стрелки часов. Таким образом, по желанию можно запрограммировать устройство на постоянную работу в режиме часов и без прикладывания пальца.

    После того, как вся схема была спаяна (долгие бессонные ночи кропотливой работы паяльником и пинцетом), выводы инверторов соединены со светодиодами, настал торжественный момент — первая попытка включить устройство. И, о чудо, диоды действительно горели! Но далеко не все. Поначалу появилось мнение, что что-то все-таки было неправильно спаяно. Однако, как выяснилось далее, причина крылась в другом. Так как при первом запуске мы подключили не все управляющие входы логических микросхем, а только лишь самые необходимые, то на оставшихся не подключенных входах образовалась неоднозначность в уровнях напряжения. К тому же, схема собиралась на макетной плате, с большой кучей проводов, а не вытравливалась.Провода были значительно подвержены электромагнитному излучению.Следовательно, при малейшем скачке напряжения из-за наводки на не подключенных входах логический элемент мог сработать. В результате любой предмет, находящийся в непосредственной близости от платы, вызывал ЭМИ и, соответственно, непредсказуемое поведение логики, а с ней и светодиодов.



    В итоге, проблема имела довольно простое решение. Достаточно было инициализировать входы всех логических элементов на схеме. Т.е. полностью подключить схему, чтобы не оставалось незадействованных входов, (именно входов, выходы не влияют на данную проблему, потому как логика работы микросхем от них не зависит), и все встало на свои места.

    Программная часть


    Итак, с аппаратной частью покончено (практически). Настал черед написания программы под Arduino. Для начала, необходимо сконфигурировать модуль RTC, а именно — занести в него время. Микросхема базируется на высокоточном модуле DS1307, интерфейс подключения — I2C. Внутренний календарь в нем рассчитан до 2100 года с учетом високосных лет. Благодаря заряду батареи модуль может работать автономно около одного года. Ниже показана схема подключения RTC к Arduino, обнаруженная на этом сайте. Здесь же была взята масса информации о модуле RTC.



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

    Код
    #include <Time.h>
    #include <DS1307RTC.h>
    
    char REG [8];
    tmElements_t te;
    int c,reset=1;
    
    void setup() {
      pinMode(13, OUTPUT); 
      pinMode(11, OUTPUT); 
      pinMode(8, OUTPUT);  
      pinMode(5, OUTPUT);  
      pinMode(3, INPUT);   
      Serial.begin(57600);
      
      //данный блок позволяет установить время в RTC используется однократно
      //te.Hour = 18;
      //te.Minute = 50;
      //te.Second = 0;
      //te.Day = 20; //день
      //te.Month = 4; // месяц
      //te.Year = CalendarYrToTm(2016); 
      //RTC.write(te);
    }
    
    void loop()
    { 
    if(digitalRead(3))                    // сработает, если будет нажата кнопка 
      {RTC.read(te);
       SetShadowTime(te.Hour,te.Minute,te.Second,2);        // рассчитать и установить время на часах   
       delay(900);
       reset=1;
      }
    
    else                                   // если кнопка не нажата, установить заставку
      {wait1();
       reset=1;
      }
                                             //сброс светодиодов 
      for(int j = 0; j<8 ; j++) SetUpLightByMask(j,0); 
       
     
    }
    
    
    //=======================================================================Вспомогательные функции
    
    void SetUpLightByMask(int RegNum, char LightMask) // функция подсветки светодиодов согласно полученной маске в заданном регистре
    {
      
      digitalWrite(5, LOW);
      digitalWrite(11, LOW);
      shiftOut(8, 13, MSBFIRST, LightMask);
      shiftOut(8, 13, LSBFIRST, RegNum);
      digitalWrite(11, HIGH);
      digitalWrite(5, HIGH);
    }
    
    void digitalClockDisplay() {  //Функция вывода времени из RTC в консоль, полезна при настройке RTC  
      RTC.read(te);
      Serial.print(te.Hour);
      Serial.print(" : ");
      Serial.print(te.Minute);
      Serial.print(" :");
      Serial.print(te.Second);
      Serial.print(" ");
      Serial.print(te.Day);
      Serial.print(" ");
      Serial.print(te.Month);
      Serial.print(" ");
      Serial.print(tmYearToCalendar(te.Year));
      Serial.println();
    }
    
    //Функция рассчёта теневых стрелок на часах, в качестве параметров принимает часы, минуты, секунды и в качестве последнего параметра комбинацию стрелок:
    //0 - только часы,1 - часы и минуты, 2 - часы минуты и секунды
    
    void SetShadowTime(int Hours, int Minutes, int Seconds, int param){   
      int h,hshift,m,s;
      for(int j = 0; j<8 ; j++) REG[j] = 0;
    
      if(Hours >= 12) Hours -= 12;
      h = Hours + 6;
      if(h >= 12) h -= 12;
        
      hshift = (int) Minutes / 12;
      
      REG[(int)(((h*5)+hshift)/8)] = REG[(int)(((h*5)+hshift)/8)] | 1<<(((h*5)+hshift)%8);
                 
       
      if(param == 1)
      {m = Minutes + 30;
       if(m >= 60) m -= 60;
       REG[(int)(m/8)] = REG[(int)(m/8)] | 1<<(m%8);
       }
    
      if(param == 2)
      {m = Minutes + 30;
       if(m >= 60) m -= 60;
       REG[(int)(m/8)] = REG[(int)(m/8)] | 1<<(m%8);
         
       s = Seconds + 30;
       if(s >= 60) s -= 60;
       REG[(int)(s/8)] = REG[(int)(s/8)] | 1<<(s%8);
      }
    
      for(int j = 0; j<8 ; j++) SetUpLightByMask(j,REG[j]);
      }
      
    void wait1() //один из вариантов функций заставки
    {for(int a = 0; a < 8; a++)
        {c=0;
         for(int b = 0; b < 8; b++)
          {c = c << 1;
           c = c | 1;
           SetUpLightByMask(a, c);  
           delay(10);   
          }
       }
      for(int a = 0; a < 8; a++)
        {c=255;
          for(int b = 0; b < 8; b++)
          {c = c << 1;
           SetUpLightByMask(a, c);
           delay(10);     
          }
        }  
    }
    


    Сборка


    Можно считать устройство практически готовым. Осталось лишь собрать все составные части вместе и запустить. Макетная плата и остальные запчасти (Arduino, RTC) прикрепились к задней стороне часов. Поверх круга со светодиодами закреплено кольцо, скрывающее детали реализации. Чтобы отвлечь внимание пользователя от несовершенств конструкции, кольцо расписали узором «а-ля микросхема». И наконец — включили в розетку. Результат ниже:

    Приносим извинения за качество фото.



    Вот небольшой пример того, какие комбинации можно запустить в качестве «заставки»:



    А вот, собственно, часы в рабочем состоянии:



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

    И да, предвкушая вопрос, который вы наверняка хотите задать. Как отличать часовую, минутную и секундную стрелки? Было немало споров на эту тему. Предлагались разнообразные решения данной проблемы: от разноцветной подсветки стрелок до поочередного включения стрелок (сначала часовая, через небольшой промежуток времени минутная, и т.д.). Однако, посмотрев на оригинал, мы поняли, что венские дизайнеры в принципе не озаботились данным вопросом. Было решено закрыть глаза на этот маленький недостаток. Вероятно, в будущем он будет устранен.

    Итог


    Что мы имеем?

    • Часы, как у венских дизайнеров, только своими руками.
    • Легким движением руки часы превращаются в элегантный светильник.
    • Возможность легко программно изменить очередность мигания светодиодов, что дает бесконечное разнообразие комбинаций.

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

    Спасибо за внимание!
Поделиться публикацией
Похожие публикации
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама
Комментарии 33
  • 0
    qTouch же. Воспользуйтесь микросхемкой китайской TTP223(либо готовым модулем). У самодельного есть преимущества: 1) можно установить подстроечный конденсатор необходимого диапазона емкостей для настройки чувствительности; 2) сенсорную площадку можно изготовить из фольги( мягкой жести) и установить в любом необходимом месте, но нужно учитывать, что провод, соединяющий сенсорную площадку и плату также является сенсором. У меня при тестах площадка 40х40 мм «пробивала» стол 15мм, и еще был небольшой запас чувствительности.
    • 0
      Я бы не стал делать сенсорику. Хочешь узнать время- беги к аппарату, тыкай пальцем, и, главное, не ошибись с ориентацией пальца. А то увидишь не то, что хотел. По-моему, кнопка- нормальное и самое простое решение.
      • 0
        Подскажите пожалуйста, какой нужен конденсатор, чтоб пробивало через стекло ~5mm?
      • +5
        Есть же адресуемые светодиодные ленты, гирлянды и даже отдельные диоды
        https://www.sparkfun.com/products/12025
        https://www.sparkfun.com/products/11020
        https://www.sparkfun.com/products/12877
        (на алиэкспресе такого тоже хватает, и ценник поменьше)
        • +5
          И если уж делать управление на регистрах — почему нельзя было просто поставить последовательно 8 сдвиговых регистров, которые управляли ли бы светодиодами напрямую?
          • +1
            Или даже max7219 — она спокойно адресует 64 светодиода в матрице, то же самое может сделать и с отдельными.
            • 0
              Max7219 адресует матрицу 8х8 или 8 семсегментных индикаторов. Здесь имеется матрица 64х1, что в любом случае потребует обвязки из микросхем. Другое дело, можно было все это сделать на 5 дешифраторах ИД3х4 +ИД4 и нескольких ЛП5Х15+ЛН3х30. Многовато мелкосхем, но площадь панели позволяет. Ток потребления вырос бы. Но монтажа было бы меньше. Здесь — дело вкуса разработчика.
              • +1
                А что мешает разложить 64х1 в виде отдельных рядов? 7219 же может отдельные пиксели подсвечивать.
          • 0
            Перемудрили конечно, но все равно молодцы!
            • 0

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

              • +5
                И я бы так не защитила диплом. Потому что это далеко не диплом, а маленький курсовой проект, собранный дома на коленке из подручных материалов. Да, мы студенты — нищеброды, которые не в состоянии купить сенсорную панель и прочие ништяки, зато вполне можем достать с антресоли кнопку, приделать ее, и устройство будет работать так же. Разбогатеем — наверняка докупим то, что посоветовали в комментариях, и переделаем.
                • –4

                  Вы изначально решили сделать дизайнерский проект. Дизайнерские проекты характеризуются тем, что они офигенны.
                  Ваши телодвижения могут быть не только наикрутейшими, но и прибыльными, если делать их по уму а не "из того, что было".
                  Хотите дешёвых решений:
                  1) Решение сенсорной панели http://www.bytecraft.com/Touch_Sensitive_Switch
                  Резистор на 0.5 мегаома и на 1 мегаом (поэкспериментировать) — 10 рублей, допустим
                  Фольга — ну, пусть 10 рублей. Плюс бумажка сверху.
                  2) Светодиоды без невероятной проводной обвески — WS2812B 60 шт по 5,35руб = 321 руб.
                  Ну и проволочки попаять от светодиодика к светодиодику.


                  пожалуй всё, если не считать ардуино и RTC модуля
                  Ну и да, к кнопочке я и не придираюсь и не придирался, кнопочка у вас офигенная. Сенсорная панель — я не думаю, что у венских дизайнеров она стоит, там что-то поумнее. Но ваша кнопочка супер, даже стрелочки создаёт.

                  • +1
                    Вставлю свои пять копеек. Дело не в дизайнерском проекте. У ребят была главная цель — проба пера. Да первый блин слегка недосолен, но он отнюдь не комом вышел! Устройство рабочее. Ошибки изучены. Версия 2.0 будет круче и аккуратнее. Можно будет показывать людям, не боясь выпустить из рук. А про прибыльные проекты (которые, безусловно, очень приветствуются) речи изначально не было. Тем более не в данном контексте — учёбы в ВУЗе, в весьма спрессованном по другим спец. предметам семестре. За предложения — спасибо. За критику по делу — тем более, спасибо.
                    • +2
                      Полностью согласен. Результат налицо: 1. Собрали устройство индикации без помощи китайцев ( схему придумывали САМИ), 2 отладили скетч для Ардуино и CRT модуля, 3. Сами разработали и применили визуальные эффекты для реализации возможностей микроконтроллера, 4. Весьма презентабельно оформили внешний вид устройства ( чувствуется рука дизайнера), 5. Научились паять и узнали, какие реальные проблемы ( борьба с наводками) встречаются на практике против теории, которую втюхивают в институте. 6 из недостатков: мало опыта в разработке конструктива, так программистам этого и не дают. Но это, — дело наживное. Вредом курсач смотрится неплохо. Зачёт!

                  • 0
                    прочие ништяки

                    Напиши в личку что интересует, готов оказать посильную мат. помощь.
                  • 0
                    А причём здесь «кандидата не дали» или же диплом? — Всё зависит от контекста, в котором решается поставленная задача.

                    • 0
                      Что касается обзора, так этим они практически не заморачивались. Им дали команду сделать что-то эдакое в аппаратно-программной реализациии, они предложили, их идею одобрили. И вот Вам результат: ShadowPlay Watch в простейшем виде.да ещё и РАБОТАЕТ! Респект команде!
                    • 0
                      Спасибо :)
                    • +5
                      Красиво, и венские дизайнеры действительно придумали красивую штуку. НО!
                      Да вы с ума сошли! Господи, у меня аж сердце от этой проводки заболело.

                      Используйте WS2812B. RGB адресуемый светодиод, стоит 6 рублей/штука.
                      Идёт три провода — питание, земля, данные. Линия данных — однопроводная, очень простая.
                      Разводка:
                      image

                      Плюс, можно цвета выставлять индивидуально на каждый светодиод в RGB палитре.
                      А модно вобще уже готовую WS2812 ленту купить, просто наклеил ленту и вперед часы запускать.
                      • 0
                        Только проблем себе придумали. Наводка какая-то… проводов триллион, сдвиговые регистры, боже мой!
                        • 0
                          Ребят, сделайте поправочку что эту статью/проект пишет/делает девушка студентка 19и лет.
                          • 0
                            Вот после того, как походишь по граблям самостоятельно, начинаешь понимать, что при решении любой задачи лучше сначала ознакомиться с чужим печальным опытом хождения по аналогичным граблям.

                            Вполне возможно, что изначально не додумали — что и как лучше делать. Но с учётом того, что ребята практически варились в собственном соку, без внешнего руководства — то вот такие грабли и насобирались по дороге…

                            В дальнейшем будут чётче анализировать возможные сценарии решений, прежде чем хвататься за паяльник…

                          • 0
                            Какая штука!!! А есть что-то подобное только не RGB и в меньшем типоразмера корусов?
                            • 0
                              Яркость свечения отдельных диодов не подходит. И контроллер за час работы греется до максимальной температуры. Да и стоит такое удовольствие, как цельный дипллом. На 40уе стипендии не сильно разгонишься. И, как говорил Великий сатирик Аркадий Райкин, «улучшать можно до бесконечности. До бесконечности можно улучшать»
                            • +1

                              В качестве тактильного сенсора можно использовать сенсорную панель
                              Делается одним резистором и АЦП ардуины. Реагирует на касание любой части тела, даже через бумажку, даже в латексных перчатках.

                              • 0
                                Часовую и минутную стрелки надо подсвечивать с разной яркостью.
                                имхо часовая более темная, минутная чуть светлее.
                                И циферблат имхо следовало бы нанести…
                                • 0
                                  Насчет разной яркости — вопрос спорный. Дело в том, что даже при максимальной яркости стрелки отчетливо видны только в темноте. Если сделать минутную светлее, боюсь, она вообще потеряется. Впрочем, тут можно поэкспериментировать с разными светодиодами.
                                  • 0
                                    Нужно циферблат делать не ровным а «впуклым» т.е. как блюдце, тогда стрелки будут яркими.
                                    Кстати если ширину засветки увеличить то стрелка станет более узкой.
                                    • 0
                                      Так ведь панель-то плоская, А для реализации Вашего предложения они с поставили светодиоды внаклонку. Это проще, чем выгибать края ДВП пластины.
                                      • 0
                                        понятно что плоская и под наклоном. Но как видим эффективность не очень хорошая.
                                        Зачем выгибать пластину?! Нужно применить уже готовое чтонить.
                                        Ну вот например взять одноразовую тарелку :)
                                • 0
                                  Молодцы! Перфекционизм — это хорошо, разумеется. Чтобы прийти к очевидному и более простому решению, нужно сначала пройти несколько раз по минному полю, и, пройдя, выдохнув, больше туда не соваться. Не написано все ли было под рукой или чего то заказывали. Хочется же начать здесь и сейчас, а то запал тю-тю. Будь все эти сопли упакованы в печатную плату и вид был бы лучше, НО даже в этом случае решение имеет право на жизнь. Просто хотелось секса с паяльником, видимо.
                                  • +1
                                    Это же светодиодные солнечные часы, человечество возвращается к истокам!
                                    • 0
                                      Да, только в качестве Солнца использованы светодиоды!

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.