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


В изготовлении все вышло очень просто.

Необходимые ингредиенты:

1. Arduino — какая есть;
2. Светодиоды WS2812B (Я использовал кольцо — купил давно, сейчас решил применить);
3. Мод для танков. Мод для моего проекта написал товарищ Kotyarko_O с форума koreanrandom, за что ему отдельное спасибо. В архиве с модом приложены исходники;
4. Приложение для ПК. — в архиве исходники и приложение в папке bin.

Выглядит все это не очень красиво, к монитору приклеил на двухсторонний скотч.

image

НО! Деталей минимум. За код прошу строго не судить, он кривой косой :) Я программист копипастер :) Кому сильно не понравится, можете переделать под себя красиво и практично.

Код ардуино
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
  #include <avr/power.h>
#endif
#define PIN            6
#define NUMPIXELS      8
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
String ser;
int red = 0;
int green =0;
void setup() {
  pixels.begin(); // This initializes the NeoPixel library.
    Serial.begin(9600);
    while (!Serial) {
    ; // wait for port to be ready
  }
  Serial.setTimeout(100);
}

void loop() {
  if (Serial.available() > 0) 
  {
    ser = Serial.readString();
    if (ser != "end")
    {
      green = ser.toInt()*2;
      red = green-100;
      for(int i=0;i<NUMPIXELS;i++)
      {
        pixels.setPixelColor(i, pixels.Color(red,green,0));
      }
      pixels.show();
    }
    else
    {
     for(int i=0;i<NUMPIXELS;i++)
      {
        pixels.setPixelColor(i, pixels.Color(0,0,0));
      }
      pixels.show(); 
    }
  }
}


Программа для ПК, написана на C#

private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
}

private void timer1_Tick(object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
SerialPort serialPort1 = new SerialPort();
doc.Load(@«C:\World_of_Tanks\res_mods\0.9.17.0.1\scripts\client\gui\mods\mod_ArduinoHP.xml»);
string maxHealth = doc.DocumentElement.ChildNodes[0].InnerText;
string currentHealth = doc.DocumentElement.ChildNodes[1].InnerText;
string healthProgress = doc.DocumentElement.ChildNodes[2].InnerText;
serialPort1.PortName = «COM13»; //задаем имя COM-порта, с которым работает Arduino
serialPort1.Open(); //открываем COM-порт

if (healthProgress != "")
{
serialPort1.Write(healthProgress);
}
else
serialPort1.Write(«end»);
serialPort1.Close(); //закрываем COM-порт
}

Ну вот соответственно и все. Работает простейшим образом. Мод для танков складывает в xml файл всю необходимую информацию, а приложение для ПК в свою очередь читает xml и передает всю информацию ардуине, та в свою очередь управляет цветом.

P.S. Все это можно доработать, доделать, допилить, улучшить… Но уже хочется спать :)

P.P.S Всех с наступающим!
Поделиться с друзьями
-->

