Isi kandungan:
- Langkah 1: Komponen yang Diperlukan
- Langkah 2: Persediaan Perkakasan
- Langkah 3: Kod Arduino
- Langkah 4: Kod Aplikasi PC (C #.NET)
Video: Alat kawalan jauh Youtube Arduino untuk Tidur (Leobot Electronics): 4 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Jauh Youtube Arduino
Sekiranya anda menggunakan Youtube untuk menyediakan filem atau muzik untuk ditonton semasa tidur, anda pasti akan terbangun oleh iklan muat atau tahap kelantangan yang berbeza ketika filem baru dimulakan. Tidak perlu dikatakan, ini boleh menjengkelkan.
Jadi, penyelesaian saya yang saya buktikan kepada anda di sini untuk membina sendiri adalah alat kawalan jauh berasaskan Arduino untuk berinteraksi dengan Youtube dari jarak jauh. Alat kawalan jauh diperlukan untuk mengubah kelantangan suara utama PC saya, melangkau iklan di Youtube dan melangkau video di Youtube.
Juga, disertakan adalah sensor tingkat audio untuk menentukan seberapa keras pembesar suara itu, yang seterusnya dapat digunakan untuk menurunkan tingkat suara secara automatik setelah mengesan gangguan keras seperti iklan.
Terakhir, saya menambahkan carta pada aplikasi PC untuk memaparkan tahap audio yang dikesan.
Penyelesaiannya dapat diperhalusi dengan lebih baik tetapi bagi saya ia menyelesaikan tugas.
Langkah 1: Komponen yang Diperlukan
Semua komponen ini dibekalkan oleh Leobot Electronics (https://leobot.net)
1) Arduino UNO R3
leobot.net/viewproduct.aspx?id=530
2) 4 SALURAN REMOTE (315MHZ) + MODUL PENERIMA (315MHZ)
leobot.net/viewproduct.aspx?id=521
3) MODUL SENSOR VOICE MICROPHONE & SOUS DETECTION SENSOR (KY-037)
leobot.net/viewproduct.aspx?id=217
Perisian
1) Studio Visual
visualstudio.microsoft.com/
2) Arduino IDE
www.arduino.cc/en/main/software
Langkah 2: Persediaan Perkakasan
1) Sambungkan modul penerima 4-Saluran ke Arduino.
Pin Penerima 4-Saluran-> Pin Arduino Uno
GND-> GND
5V-> 5V
D0-> Digital 2
D1-> Digital 3
D2-> Digital 4
D3-> Digital 5
2) Sambungkan modul Mikrofon KY-037 ke Arduino
Mikrofon KY-037 Pin-> Pin Arduino Uno
GND-> GND
+ -> 3.3V
A0-> Analog 3
Langkah 3: Kod Arduino
Gambaran keseluruhan
Logik yang perlu diikuti oleh Arduino adalah seperti berikut:
A) Periksa sama ada penerima menandakan ada pin.
B) Bergantung pada port IO yang mana isyarat diterima adalah perintah apa yang akan dihantar ke PC.
C) Setelah selesai dengan semua tindakan kawalan jauh, mengesan tahap audio dengan mikrofon dan hantar ke PC.
D) Semua arahan yang dihantar ke PC mempunyai format pertama yang mempunyai watak kemudian nilai (jika diperlukan).
E) Terdapat lima arahan yang dihantar dari Arduino ke PC
a. "U" - Kelantangan
b. "D" - Kelantangan
c. "S" - Langkau Tambah
d. "V" - Langkau Video
e. "A" - Tahap Audio dikesan diikuti dengan nilai
Kod Arduino:
Muat turun Arduino Code di sini:
int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 5;
batal persediaan () {
Serial.begin (9600);
pinMode (A3, INPUT);
pinMode (in1, INPUT);
pinMode (in2, INPUT);
pinMode (in3, INPUT);
pinMode (in4, INPUT);
}
gelung kosong () {
jika (digitalRead (in1))
{
Serial.println ("u");
kelewatan (100);
}
jika (digitalRead (in2))
{
Serial.println ("d");
kelewatan (100);
}
jika (digitalRead (in3))
{
Serial.println ("s");
kelewatan (100);
}
jika (digitalRead (in4))
{
Serial.println ("v");
kelewatan (100);
}
int readVal = analogRead (A3);
Serial.println (String ("a") + String (readVal));
kelewatan (50);
}
Langkah 4: Kod Aplikasi PC (C #. NET)
Aplikasi ini akan mendengar melalui port COM (USB) dan bertindak balas bergantung pada perintah apa yang diterima. Cara termudah untuk menghidupkan dan menurunkan suara pada PC adalah dengan menggunakan perkhidmatan Interrop untuk bercakap secara langsung dengan OS Windows. Kami juga menggunakan perkhidmatan Interrop untuk menggerakkan tetikus ke posisi tertentu di layar dan klik. Untuk membolehkan skrin & ukuran paparan berbeza, kami membenarkan pengguna untuk menentukan kedudukan butang langkau tambah dan langkau video.
Kami menggunakan carta.net standard untuk memaparkan sebarang arahan audio yang kami terima.
Kod Windows:
Muat turun projek penuh di sini:
leobot.net/audioadjust.zip
menggunakan Sistem;
menggunakan System. Collections. Generic;
menggunakan System. ComponentModel;
menggunakan System. Data;
menggunakan System. Drawing;
menggunakan System. Linq;
menggunakan System. Text;
menggunakan System. Windows. Forms;
menggunakan System. Runtime. InteropServices;
menggunakan System. IO. Ports;
menggunakan System. Threading;
ruang nama AudioAdjust
{
kelas separa awam Tingkatan1: Borang
{
[DllImport ("Pengguna32. Dll")]
SetCursorPos panjang statik awam (int x, int y);
[DllImport ("Pengguna32. Dll")]
bli eksternal statik awam ClientToScreen (IntPtr hWnd, ref POINT point);
[DllImport ("user32.dll", CharSet = CharSet. Auto, CallingConvention = CallingConvention. StdCall)]
public_stent void tetikus awam (uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
// Tindakan tetikus
persendirian int MOUSEEVENTF_LEFTDOWN = 0x02;
persendirian int MOUSEEVENTF_LEFTUP = 0x04;
persendirian int MOUSEEVENTF_RIGHTDOWN = 0x08;
persendirian int MOUSEEVENTF_RIGHTUP = 0x10;
[DllImport ("user32.dll")]
kekunci luaran statik keybd_event (bte bVk, bte bScan, uint dwFlags, int dwExtraInfo);
Random aRand = Random baru ();
public int LastLevel = 0;
int awam MaxLevel = 255;
SerialPort _serialPort statik;
int adX = 1281;
int adY = 706;
int vidX = 250;
int vidY = 780;
bool enableAudioChange = false;
borang awam 1 ()
{
InitializeComponent ();
}
kekosongan peribadi Form1_Load (penghantar objek, EventArgs e)
{
string names = System. IO. Ports. SerialPort. GetPortNames ();
comboBoxPort. Iems. AddRange (nama);
comboBoxPort. SelectedIndex = 0;
}
int currentPoint = 0;
butang kekosongan peribadi1_Klik (penghantar objek, EventArgs e)
{
_serialPort = SerialPort baru ();
_serialPort. DataReceived + = SerialDataReceivedEventHandler baru (_serialPort_DataReceived);
_serialPort. PortName = comboBoxPort. SelectedItem. ToString (); // Tetapkan papan COM anda
_serialPort. BaudRate = 9600;
jika (_serialPort. IsOpen) _serialPort. Close ();
yang lain
{
_serialPort. Open ();
}
// keybd_event ((byte) Kekunci. VolumeDown, 0, 0, 0); // mengurangkan kelantangan
}
batal _serialPort_DataReceived (penghantar objek, SerialDataReceivedEventArgs e)
{
cuba
{
string fullval = _serialPort. ReadLine ();
string com = fullval [0]. ToString ();
tukar (com)
{
kes "a":
{
{
// tahap audio
string val = fullval. Ganti ("a", "");
int valInt = int. Parse (val);
TambahData (valInt);
}
rehat;
}
kes "u":
{
// naikkan audio
keybd_event ((bait) Kekunci. VolumeUp, 0, 0, 0); // mengurangkan kelantangan
rehat;
}
kes "d":
{
// audio turun
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // mengurangkan kelantangan
rehat;
}
kes "s":
{
// skipAd
MoveCursorSkipAd ();
Benang. Tidur (10);
DoMouseClick ();
rehat;
}
kes "v":
{
// skipAd
MoveCursorSkipVideo ();
Benang. Tidur (10);
DoMouseClick ();
rehat;
}
}
}
tangkap
{
}
// lemparkan NotImplementedException baru ();
}
kekosongan peribadi MoveCursorSkipAd ()
{
Kursor. Posisi = Titik baru (1140, 725);
Kursor. Posisi = Titik baru (adX, adY);
}
kekosongan peribadi MoveCursorSkipVideo ()
{
Kursor. Posisi = Titik baru (1140, 725);
Kursor. Posisi = Titik baru (vidX, vidY);
}
kekosongan awam DoMouseClick ()
{
// Panggil fungsi yang diimport dengan kedudukan kursor semasa
uint X = (uint) Kursor. Posisi. X;
uint Y = (uint) Kursor. Posisi. Y;
mouse_event (MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0);
mouse_event (MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
batal AddData (tahap int)
{
jika (aktifkanAudioChange)
{
jika (tahap> = MaxLevel)
{
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // mengurangkan kelantangan
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // mengurangkan kelantangan
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // mengurangkan kelantangan
}
yang lain
{
jika (tahap <MaxLevel - 0)
{
keybd_event ((bait) Kekunci. VolumeUp, 0, 0, 0); // mengurangkan kelantangan
}
}
}
SetChart (tahap);
currentPoint ++;
}
perwakilan tidak sah SetTextCallback (int val);
SetChart kekosongan peribadi (int val)
{
// InvokeRequired diperlukan membandingkan ID utas dari
// memanggil utas ke ID utas benang pencipta.
// Sekiranya benang ini berbeza, ia akan kembali benar.
jika (this.chart1. InvokeRequired)
{
SetTextCallback d = SetTextCallback baru (SetChart);
ini. Invoke (d, objek baru {val});
}
yang lain
{
chart1. Series [0]. Points. AddXY (0, val);
jika (currentPoint> = 10)
{
chart1. Series [0]. Points. RemoveAt (0);
}
}
}
teks kosong peribadiBoxLevel_TextChanged (penghantar objek, Peristiwa Acara e)
{
cuba
{
MaxLevel = int. Parse (textBoxLevel. Text);
}
tangkap
{
textBoxLevel. Text = MaxLevel + "";
}
}
butang kekosongan peribadiTestSkip_Click (penghantar objek, EventArgs e)
{
MoveCursorSkipAd ();
Benang. Tidur (10);
DoMouseClick ();
}
teks kosong peribadiBoxXpos_TextChanged (penghantar objek, EventArgs e)
{
cuba
{
adX = int. Parse (textBoxXpos. Text);
}
tangkap
{
textBoxXpos. Text = adX + "";
}
}
teks kekosongan peribadiBoxYpos_TextChanged (penghantar objek, EventArgs e)
{
cuba
{
adY = int. Parse (textBoxYpos. Text);
}
tangkap
{
textBoxYpos. Text = adY + "";
}
}
butang kekosongan peribadi SkipVideo_Click (penghantar objek, EventArgs e)
{
MoveCursorSkipVideo ();
Benang. Tidur (10);
DoMouseClick ();
}
teks kosong peribadiBoxXposVid_TextChanged (penghantar objek, EventArgs e)
{
cuba
{
vidX = int. Parse (textBoxXposVid. Text);
}
tangkap
{
textBoxXposVid. Text = vidX + "";
}
}
teks kekosongan peribadiBoxYposVid_TextChanged (pengirim objek, EventArgs e)
{
cuba
{
vidY = int. Parse (textBoxYposVid. Text);
}
tangkap
{
textBoxYposVid. Text = vidY + "";
}
}
periksa kekosongan peribadiBoxEnable_CheckedChanged (penghantar objek, EventArgs e)
{
aktifkanAudioChange = checkBoxEnable. Checked;
}
}
[StructLayout (LayoutKind. Sequential)]
POINT struktur awam
{
int x awam;
int awam;
}
}
Disyorkan:
Alat Kawalan Jauh IR untuk Komputer Anda Dengan Arduino: 6 Langkah
Alat Kawalan Jauh IR untuk Komputer Anda Dengan Arduino: Dengan penerima ini, kendalikan komputer anda dari jarak jauh berkat modul IR dan Arduino. Mod Lazzy diaktifkan ^^
Membuat Alat Kawalan Jauh Profesional untuk Projek Arduino Anda di Rumah: 9 Langkah (dengan Gambar)
Membuat Alat Kawalan Jauh Profesional untuk Projek Arduino Anda di Rumah: Saya membuat projek yang menggunakan perpustakaan jauh arduino dan IR untuk mengawal beberapa perkara. Oleh itu, dalam arahan ini saya akan menunjukkan kepada anda bagaimana anda boleh menggunakan alat kawalan jauh menggunakan projek anda yang seterusnya. Dan anda tidak memerlukan sesuatu yang mewah untuk membuat tandas yang baik
IRduino: Alat kawalan jauh Arduino - Meniru Jauh yang Hilang: 6 Langkah
IRduino: Alat Kawalan Jauh Arduino - Meniru Alat Jauh yang Hilang: Sekiranya anda pernah kehilangan alat kawalan jauh untuk pemain TV atau DVD anda, anda tahu betapa mengecewakannya untuk berjalan kaki, mencari, dan menggunakan butang pada peranti itu sendiri. Kadang-kadang, butang ini bahkan tidak menawarkan fungsi yang sama seperti alat kawalan jauh. Terima
Kit Alat Kawalan Jauh Biasa Diubah menjadi Alat Kawalan Jauh Mainan RC Empat saluran: 4 Langkah
Kit Alat Kawalan Jauh Biasa Diubah menjadi Alat Kawalan Jauh Mainan RC Empat saluran: 如何 将 通用 遥控 器 套件 转换 为 玩具 模型 中 使用 的 四 通道 遥控 器。 遥控 器 套件 非常 便宜。 采用 62 2262 和 2272 芯片 和 433 个 模块 构建 构建。改造 方法 非常 简单。 只需 准备 一些 瓦楞纸 板 , 然后 按照 视频 教程 完成 这个 电子 项目 并 为 您 服务。 玩具 车船 提供 远程 无线 控制。
Alat kawalan jauh berasaskan Arduino untuk Eskate atau Hydrofoil: 5 Langkah (dengan Gambar)
Alat Kawalan Jauh Berasaskan Arduino untuk Eskate atau Hydrofoil: Instruksional ini akan menunjukkan kepada anda bagaimana membina alat kawalan jauh fizikal untuk digunakan dengan eskate atau hidrofil elektrik termasuk semua kod dan perkakasan yang anda perlukan. Terdapat banyak pematerian yang terlibat, tetapi juga senang dibuat. Apa yang boleh dilakukan oleh alat kawalan jauh? Bersama