Агуулгын хүснэгт:

Arduino Youtube унтлагын алсын удирдлага (Leobot Electronics): 4 алхам
Arduino Youtube унтлагын алсын удирдлага (Leobot Electronics): 4 алхам

Видео: Arduino Youtube унтлагын алсын удирдлага (Leobot Electronics): 4 алхам

Видео: Arduino Youtube унтлагын алсын удирдлага (Leobot Electronics): 4 алхам
Видео: 35 видео со страшными призраками: мегасборник 2023 года [V1] 2024, Долдугаар сарын
Anonim
Arduino Youtube унтлагын алсын удирдлага (Leobot Electronics)
Arduino Youtube унтлагын алсын удирдлага (Leobot Electronics)

Arduino Youtube алсын удирдлага

Хэрэв та Youtube -ийг ашиглан унтаж байхдаа кино үзэх эсвэл хөгжим үзүүлж байвал шинэ кино эхлэхэд ачааллын зар эсвэл өөр дууны түвшингээр сэрэх байсан нь гарцаагүй. Энэ нь нэлээд бухимдуулдаг гэдгийг хэлэх шаардлагагүй болно.

Тиймээс, миний танд зориулж баталж буй миний шийдэл бол Youtube-тэй хол зайд харилцах Arduino-д суурилсан алсын удирдлага юм. Алсын удирдлага нь миний компьютерын үндсэн дууны хэмжээг өөрчлөх, Youtube дээрх зарыг алгасах, Youtube дээрх видеог алгасах шаардлагатай.

Түүнчлэн, чанга яригч хэр чанга байгааг тодорхойлох аудио түвшний мэдрэгчийг багтаасан бөгөөд үүнийг эргээд зар сурталчилгаа гэх мэт чанга тасалдлыг илрүүлэх үед дууны түвшинг автоматаар бууруулж болно.

Эцэст нь би компьютерийн аппликейшн дээр илэрсэн аудио түвшинг харуулах диаграмыг нэмэв.

Шийдлийг илүү боловсронгуй болгож болох боловч миний хувьд даалгаврыг гүйцэтгэдэг.

Алхам 1: Шаардлагатай бүрэлдэхүүн хэсгүүд

Эдгээр бүх бүрэлдэхүүн хэсгүүдийг Leobot Electronics (https://leobot.net) нийлүүлдэг.

1) Arduino UNO R3

leobot.net/viewproduct.aspx?id=530

2) 4 сувгийн алсын (315MHz) + хүлээн авагчийн модуль (315MHz)

leobot.net/viewproduct.aspx?id=521

3) МИКРОФОН ДУУ, ДУУ ДУУЛГАХ СЕНСОРЫН МОДУЛЬ (KY-037)

leobot.net/viewproduct.aspx?id=217

Програм хангамж

1) Visual Studio

visualstudio.microsoft.com/

2) Arduino IDE

www.arduino.cc/en/main/software

Алхам 2: Тоног төхөөрөмжийн тохиргоо

1) 4 суваг хүлээн авагчийн модулийг Arduino руу холбоно уу.

4 суваг хүлээн авагчийн зүү-> Arduino Uno Pin

GND-> GND

5V-> 5V

D0-> Дижитал 2

D1-> Дижитал 3

D2-> Дижитал 4

D3-> Дижитал 5

2) KY-037 микрофоны модулийг Arduino руу холбоно уу

Микрофон KY-037 Pin-> Arduino Uno Pin

GND-> GND

+-> 3.3V

A0-> Аналог 3

Алхам 3: Arduino код

Тойм

Arduino -ийн дагаж мөрдөх ёстой логик нь дараах байдалтай байна.

A) Хүлээн авагч ямар нэгэн тээглүүр дохио өгч байгаа эсэхийг шалгаарай.

B) Ямар IO порт дээр дохио хүлээн авахаас хамаарч ямар командыг компьютерт илгээхээс хамаарна.

C) Алсын удирдлагатай бүх үйлдлийг хийсний дараа микрофон ашиглан дууны түвшинг олж, PC рүү илгээнэ үү.

D) Компьютерт илгээдэг бүх командууд нь эхлээд тэмдэгт, дараа нь утгатай байх форматтай байдаг (хэрэв утга шаардлагатай бол).

E) Arduino -аас PC рүү илгээсэн таван тушаал байдаг

a. "U" - Дууг нэмэгдүүлэх

б. "D" - Дууг бууруулах

c. "S" - Нэмэхийг алгасах

d. "V" - Видеог алгасах

д. "A" - Аудио түвшинг илрүүлсний дараа утга

Arduino код:

Arduino кодыг эндээс татаж авна уу:

int in1 = 2;

int in2 = 3;

int in3 = 4;

int in4 = 5;