Комментарии (50)


  1. Zonzen
    29.12.2016 22:38

    А можно просто подключить комп к телеку philips с ambilight и искомый получать эффект везде и всегда.


    1. lenz1986
      29.12.2016 22:39
      +2

      Для этого надо иметь телек с ambilight, а он ощутимо дороже ардуинки. да и не променяю я сейчас свой монитор со 120гц на телек.


    1. ClearAirTurbulence
      29.12.2016 23:15
      +2

      В самом начале же написано — это не ambilight, а цветовой healthbar.
      Кроме того, в русском языке уменьшительно-ласкательный суффикс — "-ик". Извините.


      1. bastie
        31.12.2016 10:14

        "-ик", говорите? И как же будет уменьшительно-ласкательный "овраг", к примеру?


        1. agriiii
          31.12.2016 16:25

          овражИК


          1. Zonzen
            31.12.2016 17:23
            +2

            Вы плохо знаете русский язык.

            Чтобы правильно написать суффиксы существительных ЕК и ИК, надо просклонять слова.
            Если гласный выпадает, то надо писать Е, если не выпадает, то надо писать букву И.

            Например:
            овражЕк — овражка,
            сыночЕк — сыночка,
            мячИк — мячИка,
            карандашИк — карандашИка

            Что же касается телЕКа, то дело тут в корне «теле», а не «тел», поэтому именно телЕК.


  1. lenz1986
    29.12.2016 23:11
    +2

    Мдааа… Мне в итоге высказали про срач на столе, про плохое видео… И слили рейтинг.


    1. melchermax
      30.12.2016 00:44
      +3

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


    1. LikeCoolPerson
      30.12.2016 01:13

      +1, статья отличная


    1. MTyrz
      31.12.2016 23:42

      Понял, свой стол я здесь показывать не буду…
      Хорошая статья, не переживайте попусту.


  1. Rumlin
    30.12.2016 06:47

    Видео продемонстрировало только два состояния — зеленый и красный. В демках также работает?


    1. lenz1986
      30.12.2016 07:47

      На самом деле светодиод использован RGB. Соответственно цвет можно получить почти любой, но в моем случае в коде этого не реализовано


      1. Rumlin
        30.12.2016 11:36

        как-то мало информативно. Ожидал, что будет «зеленый-желтый-красный» и погаснет при отправке в ангар.


        1. lenz1986
          30.12.2016 11:40

          Видео не полное. Работает именно так как вы говорите. Зеленый — Желтый — Красный, а если выходишь в ангар то гаснет. Просто если снимать полное видео то оно слишком длинное.


          1. sviterov
            30.12.2016 12:22
            +1

            Таймлапс?


            1. lenz1986
              30.12.2016 12:38
              +1

              Сделаю красивую коробочку, упакую пучок проводов как продукт и сниму красивое видео как надо :)


          1. Rumlin
            30.12.2016 12:56

            Смонтировать. Особенно если реплеи поддерживаются, то выбрать для проигрывания тот, где потеря хп более заметна по цветам.


  1. maaGames
    30.12.2016 10:32

    Вот забацать что-нибудь похожее для Quake, я б сыграл.)


    1. lenz1986
      30.12.2016 10:45

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


      1. maaGames
        30.12.2016 10:54

        В электронике я рукожоп.(
        Но сделал «светомузыку» на смартфоне, чтобы он микрофоном слушал и в такт музыке подмигивал экраном.


        1. lenz1986
          30.12.2016 11:03

          Конкретно в этой реализации знать электронику не надо от слова совсем. Главное паяльник с правильной стороны уметь держать, и осилить спаять 6 проводков, по 3 с каждой стороны. :)


  1. bagdyunov
    30.12.2016 10:43
    +1

    Можно сделать эмбилайт по рамке монитора, и подсвечивать откуда снаряд прилетел.


    1. lenz1986
      30.12.2016 10:46

      Насчет этой реализации у разработчика мода я спросил, пока жду ответа. Да и для полной реализации надо прикупить ленту из таких светодиодов, а не одно колечко как у меня.


    1. p_fox
      31.12.2016 14:15

      О, хочу такую фишку для MWO.
      Там отображение направления откуда пришел выстрел, показывается узкими полосками.
      А разве нельзя просто считывать свет пикселей в определенном месте и просто дублировать на светодиоды?


      1. lenz1986
        31.12.2016 14:15

        Можно, но это из другой серии


  1. madf
    30.12.2016 11:54
    -4

    Я что-то уже ничего не понимаю, уровень статей на гиктаймсе скатился уже до такого уровня — жуть.
    Народ тупо как живую ленту выплёвывает и всё.
    Это я не говорю уже о качестве самого материала/идеи.


    1. lenz1986
      30.12.2016 12:00
      +3

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


      1. madf
        30.12.2016 12:59
        -3

        Ну для этого есть ЖЖ или просто соц сети.
        Я вот всё "мучился" не выкладывал, считал надо подготовить, аргументировать, интересно придумать, а оказывается можно вот так просто, что-то накидать из средничка. :D
        В этом конечно резон есть, не так обидно становится, когда начинают в комментах поливать всякие умники (включая меня).


        На счет качества: я конечно понимаю, что всё зависит от взятой основы, но и в этом можно было решить ряд задач, более радикально. А так по существу, какое-то вялое, еле заметное изменение цвета относительно картинки и вообще непонятно относительно чего красит. И надо было как-то особо сильно не лениться и сделать хотя бы на 3 стороны по одному WS… а то эффекта никакого.


        1. lenz1986
          30.12.2016 13:14

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


    1. lenz1986
      30.12.2016 12:04
      +1

      А насчет качества идеи и реализации… Ну сделаю я красивую коробочку, оформлю это как реальный продукт, а практический толк от этого? Вероятность того что кто то повторит его в таком виде крайне мала, да и большая часть людей сразу начнут думать… 3D принтер… лазер… а у нас нет… и с такими мыслями проходить дальше. Я и сам точно так же читал подобные статьи. У меня не было доступа ни к чему… Хотелось но возможностей не было. ДА сейчас у меня есть почти весь парк техники, и могу сделать все что угодно. Телефон который в моей старой статье делался изначально из фанеры, обзавелся корпусом из цельного дуба и выглядит как премиальная вещь. Но он один и в единственном экземпляре и никто его не повторит. А подобную вещь, которая собрана на коленке повторить сможет даже тот кто в этом абсолютно не разбирается, приложив минимальное количество усилий и знаний.


      1. melchermax
        30.12.2016 13:31
        +1

        Телефон который в моей старой статье делался изначально из фанеры, обзавелся корпусом из цельного дуба и выглядит как премиальная вещь.


        Фото — в студию!


    1. 0ct0g3n
      30.12.2016 12:37
      +3

      Ну да, реклама и бесчисленные новости от Ализара конечно лучше.


    1. Rumlin
      30.12.2016 12:57

      Хоть, что-то. Идея не плоха.


  1. Sirikid
    30.12.2016 13:14

    Хмм, я бы сделал цвет соответсвующим температуре седалища — прошла минута боя а счет уже 0:5? желтенький; не пробил шотного совка? заоранжевело; ваншотнула арта блайндом на разъезде? полыхает оттенками красного :)


    А если серьезно, планируешь делать что-нибудь ещё? Было бы прикольно сделать что-то вроде этого мода, только с ambilight, да и индикаторы попаданий/пробитий можно туда перенести.


    1. lenz1986
      30.12.2016 13:18

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


      1. Sirikid
        30.12.2016 15:05

        А пока идет лента можно вместо индикатора HP прикрутить текущий WN8, тоже забавно будет.


        1. lenz1986
          30.12.2016 16:33

          Что такое WN8?



        1. Kotyarko_O
          30.12.2016 20:58

          Можно даже переключалку для этого забацать =)
          Зашёл в бой — индикатор по оставшейся прочности (по-умолчанию); нажал хот-кей (или, например, менюшка в боевом интерфейсе) — всё переключилось на рейтинг (тот же WN8), а ещё лучше — рейтинг текущей цели.
          В общем, идей тут можно народить как китайцев.


          1. lenz1986
            30.12.2016 21:00

            Эммм… сударь если это вы :) то Вы можете и реализовать все как надо ) А код потестить эт мы запросто )


          1. Sirikid
            31.12.2016 02:26

            а ещё лучше — рейтинг текущей цели

            Nope, я против оленемера, он только мешает


            1. Kotyarko_O
              31.12.2016 02:35

              И WGR можно.


      1. foundout
        30.12.2016 16:30

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

        Нравится подход — ничего лишнего, нравится вау-эффект, нравится полезность, идея и статья.
        Спасибо, что написали. Надеюсь, Вы будете развивать концепцию и дальше — забегая вперёд, мне такие штуки кажутся интересными и для аудитории массового пользователя :)


  1. valdemaar25
    30.12.2016 20:58

    Круто! И задумка и простота решения! А что за музон в ролике?


  1. andrex77
    31.12.2016 08:04

    лучше сделайте ambilight для настроения жены во время игры в WoT: завелась, закипела(с)


  1. MiDoS
    02.01.2017 11:20
    +1

    В ноутбуках Alienware это реализовано из коробки, правда не понятно, нужен ли специальный мод, или всю необходимую информацию можно вытащить из игры напрямую. Примерное видео https://www.youtube.com/watch?v=AYPkTo2YIzE


    1. lenz1986
      02.01.2017 11:22

      Там реализовано через ихнее спец приложение, и в самих танках тоже что то добавлено. НО стоят такие ноутбуки мама не горюй. И именно из за них я и захотел себе такую подсветку )
      отличие моей реализации в копеечной стоимости и возможности использовать на компьютере )


      1. MiDoS
        02.01.2017 11:47

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


        1. lenz1986
          02.01.2017 12:39

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


        1. Rumlin
          02.01.2017 21:01

          Может спросить автора статьи о GUI WoT Dichkovsky https://habrahabr.ru/company/wargaming/blog/229261/