Агуулгын хүснэгт:
- Алхам 1: Шаардлагатай бүрэлдэхүүн хэсгүүд
- Алхам 2: Тоног төхөөрөмжийн тохиргоо
- Алхам 3: Arduino код
- Алхам 4: PC програмын код (C#. NET)
Видео: Arduino Youtube унтлагын алсын удирдлага (Leobot Electronics): 4 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:02
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)
Аппликешн нь 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;
}
}
Зөвлөмж болгож буй:
ТВ -ийн алсын удирдлага нь RF -ийн алсын удирдлага болжээ -- NRF24L01+ заавар: 5 алхам (зурагтай)
ТВ -ийн алсын удирдлага нь RF -ийн алсын удирдлага болжээ || NRF24L01+ заавар: Энэхүү төсөл дээр би алдартай nRF24L01+ RF IC ашиглан LED зурвасын гэрэлтүүлгийг телевизийн алсын удирдлагын ашиггүй гурван товчлуураар утасгүйгээр тохируулах аргыг танд үзүүлэх болно. Эхэлцгээе
IRduino: Arduino алсын удирдлага - Алдагдсан алсын зайн дууриамал: 6 алхам
IRduino: Arduino Remote Control - Алдагдсан алсын удирдлагыг дуурайгаарай: Хэрэв та ТВ эсвэл DVD тоглуулагчийнхаа алсын удирдлагыг алдаж байсан бол төхөөрөмж дээрх товчлуур руу алхаж, хайж олох, ашиглах нь ямар их урам хугарахыг та мэднэ. Заримдаа эдгээр товчлуурууд нь алсын удирдлагатай ижил функцийг санал болгодоггүй. Хүлээн авах
Энгийн алсын удирдлагатай иж бүрдэл нь дөрвөн сувгийн RC тоглоомын алсын удирдлага болж хувирсан: 4 алхам
Ердийн алсын удирдлагатай иж бүрдэл нь дөрвөн сувагтай RC тоглоомын алсын удирдлага болж хувирав: 如何 将 通用 器 套件 转换 为 模型 中 遥控 的改造 方法 简单。 只需
IR алсын удирдлагаа RF алсын удирдлага руу хөрвүүлэх: 9 алхам (зурагтай)
IR алсын удирдлагаа RF -ийн удирдлага руу хөрвүүлэх: Өнөөдрийн зааварчилгаанд би ерөнхий хянагчийн модулийг микроконтроллергүйгээр хэрхэн ашиглахыг танд харуулах болно. Алсын удирдлага. Хөрвүүлэх гол давуу тал нь
Цахилгаан хэрэгслээ телевизийн алсын удирдлагаар (алсын удирдлага) температур ба чийгшлийн дэлгэцээр удирдана: 9 алхам
Цахилгаан хэрэгслээ ТВ -ийн алсын удирдлагаар (алсын удирдлага) температур ба чийгшлийн дэлгэцээр удирдана уу: Сайн байна уу, би бол Абхай, энэ бол Instructables -ийн анхны блог бөгөөд өнөөдөр би үүнийг ашиглан телевизийн алсын удирдлагаараа цахилгаан хэрэгслээ хэрхэн удирдахыг үзүүлэх болно. энгийн төсөл. Материалыг дэмжиж, өгсөн атл лабораторид баярлалаа