Para iniciar o vídeo. (Este não é exatamente o Ambilight - é um indicador colorido da saúde do tanque). O vídeo está oscilando e tremendo devido ao fato de que estou filmando com uma mão, estou tentando jogar com a segunda.Na fabricação de tudo acabou muito simples.Ingredientes necessários:1. Arduino - o que é;2. LEDs WS2812B (usei o anel - comprei há muito tempo, agora decidi aplicar);3. Modificação para tanques . O mod para o meu projeto foi escrito por um amigo Kotyarko_O do fórum koreanrandom, pelo qual agradecemos especialmente a ele. No arquivo com os códigos-fonte mod estão anexados;4. O aplicativo para o PC. - no arquivo, a origem e o aplicativo na pasta bin.Não parece muito bonito, colei-o em um monitor em uma fita dupla face.MAS! Detalhes mínimos. Peço que você não julgue estritamente o código, é uma curva inclinada :) eu sou um programador de cópia pasteur :) Quem não gosta muito, pode refazê-lo de maneira bonita e prática.Código Arduino#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();
Serial.begin(9600);
while (!Serial) {
;
}
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();
}
}
}
Um programa para PC escrito em 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-
}
Bem, isso é tudo, respectivamente. Funciona da maneira mais simples. O mod para tanques adiciona todas as informações necessárias ao arquivo xml, e o aplicativo para PC, por sua vez, lê o xml e transfere todas as informações para o arduino, que por sua vez controla a cor.PS Tudo isso pode ser finalizado, completado, finalizado, aprimorado ... Mas já quero dormir :)PPS Tudo com a vinda!