Ambilight para World of Tanks - Luces de a帽o nuevo

Para comenzar el video. (Esto no es exactamente Ambilight, es un indicador de color de la salud del tanque). El video se balancea y tiembla debido al hecho de que disparo con una mano, trato de jugar con la segunda.


En la fabricaci贸n de todo result贸 muy simple.

Ingredientes necesarios:

1. Arduino - lo que es;
2. LED WS2812B (us茅 el anillo; lo compr茅 mucho tiempo, ahora decid铆 aplicarlo);
3. Mod para tanques . El mod para mi proyecto fue escrito por un amigo Kotyarko_O del foro koreanrandom, por lo que le agradezco especialmente. En el archivo con los c贸digos fuente mod se adjuntan;
4. La aplicaci贸n para PC. - en el archivo, la fuente y la aplicaci贸n en la carpeta bin.

No se ve muy hermoso, lo pegu茅 a un monitor en una cinta de doble cara.

imagen

PERO! Detalles m铆nimos. Le pido que no juzgue estrictamente el c贸digo, es una curva inclinada :) Soy un programador de copia pasteur :) A quien no le guste mucho, puede rehacerlo de manera hermosa y pr谩ctica.

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(); // 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(); 
    }
  }
}


Un programa para PC escrito en 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-
}

Bueno, eso es todo, respectivamente. Funciona de la manera m谩s simple. El mod para tanques agrega toda la informaci贸n necesaria al archivo xml, y la aplicaci贸n para PC, a su vez, lee el xml y transfiere toda la informaci贸n al arduine, que a su vez controla el color.

PD: Todo esto se puede finalizar, completar, terminar, mejorar ... Pero ya quiero dormir :)

PPS 隆 Todo con la llegada!

Source: https://habr.com/ru/post/es400461/


All Articles