хүчингүй тохиргоо () {

Цуваа эхлэх (9600);

pinMode (A3, INPUT);

pinMode (in1, INPUT);

pinMode (in2, INPUT);

pinMode (in3, INPUT);

pinMode (in4, INPUT);

}

void loop () {

хэрэв (digitalRead (in1))

{

Serial.println ("u");

саатал (100);

}

if (digitalRead (in2))

{

Serial.println ("d");

саатал (100);

}

if (digitalRead (in3))

{

Serial.println ("s");

саатал (100);

}

if (digitalRead (in4))

{

Serial.println ("v");

саатал (100);

}

int readVal = analogRead (A3);

Serial.println (String ("a")+ String (readVal));

саатал (50);

}

Алхам 4: PC програмын код (C#. NET)

PC програмын код (C#. NET)
PC програмын код (C#. NET)

Аппликешн нь COM (USB) портыг сонсож, ямар тушаал хүлээж авахаас хамааран хариу үйлдэл үзүүлэх болно. Компьютер дээрх дууг дээш, доош эргүүлэх хамгийн хялбар арга бол Interrop үйлчилгээг ашиглан Windows үйлдлийн системтэй шууд ярих явдал юм. Бид мөн Interrop үйлчилгээг ашиглан хулганыг дэлгэцэн дээрх тодорхой байрлалд шилжүүлж товшино уу. Янз бүрийн дэлгэц, харах хэмжээг зөвшөөрөхийн тулд бид хэрэглэгчид видео товчлуурыг алгасах, алгасах байрлалыг зааж өгөхийг зөвшөөрдөг.

Бид хүлээн авсан аудио командыг харуулахын тулд стандарт.net диаграмыг ашигладаг.

Windows код:

Төслийг бүрэн эхээр нь эндээс татаж авна уу:

leobot.net/audioadjust.zip

системийг ашиглах;

System. Collections. Generic ашиглах;

System. ComponentModel ашиглах;

System. Data ашиглах;

System. Drawing ашиглах;

System. Linq ашиглах;

System. Text ашиглах;

System. Windows. Forms ашиглах;

System. Runtime. InteropServices ашиглах;

System. IO. Ports ашиглах;

System. Threading ашиглах;

нэрний талбар AudioAdjust

{

нийтийн хэсэгчилсэн анги Form1: Form

{

[DllImport ("User32. Dll")]

public static extern long SetCursorPos (int x, int y);

[DllImport ("User32. Dll")]

public static extern bool ClientToScreen (IntPtr hWnd, ref POINT цэг);

[DllImport ("user32.dll", CharSet = CharSet. Auto, CallingConvention = CallingConvention. StdCall)]

public static extern void mouse_event (uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);

// Хулганы үйлдэл

хувийн const int MOUSEEVENTF_LEFTDOWN = 0x02;

хувийн const int MOUSEEVENTF_LEFTUP = 0x04;

хувийн const int MOUSEEVENTF_RIGHTDOWN = 0x08;

хувийн const int MOUSEEVENTF_RIGHTUP = 0x10;

[DllImport ("user32.dll")]

static extern void keybd_event (байт bVk, byte bScan, uint dwFlags, int dwExtraInfo);

Санамсаргүй aRand = шинэ Random ();

public int LastLevel = 0;

public int MaxLevel = 255;

статик SerialPort _serialPort;

int adX = 1281;

int adY = 706;

int vidX = 250;

int vidY = 780;

bool enableAudioChange = худал;

нийтийн маягт1 ()

{

InitializeComponent ();

}

хувийн хоосон Form1_Load (объект илгээгч, EventArgs e)

{

мөр нэр = System. IO. Ports. SerialPort. GetPortNames ();

comboBoxPort. Items. AddRange (нэрс);

comboBoxPort. SelectedIndex = 0;

}

int currentPoint = 0;

private void button1_Click (объект илгээгч, EventArgs e)

{

_serialPort = шинэ SerialPort ();

_serialPort. DataReceived += шинэ SerialDataReceivedEventHandler (_serialPort_DataReceived);

_serialPort. PortName = comboBoxPort. SelectedItem. ToString (); // COM самбараа тохируулна уу.

_serialPort. BaudRate = 9600;

хэрэв (_serialPort. IsOpen) _serialPort. Close ();

өөр

{

_serialPort. Open ();

}

// keybd_event ((байт) Keys. VolumeDown, 0, 0, 0); // дууны хэмжээг бууруулах

}

vser _serialPort_DataReceived (объект илгээгч, SerialDataReceivedEventArgs e)

{

оролдох

{

string fullval = _serialPort. ReadLine ();

string com = fullval [0]. ToString ();

солих (com)

{

тохиолдолд "а":

{

{

// аудио түвшин

мөр val = fullval. Солих ("a", "");

int valInt = int. Parse (val);

AddData (valInt);

}

завсарлага;

}

тохиолдолд "у":

{

// аудио дээшлэх

keybd_event ((байт) Keys. VolumeUp, 0, 0, 0); // дууны хэмжээг бууруулах

завсарлага;

}

тохиолдолд "d":

{

// аудио буурсан

keybd_event ((байт) Keys. VolumeDown, 0, 0, 0); // дууны хэмжээг бууруулах

завсарлага;

}

тохиолдол "s":

{

//зар алгасах

MoveCursorSkipAd ();

Унтах (10);

DoMouseClick ();

завсарлага;

}

тохиолдолд "v":

{

//зар алгасах

MoveCursorSkipVideo ();

Унтах (10);

DoMouseClick ();

завсарлага;

}

}

}

барих

{

}

// шинэ NotImplementedException хаях ();

}

хувийн хоосон MoveCursorSkipAd ()

{

Курсорын байрлал = шинэ цэг (1140, 725);

Курсорын байрлал = шинэ цэг (adX, adY);

}

хувийн хоосон MoveCursorSkipVideo ()

{

Курсорын байрлал = шинэ цэг (1140, 725);

Курсорын байрлал = шинэ цэг (vidX, vidY);

}

нийтийн хоосон DoMouseClick ()

{

// Импортын функцийг курсорын одоогийн байрлалаар дуудна уу

uint X = (uint) Cursor. Position. X;

uint Y = (uint) Курсор. Position. Y;

mouse_event (MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0);

mouse_event (MOUSEEVENTF_LEFTUP, X, Y, 0, 0);

}

хүчингүй AddData (int түвшин)

{

if (enableAudioChange)

{

хэрэв (түвшин> = MaxLevel)

{

keybd_event ((байт) Keys. VolumeDown, 0, 0, 0); // дууны хэмжээг бууруулах

keybd_event ((байт) Keys. VolumeDown, 0, 0, 0); // дууны хэмжээг бууруулах

keybd_event ((байт) Keys. VolumeDown, 0, 0, 0); // дууны хэмжээг бууруулах

}

өөр

{

хэрэв (түвшин <MaxLevel - 0)

{

keybd_event ((байт) Keys. VolumeUp, 0, 0, 0); // дууны хэмжээг бууруулах

}

}

}

SetChart (түвшин);

currentPoint ++;

}

SetTextCallback (int val) хүчингүй болгох;

хувийн хоосон SetChart (int val)

{

// InvokeRequired шаардлагатай нь

// үүсгэх thread -ийн thread ID руу утас дуудах.

// Хэрэв эдгээр утас өөр байвал энэ нь үнэн болж буцаана.

if (this.chart1. InvokeRequired)

{

SetTextCallback d = шинэ SetTextCallback (SetChart);

this. Invoke (d, шинэ объект {val});

}

өөр

{

chart1. Series [0]. Points. AddXY (0, val);

хэрэв (currentPoint> = 10)

{

chart1. Series [0]. Points. RemoveAt (0);

}

}

}

хувийн хоосон текстBoxLevel_TextChanged (объект илгээгч, EventArgs e)

{

оролдох

{

MaxLevel = int. Parse (textBoxLevel. Text);

}

барих

{

textBoxLevel. Text = MaxLevel + "";

}

}

private void buttonTestSkip_Click (объект илгээгч, EventArgs e)

{

MoveCursorSkipAd ();

Унтах (10);

DoMouseClick ();

}

хувийн хоосон текстBoxXpos_TextChanged (объект илгээгч, EventArgs e)

{

оролдох

{

adX = int. Parse (textBoxXpos. Text);

}

барих

{

textBoxXpos. Text = adX + "";

}

}

хувийн хоосон текстBoxYpos_TextChanged (объект илгээгч, EventArgs e)

{

оролдох

{

adY = int. Parse (textBoxYpos. Text);

}

барих

{

textBoxYpos. Text = adY + "";

}

}

хувийн хоосон товчSkipVideo_Click (объект илгээгч, EventArgs e)

{

MoveCursorSkipVideo ();

Унтах (10);

DoMouseClick ();

}

хувийн хоосон текстBoxXposVid_TextChanged (объект илгээгч, EventArgs e)

{

оролдох

{

vidX = int. Parse (textBoxXposVid. Text);

}

барих

{

textBoxXposVid. Text = vidX + "";

}

}

хувийн хоосон текстBoxYposVid_TextChanged (объект илгээгч, EventArgs e)

{

оролдох

{

vidY = int. Parse (textBoxYposVid. Text);

}

барих

{

textBoxYposVid. Text = vidY + "";

}

}

private void checkBoxEnable_CheckedChanged (объект илгээгч, EventArgs e)

{

enableAudioChange = checkBoxEnable. Checked;

}

}

[StructLayout (LayoutKind. Sequential)]

олон нийтийн бүтцийн цэг

{

нийтийн int x;

public int y;

}

}

Зөвлөмж болгож буй: