Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-23 14:40
Arduino Youtube kaugjuhtimispult
Kui kasutate Youtube'i, et pakkuda teile filmi või muusikat, mida magamise ajal vaadata, oleksite uue filmi käivitamisel kindlasti ärganud kas koormusreklaami või erineva helitugevuse eest. Ütlematagi selge, et see võib olla üsna ärritav.
Niisiis, minu lahendus, mida ma teile siin ehitamiseks tõestan, on Arduino-põhine kaugjuhtimispult, et suhelda Youtube'iga eemalt. Kaugjuhtimispult on vajalik minu arvuti peamise helitugevuse muutmiseks, Youtube'i reklaamide vahelejätmiseks ja Youtube'i videote vahelejätmiseks.
Kaasas on ka helitaseme andur, mis määrab, kui valjuhäälne kõlar tegelikult on, mida saab omakorda kasutada helitaseme automaatseks langetamiseks, kui tuvastatakse valju katkestusi, näiteks reklaam.
Lõpuks lisasin tuvastatud helitasemete kuvamiseks arvutirakendusse diagrammi.
Lahendust saab paremini täiustada, kuid minu jaoks täidab see ülesande.
Samm: vajalikud komponendid
Kõik need komponendid tarnib Leobot Electronics (https://leobot.net)
1) Arduino UNO R3
leobot.net/viewproduct.aspx?id=530
2) 4 KANALI KAugjuhtimispult (315 MHz) + vastuvõtja moodul (315 MHz)
leobot.net/viewproduct.aspx?id=521
3) MIKROFONIHÄÄLE JA HELETuvastuse anduri moodul (KY-037)
leobot.net/viewproduct.aspx?id=217
Tarkvara
1) Visual Studio
visualstudio.microsoft.com/
2) Arduino IDE
www.arduino.cc/en/main/software
Samm: riistvara seadistamine
1) Ühendage 4-kanaliline vastuvõtja moodul Arduinoga.
4-kanaliline vastuvõtja pin-> Arduino Uno pin
GND-> GND
5V-> 5V
D0-> Digitaalne 2
D1-> digitaalne 3
D2-> Digitaalne 4
D3-> Digitaalne 5
2) Ühendage mikrofoni KY-037 moodul Arduinoga
Mikrofon KY-037 Pin-> Arduino Uno Pin
GND-> GND
+-> 3.3V
A0-> analoog 3
Samm: Arduino kood
Ülevaade
Loogika, mida Arduino peab järgima, on järgmine:
A) Kontrollige, kas vastuvõtja annab märku tihvtidest.
B) Sõltuvalt sellest, millise IO -pordi kaudu signaal vastu võetakse, on see, milline käsk arvutile saadetakse.
C) Kui kõik kaugjuhtimispuldi toimingud on tehtud, tuvastage mikrofoniga helitase ja saatke see arvutisse.
D) Kõigil arvutisse saadetavatel käskudel on esmalt märk ja seejärel väärtus (kui väärtust on vaja).
E) Arduino arvutist saadeti viis käsku
a. “U” - helitugevuse suurendamine
b. “D” - helitugevuse vähendamine
c. “S” - jätke vahele
d. "V" - jätke video vahele
e. “A” - tuvastatud helitase ja sellele järgnev väärtus
Arduino kood:
Laadige Arduino kood alla siit:
int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 5;
tühine seadistus () {
Seriaalne algus (9600);
pinMode (A3, INPUT);
pinMode (in1, INPUT);
pinMode (in2, INPUT);
pinMode (in3, INPUT);
pinMode (in4, INPUT);
}
void loop () {
kui (digitalRead (in1))
{
Serial.println ("u");
viivitus (100);
}
kui (digitalRead (in2))
{
Serial.println ("d");
viivitus (100);
}
kui (digitalRead (in3))
{
Serial.println ("s");
viivitus (100);
}
kui (digitalRead (in4))
{
Serial.println ("v");
viivitus (100);
}
int readVal = analogRead (A3);
Serial.println (String ("a")+ string (loeVal));
viivitus (50);
}
4. samm: arvutirakenduse kood (C#. NET)
Rakendus kuulab COM (USB) pordi kaudu ja reageerib sõltuvalt sellest, milline käsk vastu võetakse. Lihtsaim viis arvuti heli üles -alla keeramiseks on kasutada Interropi teenuseid Windowsi operatsioonisüsteemiga otse rääkimiseks. Kasutame ka Interropi teenuseid, et viia hiir ekraanil kindlasse kohta ja klõpsata. Erinevate ekraanide ja vaatamissuuruste lubamiseks lubame kasutajal määrata lisamis- ja vahelejätmisnuppude asukoha.
Me kasutame standardset.net -diagrammi, et kuvada kõik saadud käsklused.
Windowsi kood:
Lae kogu projekt alla siit:
leobot.net/audioadjust.zip
süsteemi kasutamine;
kasutades System. Collections. Generic;
kasutades System. ComponentModel;
kasutades System. Data;
kasutades System. Drawing;
kasutades System. Linq;
kasutades System. Text;
kasutades System. Windows. Forms;
kasutades System. Runtime. InteropServices;
kasutades System. IO. Ports;
kasutades System. Threadingut;
nimeruum AudioAdjust
{
avalik osaline klass Vorm1: vorm
{
[DllImport ("User32. Dll")]
avalik staatiline väline väline SetCursorPos (int x, int y);
[DllImport ("User32. Dll")]
avalik staatiline väline bool ClientToScreen (IntPtr hWnd, ref POINT punkt);
[DllImport ("user32.dll", CharSet = CharSet. Auto, CallingConvention = CallingConvention. StdCall)]
avalik staatiline väline void mouse_event (uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
// Hiire toimingud
private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;
[DllImport ("user32.dll")]
staatiline väline void keybd_event (bait bVk, bait bScan, uint dwFlags, int dwExtraInfo);
Juhuslik aRand = uus Juhuslik ();
public int LastLevel = 0;
public int MaxLevel = 255;
staatiline SerialPort _serialPort;
int adX = 1281;
int adY = 706;
int vidX = 250;
int vidY = 780;
bool enableAudioChange = vale;
avalik vorm1 ()
{
InitializeComponent ();
}
private void Form1_Load (objekti saatja, EventArgs e)
{
string nimed = System. IO. Ports. SerialPort. GetPortNames ();
comboBoxPort. Items. AddRange (nimed);
comboBoxPort. SelectedIndex = 0;
}
int currentPoint = 0;
private void button1_Click (objekti saatja, EventArgs e)
{
_serialPort = uus SerialPort ();
_serialPort. DataReceived += uus SerialDataReceivedEventHandler (_serialPort_DataReceived);
_serialPort. PortName = comboBoxPort. SelectedItem. ToString (); // Määrake oma tahvel COM
_serialPort. BaudRate = 9600;
if (_serialPort. IsOpen) _serialPort. Close ();
muidu
{
_serialPort. Open ();
}
// keybd_event ((bait) Keys. VolumeDown, 0, 0, 0); // helitugevuse vähendamine
}
void _serialPort_DataReceived (objekti saatja, SerialDataReceivedEventArgs e)
{
proovige
{
string fullval = _serialPort. ReadLine ();
string com = fullval [0]. ToString ();
lüliti (com)
{
juhtum "a":
{
{
// helitase
string val = fullval. Replace ("a", "");
int valInt = int. Pars (val);
AddData (valInt);
}
murda;
}
juhtum "u":
{
// heli üles
keybd_event ((bait) Keys. VolumeUp, 0, 0, 0); // helitugevuse vähendamine
murda;
}
juhtum "d":
{
// heli maas
keybd_event ((bait) Keys. VolumeDown, 0, 0, 0); // helitugevuse vähendamine
murda;
}
juhtum "s":
{
//Jäta Reklaam vahele
MoveCursorSkipAd ();
Teema. Une (10);
DoMouseClick ();
murda;
}
juhtum "v":
{
//Jäta Reklaam vahele
MoveCursorSkipVideo ();
Teema. Une (10);
DoMouseClick ();
murda;
}
}
}
saak
{
}
// viska uus NotImplementedException ();
}
private void MoveCursorSkipAd ()
{
Kursor. Positsioon = uus punkt (1140, 725);
Cursor. Position = uus punkt (adX, adY);
}
private void MoveCursorSkipVideo ()
{
Kursor. Positsioon = uus punkt (1140, 725);
Cursor. Position = uus punkt (vidX, vidY);
}
public void DoMouseClick ()
{
// Imporditud funktsiooni helistamine kursori praeguse asukohaga
uint X = (uint) Cursor. Position. X;
uint Y = (uint) Cursor. Position. Y;
hiire sündmus (MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0);
hiire sündmus (MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
tühine AddData (int tase)
{
if (enableAudioChange)
{
kui (tase> = maksimumtase)
{
keybd_event ((bait) Keys. VolumeDown, 0, 0, 0); // helitugevuse vähendamine
keybd_event ((bait) Keys. VolumeDown, 0, 0, 0); // helitugevuse vähendamine
keybd_event ((bait) Keys. VolumeDown, 0, 0, 0); // helitugevuse vähendamine
}
muidu
{
kui (tase <MaxLevel - 0)
{
keybd_event ((bait) Keys. VolumeUp, 0, 0, 0); // helitugevuse vähendamine
}
}
}
SetChart (tase);
currentPoint ++;
}
delegate void SetTextCallback (int val);
private void SetChart (int val)
{
// InvokeRequired nõutav võrdleb lõime ID
// lõime kutsumine loova lõime ID -le.
// Kui need lõimed on erinevad, tagastab see tõese.
kui (this.chart1. InvokeRequired)
{
SetTextCallback d = uus SetTextCallback (SetChart);
this. Invoke (d, uus objekt {val});
}
muidu
{
diagramm1. Sari [0]. Punktid. AdXX (0, val);
if (currentPoint> = 10)
{
diagramm1. Sari [0]. Points. RemoveAt (0);
}
}
}
private void textBoxLevel_TextChanged (objekti saatja, EventArgs e)
{
proovige
{
MaxLevel = int. Parse (textBoxLevel. Text);
}
saak
{
textBoxLevel. Text = MaxLevel + "";
}
}
private void buttonTestSkip_Click (objekti saatja, EventArgs e)
{
MoveCursorSkipAd ();
Teema. Une (10);
DoMouseClick ();
}
private void textBoxXpos_TextChanged (objekti saatja, EventArgs e)
{
proovige
{
adX = int. Parse (textBoxXpos. Text);
}
saak
{
textBoxXpos. Text = adX + "";
}
}
private void textBoxYpos_TextChanged (objekti saatja, EventArgs e)
{
proovige
{
adY = int. Parse (textBoxYpos. Text);
}
saak
{
textBoxYpos. Text = adY + "";
}
}
private void buttonSkipVideo_Click (objekti saatja, EventArgs e)
{
MoveCursorSkipVideo ();
Teema. Une (10);
DoMouseClick ();
}
private void textBoxXposVid_TextChanged (objekti saatja, EventArgs e)
{
proovige
{
vidX = int. Parse (textBoxXposVid. Text);
}
saak
{
textBoxXposVid. Text = vidX + "";
}
}
private void textBoxYposVid_TextChanged (objekti saatja, EventArgs e)
{
proovige
{
vidY = int. Parse (textBoxYposVid. Text);
}
saak
{
textBoxYposVid. Text = vidY + "";
}
}
private void checkBoxEnable_CheckedChanged (objekti saatja, EventArgs e)
{
enableAudioChange = checkBoxEnable. Checked;
}
}
[StructLayout (LayoutKind. Sequential)]
avalik struktuur PUNKT
{
avalik int x;
avalik int y;
}
}
Soovitan:
Arduino brauseripõhine kaugjuhtimispult (linux): 9 sammu (piltidega)
Arduino brauseripõhine kaugjuhtimispult (linux): meil on lapsi. Ma armastan neid tükkideks, kuid nad peidavad lastekanalite sisselülitamisel pidevalt satelliidi ja teleri kaugjuhtimispulti. Pärast seda juhtus see iga päev mitu aastat ja pärast seda, kui mu kallis naine lubas mul
Teie arvuti IR -kaugjuhtimispult Arduino abil: 6 sammu
Arvuti IR -kaugjuhtimispult Arduino abil: selle vastuvõtjaga saate oma arvutit kaugjuhtida tänu IR -moodulile ja Arduinole. Lazzy režiim aktiveeritud ^^
Arduino: ajaprogrammid ja kaugjuhtimispult Androidi rakendusest: 7 sammu (piltidega)
Arduino: ajaprogrammid ja kaugjuhtimispult Androidi rakendusest: Olen alati mõelnud, mis juhtub kõigi nende Arduino tahvlitega, mida inimesed pärast lahedate projektide lõpetamist ei vaja. Tõde on natuke häiriv: mitte midagi. Olen seda täheldanud oma pere kodus, kus isa üritas oma kodu ehitada
Automaatne kanalivahetuse kaugjuhtimispult Arduino abil: 6 sammu
Automaatne kanalivahetuse kaugjuhtimispult koos Arduinoga: Selle projekti esialgne motivatsioon oli see, et meie kliendil on vaskulaarne dementsus ja ta on juriidiliselt pime. See on tekitanud tal raskusi meeles pidada, millal ja millistes kanalites televiisor talle meelepäraseid saateid näitab, samuti näha, kuidas
Kaugjuhtimispult PC Youtube'i ja Netflixi jaoks: 9 sammu (piltidega)
Kaugjuhtimispult PC Youtube'i ja Netflixi jaoks: mul on lauaarvuti arvesti voodist eemal, nii et loomulikult meeldib mulle mugavalt voodist vaadata youtube'i ja filme. Iga kord, kui ma pikali heidan, leian, et pean helitugevust reguleerima, mingil põhjusel video peatama või lihtsalt video täielikult vahele jätma