- PVSM.RU - https://www.pvsm.ru -
Для начала видео. (Это не совсем Ambilight — это цветовой индикатор здоровья танка). Видео качается и трясется из за того что одной рукой снимаю, второй пытаюсь играть.
В изготовлении все вышло очень просто.
Необходимые ингредиенты:
1. Arduino — какая есть;
2. Светодиоды WS2812B (Я использовал кольцо — купил давно, сейчас решил применить);
3. Мод для танков [1]. Мод для моего проекта написал товарищ Kotyarko_O [2] с форума koreanrandom, за что ему отдельное спасибо. В архиве с модом приложены исходники;
4. Приложение для ПК. [3] — в архиве исходники и приложение в папке bin.
Выглядит все это не очень красиво, к монитору приклеил на двухсторонний скотч.
НО! Деталей минимум. За код прошу строго не судить, он кривой косой :) Я программист копипастер :) Кому сильно не понравится, можете переделать под себя красиво и практично.
#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();
}
}
}
private void timer1_Tick(object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
SerialPort serialPort1 = new SerialPort();
doc.Load(@«C:World_of_Tanksres_mods.9.17.0.1scriptsclientguimodsmod_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 Всех с наступающим!
Автор: lenz1986
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/arduino/227325
Ссылки в тексте:
[1] Мод для танков: https://yadi.sk/d/ECwrCAsJ35pD6K
[2] Kotyarko_O: http://www.koreanrandom.com/forum/user/16412-kotyarko-o/
[3] Приложение для ПК.: https://yadi.sk/d/dAxq5Zga35pFS7
[4] Источник: https://geektimes.ru/post/284214/
Нажмите здесь для печати.