Для начала видео
Видео качается и трясется из за того что одной рукой снимаю, второй пытаюсь играть.
В изготовлении все вышло очень просто.
Необходимые ингредиенты:
1. Arduino — какая есть.
2. Светодиоды WS2812B (Я использовал кольцо — купил давно, сейчас решил применить)
3. Мод для танков
Мод для моего проекта написал товарищ Kotyarko_O с форума koreanrandom, за что ему отдельное спасибо. В архиве с модом приложены исходники
4. Приложение для ПК. — в архиве исходники и приложение в папке 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(); } } }
{
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 Всех с наступающим!
ссылка на оригинал статьи https://geektimes.ru/post/284214/
Добавить комментарий