Мазмұны:
- 1 -қадам: Қажетті компоненттер
- 2 -қадам: Жабдықты орнату
- 3 -қадам: Arduino коды
- 4 -қадам: ДК қосымшасы коды (C#.NET)
Бейне: Arduino Youtube ұйықтауға арналған қашықтан басқару құралы (Leobot Electronics): 4 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
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 ҚАНЫҚТАН ҚАШЫҚТАН (315 МГц) + Қабылдағыш модулі (315 МГц)
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/kz/main/software
2 -қадам: Жабдықты орнату
1) 4 каналды қабылдағыш модулін Arduino-ға қосыңыз.
4 арналы қабылдағыш түйреуі-> Arduino Uno Pin
GND-> GND
5В-> 5В
D0-> Сандық 2
D1-> Сандық 3
D2-> Сандық 4
D3-> Сандық 5
2) KY-037 микрофон модулін Arduino-ға қосыңыз
Микрофон KY-037 Pin-> Arduino Uno Pin
GND-> GND
+-> 3.3В
A0-> Аналог 3
3 -қадам: Arduino коды
Шолу
Arduino ұстануы керек логика келесідей:
A) Ресивердің түйреуішке сигнал беретінін тексеріңіз.
B) ДК -ге қандай команда жіберілетіні сигнал IO портына байланысты қабылданады.
C) Қашықтан басқару құралының барлық әрекеттерін орындағаннан кейін микрофонмен дыбыс деңгейін анықтап, оны ДК-ге жіберіңіз.
D) ДК -ге жіберілетін барлық командалар алдымен символдан тұратын форматқа ие болады (егер мән қажет болса).
E) Ардуинодан ДК -ге жіберілетін бес команда бар
а. «U» - дыбыс деңгейін жоғарылату
б. «D» - дыбыс деңгейін төмендету
c) «S» - Қосуды өткізіп жіберіңіз
d. «V» - бейнені өткізіп жіберу
д. «A» - дыбыс деңгейі анықталды, содан кейін мән
Arduino коды:
Arduino кодын мына жерден жүктеп алыңыз:
int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 5;
жарамсыз орнату () {
Serial.begin (9600);
pinMode (A3, INPUT);
pinMode (in1, INPUT);
pinMode (in2, INPUT);
pinMode (in3, INPUT);
pinMode (in4, INPUT);
}
void loop () {
if (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 (Жол («a»)+ Жол (readVal));
кешіктіру (50);
}
4 -қадам: ДК қосымшасы коды (C#. NET)
Қолданба COM (USB) портын тыңдайды және қандай команда алынғанына байланысты әрекет етеді. Компьютерде дыбысты жоғары және төмен бұрудың қарапайым әдісі - Windows операциялық жүйесімен тікелей сөйлесу үшін Interrop қызметтерін пайдалану. Біз сондай -ақ тінтуірді экрандағы белгілі бір орынға жылжыту үшін 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: Пішін
{
[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, байт 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)
{
string атаулары = 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;
if (_serialPort. IsOpen) _serialPort. Close ();
басқа
{
_serialPort. Open ();
}
// keybd_event ((байт) Keys. VolumeDown, 0, 0, 0); // дыбыс деңгейін төмендету
}
vser _serialPort_DataReceived (объект жіберуші, SerialDataReceivedEventArgs e)
{
тырысу
{
жол fullval = _serialPort. ReadLine ();
жол com = fullval [0]. ToString ();
қосқыш (com)
{
«а» жағдайы:
{
{
// дыбыс деңгейі
val val = fullval. Replace («a», «»);
int valInt = int. Parse (val);
AddData (valInt);
}
үзіліс;
}
«у» жағдайы:
{
// дыбыс жоғарылайды
keybd_event ((байт) Keys. VolumeUp, 0, 0, 0); // дыбыс деңгейін төмендету
үзіліс;
}
«d» жағдайы:
{
// дыбыс төмен
keybd_event ((байт) Keys. VolumeDown, 0, 0, 0); // дыбыс деңгейін төмендету
үзіліс;
}
«с» жағдайы:
{
//жарнаманы өткізу
MoveCursorSkipAd ();
Thread. Sleep (10);
DoMouseClick ();
үзіліс;
}
«v» жағдайы:
{
//жарнаманы өткізу
MoveCursorSkipVideo ();
Thread. Sleep (10);
DoMouseClick ();
үзіліс;
}
}
}
ұстау
{
}
// жаңа NotImplementedException () тастаңыз;
}
жеке бос орын MoveCursorSkipAd ()
{
Курсор. Позиция = жаңа нүкте (1140, 725);
Cursor. Position = new Point (adX, adY);
}
жеке бос орын MoveCursorSkipVideo ()
{
Курсор. Позиция = жаңа нүкте (1140, 725);
Cursor. Position = new Point (vidX, vidY);
}
жалпыға ортақ DoMouseClick ()
{
// Импортталған функцияны курсордың ағымдағы орнымен шақырыңыз
uint X = (uint) Cursor. Position. X;
uint Y = (uint) Cursor. 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 талап етілетін ағынның идентификаторын салыстырады
// жасайтын ағынның ағын идентификаторына ағынды шақыру.
// Егер бұл ағындар әр түрлі болса, ол ақиқатты қайтарады.
егер (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 ();
Thread. Sleep (10);
DoMouseClick ();
}
жеке жарамсыз textBoxXpos_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 ();
Thread. Sleep (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)]
POINT қоғамдық құрылымы
{
public int x;
қоғамдық кірістер;
}
}
Ұсынылған:
Ыдыс -аяққа арналған қашықтан басқару құралы: 8 қадам
Ыдыс -аяққа арналған қашықтан басқару құралы: Бұл нұсқаулық ыдыс -аяқ ыдысының қашықтан басқару құралын қалай алып тастау керектігін көрсетеді. Ескерту: Контроллерді бірге ұстап тұратын кем дегенде бір ілмекті жабуға болады. Уайымдамаңыз, контроллердің сыртында көптеген клиптер бар, сіз оны байқамайсыз
Arduino көмегімен компьютерге арналған IR қашықтан басқару құралы: 6 қадам
Arduino көмегімен компьютерге арналған IR қашықтан басқару пульті: Бұл қабылдағыш арқылы IR модулі мен Arduino арқасында компьютерді қашықтан басқарыңыз. Жалқау режимі қосылды ^^
IRduino: Arduino қашықтан басқару пульті - Жоғалған қашықтан басқару құралына еліктеу: 6 қадам
IRduino: Arduino қашықтан басқару пульті - Жоғалған қашықтан басқару пультіне еліктеу: Егер сіз теледидар немесе DVD ойнатқыш үшін қашықтан басқару пультін жоғалтқан болсаңыз, құрылғының өзіндегі түймелерге жүгіру, табу және пайдалану қаншалықты ауыр болатынын білесіз. Кейде бұл түймелер қашықтан басқару пультімен бірдей функцияны ұсынбайды. Алу
ESP8266 RGB LED STRIP WIFI басқару - NODEMCU Wifi арқылы басқарылатын жарықдиодты жолақ үшін IR қашықтан басқару құралы ретінде - RGB LED STRIP смартфонды басқару: 4 қадам
ESP8266 RGB LED STRIP WIFI басқару | NODEMCU Wifi арқылы басқарылатын жарықдиодты жолақ үшін IR қашықтан басқару құралы ретінде | Смартфонды RGB LED STRIP басқару: Сәлеметсіздер ме, балалар, бұл оқулықта біз nodemcu немесе esp8266 -ды RGB жарықдиодты жолағын басқару үшін инфрақызыл қашықтан басқару құралы ретінде қолдануды үйренеміз, ал Nodemcu смартфон Wi -Fi арқылы басқарылады. Негізінде сіз RGB LED STRIP -ті смартфонмен басқара аласыз
Компьютерге арналған IR қашықтан басқару құралы: 4 қадам
Компьютерге арналған IR қашықтан басқару пульті: Бұл R/C ресиверін компьютеріңіздегі барлық нәрселерді htpc бар адамдар үшін жақсы басқару үшін пайдаланыңыз