Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-23 14:47
Arduino Youtube daljinski upravljač
Ako koristite Youtube za pružanje filma ili glazbe za gledanje dok spavate, zasigurno bi vas probudio oglas za učitavanje ili različite razine glasnoće kada počne novi film. Nije potrebno reći da ovo može biti prilično iritantno.
Dakle, moje rješenje koje vam ovdje dokazujem da sami izgradite je daljinski upravljač zasnovan na Arduinu za interakciju s Youtubeom na daljinu. Daljinski upravljač je potreban za promjenu glavne glasnoće zvuka računala, preskakanje oglasa na Youtubeu i preskakanje videozapisa na Youtubeu.
Također, uključen je i senzor razine zvuka koji određuje koliko je zvučnik zapravo glasan, a koji se zauzvrat može koristiti za automatsko snižavanje razine zvuka nakon otkrivanja glasnih prekida, poput oglasa.
Na kraju, dodao sam grafikon u aplikaciju za računalo za prikaz otkrivenih razina zvuka.
Rješenje se može bolje doraditi, ali za mene ispunjava zadatak.
Korak 1: Potrebne komponente
Sve ove komponente isporučuje Leobot Electronics (https://leobot.net)
1) Arduino UNO R3
leobot.net/viewproduct.aspx?id=530
2) 4 DALJINSKI DALJINSKI KANAL (315 MHz) + MODUL PRIMAČA (315 MHz)
leobot.net/viewproduct.aspx?id=521
3) MODUL SENZORA MIKROFONSKOG GLASA I DETEKCIJE ZVUKA (KY-037)
leobot.net/viewproduct.aspx?id=217
Softver
1) Visual Studio
visualstudio.microsoft.com/
2) Arduino IDE
www.arduino.cc/en/main/software
Korak 2: Postavljanje hardvera
1) Spojite 4-kanalni prijemnički modul na Arduino.
4-kanalni pin prijemnika-> Arduino Uno Pin
GND-> GND
5V-> 5V
D0-> Digitalno 2
D1-> Digital 3
D2-> Digitalni 4
D3-> Digitalni 5
2) Spojite mikrofon KY-037 modul na Arduino
Mikrofon KY-037 Pin-> Arduino Uno Pin
GND-> GND
+-> 3,3 V
A0-> Analogni 3
Korak 3: Arduino kod
Pregled
Logika koju Arduino treba slijediti je sljedeća:
A) Provjerite signalizira li prijemnik bilo koju iglu.
B) Ovisno o tome na koji IO port se prima signal, naredba će se poslati na računalo.
C) Kada završite sa svim radnjama na daljinskom upravljaču, otkrijte razinu zvuka mikrofonom i pošaljite je na računalo.
D) Sve naredbe poslane na računalo imaju format koji prvo ima znak, a zatim vrijednost (ako je potrebna vrijednost).
E) Postoji pet naredbi poslanih s Arduina na računalo
a. “U” - Pojačavanje zvuka
b. “D” - Smanjivanje glasnoće
c. “S” - Preskoči dodavanje
d. "V" - Preskočite videozapis
e. "A" - Otkrivena razina zvuka, a zatim vrijednost
Arduino kod:
Arduino kod preuzmite ovdje:
int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 5;
void setup () {
Serial.begin (9600);
pinMode (A3, INPUT);
pinMode (in1, INPUT);
pinMode (in2, INPUT);
pinMode (in3, INPUT);
pinMode (in4, INPUT);
}
void loop () {{100} {101}
if (digitalRead (in1))
{
Serial.println ("u");
kašnjenje (100);
}
if (digitalRead (in2))
{
Serial.println ("d");
kašnjenje (100);
}
if (digitalRead (in3))
{
Serial.println ("s");
kašnjenje (100);
}
if (digitalRead (in4))
{
Serial.println ("v");
kašnjenje (100);
}
int readVal = analogRead (A3);
Serial.println (String ("a")+ String (readVal));
kašnjenje (50);
}
Korak 4: Kôd aplikacije za računalo (C#. NET)
Aplikacija će slušati preko COM (USB) priključka i reagirati ovisno o primljenoj naredbi. Najjednostavniji način pojačavanja i smanjivanja zvuka na računalu je korištenje Interrop usluga za izravni razgovor s Windows OS -om. Interrop usluge koristimo i za pomicanje miša na određeno mjesto na ekranu i klik. Kako bismo omogućili različite veličine zaslona i prikaza, dopuštamo korisniku da navede položaj gumba za preskakanje dodavanja i preskakanja videozapisa.
Koristimo standardni.net grafikon za prikaz svih audio naredbi koje primamo.
Windows kôd:
Cijeli projekt preuzmite ovdje:
leobot.net/audioadjust.zip
pomoću sustava;
pomoću System. Collections. Generic;
pomoću System. ComponentModel;
pomoću System. Data;
pomoću System. Drawing;
pomoću System. Linq;
pomoću System. Text;
pomoću System. Windows. Forms;
pomoću System. Runtime. InteropServices;
pomoću System. IO. Ports;
pomoću System. Threading;
imenski prostor AudioAdjust
{
javna parcijalna klasa Obrazac 1: Obrazac
{
[DllImport ("User32. Dll")]
javni statički vanjski dugi SetCursorPos (int x, int y);
[DllImport ("User32. Dll")]
javni statički vanjski bool ClientToScreen (IntPtr hWnd, ref POINT točka);
[DllImport ("user32.dll", CharSet = CharSet. Auto, CallingConvention = CallingConvention. StdCall)]
javna statička vanjska void mouse_event (uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
// Radnje mišem
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")]
statički vanjski ključ voidbd_event (bajt bVk, bajt bScan, uint dwFlags, int dwExtraInfo);
Random aRand = new Random ();
public int LastLevel = 0;
javni int MaxLevel = 255;
statički SerialPort _serialPort;
int adX = 1281;
int adY = 706;
int vidX = 250;
int vidY = 780;
bool enableAudioChange = false;
javni obrazac1 ()
{
InitializeComponent ();
}
private void Form1_Load (pošiljatelj objekta, EventArgs e)
{
string names = System. IO. Ports. SerialPort. GetPortNames ();
comboBoxPort. Items. AddRange (imena);
comboBoxPort. SelectedIndex = 0;
}
int currentPoint = 0;
private void button1_Click (pošiljatelj objekta, EventArgs e)
{
_serialPort = novi SerialPort ();
_serialPort. DataReceived += new SerialDataReceivedEventHandler (_serialPort_DataReceived);
_serialPort. PortName = comboBoxPort. SelectedItem. ToString (); // Postavi svoju ploču COM
_serialPort. BaudRate = 9600;
if (_serialPort. IsOpen) _serialPort. Close ();
drugo
{
_serialPort. Open ();
}
// keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // smanjenje glasnoće
}
void _serialPort_DataReceived (pošiljatelj objekta, SerialDataReceivedEventArgs e)
{
probati
{
string fullval = _serialPort. ReadLine ();
string com = fullval [0]. ToString ();
prekidač (com)
{
slučaj "a":
{
{
// razina zvuka
string val = fullval. Replace ("a", "");
int valInt = int. Parse (val);
AddData (valInt);
}
pauza;
}
slučaj "u":
{
// zvuk gore
keybd_event ((byte) Keys. VolumeUp, 0, 0, 0); // smanjenje glasnoće
pauza;
}
slučaj "d":
{
// zvuk dolje
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // smanjenje glasnoće
pauza;
}
velika slova "s":
{
//preskočite oglas
MoveCursorSkipAd ();
Thread. Sleep (10);
DoMouseClick ();
pauza;
}
slučaj "v":
{
//preskočite oglas
MoveCursorSkipVideo ();
Thread. Sleep (10);
DoMouseClick ();
pauza;
}
}
}
ulov
{
}
// bacanje nove NotImplementedException ();
}
privatna praznina MoveCursorSkipAd ()
{
Pokazivač. Položaj = nova točka (1140, 725);
Cursor. Position = nova točka (adX, adY);
}
private void MoveCursorSkipVideo ()
{
Pokazivač. Položaj = nova točka (1140, 725);
Kursor. Position = nova točka (vidX, vidY);
}
javna praznina DoMouseClick ()
{
// Pozivamo uvezenu funkciju s trenutnim položajem kursora
uint X = (uint) Pokazivač. Položaj. X;
uint Y = (uint) Pokazivač. Položaj. Y;
miš_događaj (MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0);
miš_događaj (MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
void AddData (int razina)
{
if (enableAudioChange)
{
if (razina> = MaxLevel)
{
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // smanjenje glasnoće
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // smanjenje glasnoće
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // smanjenje glasnoće
}
drugo
{
if (razina <MaxLevel - 0)
{
keybd_event ((byte) Keys. VolumeUp, 0, 0, 0); // smanjenje glasnoće
}
}
}
SetChart (razina);
currentPoint ++;
}
delegate void SetTextCallback (int val);
private void SetChart (int val)
{
// InvokeRequired required uspoređuje ID niti za
// pozivanje niti na ID niti kreirajuće niti.
// Ako su ove niti različite, vraća se true.
if (this.chart1. InvokeRequired)
{
SetTextCallback d = novi SetTextCallback (SetChart);
this. Invoke (d, novi objekt {val});
}
drugo
{
chart1. Series [0]. Points. AddXY (0, val);
ako (trenutna točka> = 10)
{
chart1. Series [0]. Points. RemoveAt (0);
}
}
}
private void textBoxLevel_TextChanged (pošiljatelj objekta, EventArgs e)
{
probati
{
MaxLevel = int. Parse (textBoxLevel. Text);
}
ulov
{
textBoxLevel. Text = MaxLevel + "";
}
}
private void buttonTestSkip_Click (pošiljatelj objekta, EventArgs e)
{
MoveCursorSkipAd ();
Thread. Sleep (10);
DoMouseClick ();
}
private void textBoxXpos_TextChanged (pošiljatelj objekta, EventArgs e)
{
probati
{
adX = int. Parse (textBoxXpos. Text);
}
ulov
{
textBoxXpos. Text = adX + "";
}
}
private void textBoxYpos_TextChanged (pošiljatelj objekta, EventArgs e)
{
probati
{
adY = int. Parse (textBoxYpos. Text);
}
ulov
{
textBoxYpos. Text = adY + "";
}
}
private void buttonSkipVideo_Click (pošiljatelj objekta, EventArgs e)
{
MoveCursorSkipVideo ();
Thread. Sleep (10);
DoMouseClick ();
}
private void textBoxXposVid_TextChanged (pošiljatelj objekta, EventArgs e)
{
probati
{
vidX = int. Parse (textBoxXposVid. Text);
}
ulov
{
textBoxXposVid. Text = vidX + "";
}
}
private void textBoxYposVid_TextChanged (pošiljatelj objekta, EventArgs e)
{
probati
{
vidY = int. Parse (textBoxYposVid. Text);
}
ulov
{
textBoxYposVid. Text = vidY + "";
}
}
private void checkBoxEnable_CheckedChanged (pošiljatelj objekta, EventArgs e)
{
enableAudioChange = checkBoxEnable. Checked;
}
}
[StructLayout (LayoutKind. Sequential)]
javna struktura TOČKA
{
javni int x;
javni int y;
}
}
Preporučeni:
Klonirajte bilo koji daljinski upravljač s Arduino Nano: 5 koraka
Klonirajte bilo koji daljinski upravljač s Arduino Nano: Klonirajte bilo koji daljinski upravljač s Arduino Nano
Arduino daljinski upravljač temeljen na pregledniku (linux): 9 koraka (sa slikama)
Arduino daljinski upravljač temeljen na pregledniku (linux): Imamo djecu. Volim ih do komadića, ali stalno skrivaju daljinski upravljač za satelit i televiziju kad uključe dječje kanale. Nakon što se to svakodnevno događalo nekoliko godina, i nakon što mi je draga supruga dopustila
TV daljinski upravljač postaje RF daljinski -- NRF24L01+ Vodič: 5 koraka (sa slikama)
TV daljinski upravljač postaje RF daljinski || Vodič za NRF24L01+: U ovom projektu ću vam pokazati kako sam koristio popularni nRF24L01+ RF IC za bežično podešavanje svjetline LED trake putem tri beskorisna gumba na daljinskom upravljaču televizora. Započnimo
IRduino: Arduino daljinski upravljač - oponašajte izgubljeni daljinski upravljač: 6 koraka
IRduino: Arduino daljinski upravljač - oponašajte izgubljeni daljinski upravljač: Ako ste ikada izgubili daljinski upravljač za televizor ili DVD uređaj, znate koliko je frustrirajuće morati hodati do, pronaći i koristiti gumbe na samom uređaju. Ponekad ti gumbi čak ne nude istu funkcionalnost kao daljinski. Primiti
Daljinski video daljinski upravljač za računalo Video player: 6 koraka
Daljinski video daljinski upravljač za računalo Video player: Izrađujem daljinski upravljač koji se povezuje s računalom putem USB -a. Veliki daljinski upravljač omogućuje mom djetetu odabir i reprodukciju videozapisa na starom računalu. Ovo je relativno jednostavan projekt. Osnovna komponenta je ili USB tipkovnica ili bežična USB tipkovnica. Zatim