Ambilight لعالم الدبابات - أضواء العام الجديد

لبدء الفيديو. (هذه ليست Ambilight بالضبط - إنها مؤشر لون لصحة الخزان). يتأرجح الفيديو ويهتز لأنني أصور بيد واحدة ، أحاول اللعب باليد الثانية.


في تصنيع كل شيء اتضح بسيط جدا.

المكونات الضرورية:

1. Arduino - ما هو ؛
2. WS2812B LEDs (استخدمت الحلقة - اشتريتها لفترة طويلة ، والآن قررت تطبيقها) ؛
3. وزارة الدفاع للدبابات . تمت كتابة التعديل لمشروعي من قبل صديق Kotyarko_O من منتدى koreanrandom ، والذي شكر خاص له. في الأرشيف مع رموز مصدر وزارة الدفاع المرفقة.
4. تطبيق للكمبيوتر. - في أرشيف المصدر والتطبيق في مجلد سلة المحذوفات.

لا يبدو جميلًا جدًا ، قمت بلصقه على شاشة على شريط مزدوج الجوانب.

الصورة

لكن! تفاصيل الحد الأدنى. أطلب منك عدم الحكم بدقة على الشفرة ، فهو منحنى مائل :) أنا مبرمج نسخ الباستر :) من لم يعجبه كثيرًا ، يمكنك إعادة صنعه بشكل جميل وعملي لنفسك.

كود اردوينو
#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 وينقل جميع المعلومات إلى arduine ، والتي بدورها تتحكم في اللون.

PS يمكن الانتهاء من كل هذا ، والانتهاء ، والانتهاء ، وتحسين ... ولكن بالفعل أريد النوم :)

PPS كل ذلك مع القادمة!

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


All Articles