Cuprins:
- Pasul 1: Componente necesare
- Pasul 2: Configurare hardware
- Pasul 3: Cod Arduino
- Pasul 4: Codul aplicației PC (C #.NET)
Video: Telecomandă Arduino Youtube pentru dormit (Leobot Electronics): 4 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Telecomandă Arduino Youtube
Dacă folosești Youtube pentru a-ți oferi un film sau o muzică de urmărit în timp ce dormi, cu siguranță ai fi fost trezit fie de o reclamă încărcată, fie de diferite niveluri de volum atunci când începe un nou film. Inutil să spun că acest lucru poate fi destul de iritant.
Așadar, soluția mea pe care ți-o dovedesc aici pentru a construi pentru tine este o telecomandă bazată pe Arduino pentru a interacționa cu Youtube la distanță. Telecomanda este necesară pentru a modifica volumul principal de sunet al computerului meu, pentru a sări peste anunțuri pe Youtube și pentru a sări videoclipuri pe Youtube.
De asemenea, este inclus un senzor de nivel audio pentru a determina cât de puternic este difuzorul, care la rândul său poate fi utilizat pentru a reduce automat nivelul sonor la detectarea întreruperilor puternice, cum ar fi o reclamă.
În cele din urmă, am adăugat o diagramă în aplicația PC pentru a afișa nivelurile audio detectate.
Soluția poate fi mai bine rafinată, dar pentru mine îndeplinește sarcina.
Pasul 1: Componente necesare
Toate aceste componente sunt furnizate de Leobot Electronics (https://leobot.net)
1) Arduino UNO R3
leobot.net/viewproduct.aspx?id=530
2) 4 canale la distanță (315 MHz) + MODUL RECEPTOR (315 MHz)
leobot.net/viewproduct.aspx?id=521
3) MODULUL DE SENZOR DE VOCARE ȘI DETECȚIE A SUNETULUI MICROFONIC (KY-037)
leobot.net/viewproduct.aspx?id=217
Software
1) Visual Studio
visualstudio.microsoft.com/
2) Arduino IDE
www.arduino.cc/en/main/software
Pasul 2: Configurare hardware
1) Conectați modulul receptorului cu 4 canale la Arduino.
Pin receptor 4 canale-> Pin Arduino Uno
GND-> GND
5V-> 5V
D0-> Digital 2
D1-> Digital 3
D2-> Digital 4
D3-> Digital 5
2) Conectați modulul Microfon KY-037 la Arduino
Microfon KY-037 Pin-> Arduino Uno Pin
GND-> GND
+ -> 3,3V
A0-> Analog 3
Pasul 3: Cod Arduino
Prezentare generală
Logica pe care Arduino trebuie să o urmeze este următoarea:
A) Verificați dacă receptorul semnalizează vreun pin.
B) În funcție de portul IO la care se recepționează semnalul, este la ce comandă va fi trimisă computerului.
C) După ce ați terminat toate acțiunile de control de la distanță, detectați nivelul audio cu microfonul și trimiteți-l la computer.
D) Toate comenzile trimise către PC au un format care are mai întâi un caracter, apoi o valoare (dacă este nevoie de o valoare).
E) Există cinci comenzi trimise de la Arduino la computer
A. „U” - Creșterea volumului
b. „D” - Reducere volum
c. „S” - Skip Add
d. „V” - Omiteți videoclipul
e. „A” - Nivelul audio detectat urmat de valoare
Codul Arduino:
Descărcați codul Arduino aici:
int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 5;
configurare nulă () {
Serial.begin (9600);
pinMode (A3, INPUT);
pinMode (in1, INPUT);
pinMode (in2, INPUT);
pinMode (in3, INPUT);
pinMode (in4, INPUT);
}
bucla nulă () {
if (digitalRead (in1))
{
Serial.println ("u");
întârziere (100);
}
if (digitalRead (in2))
{
Serial.println ("d");
întârziere (100);
}
if (digitalRead (in3))
{
Serial.println ("s");
întârziere (100);
}
if (digitalRead (in4))
{
Serial.println ("v");
întârziere (100);
}
int readVal = analogRead (A3);
Serial.println (String ("a") + String (readVal));
întârziere (50);
}
Pasul 4: Codul aplicației PC (C #. NET)
Aplicația va asculta prin portul COM (USB) și va reacționa în funcție de ce comandă este primită. Cel mai simplu mod de a transforma sunetul în sus și în jos pe computer este de a utiliza serviciile Interrop pentru a vorbi direct cu sistemul de operare Windows. De asemenea, folosim serviciile Interrop pentru a muta mouse-ul într-o anumită poziție de pe ecran și a face clic. Pentru a permite diferite ecrane și dimensiuni de vizualizare, îi permitem utilizatorului să specifice poziția butoanelor de adăugare și saltare a videoclipurilor.
Folosim o diagramă.net standard pentru a afișa orice comenzi audio pe care le primim.
Cod Windows:
Descărcați proiectul complet aici:
leobot.net/audioadjust.zip
utilizarea sistemului;
folosind System. Collections. Generic;
folosind System. ComponentModel;
folosind System. Data;
folosind System. Drawing;
folosind System. Linq;
folosind System. Text;
folosind System. Windows. Forms;
folosind System. Runtime. InteropServices;
folosind System. IO. Ports;
folosind System. Threading;
spațiu de nume AudioAdjust
{
clasa parțială publică 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 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);
// Acțiuni ale mouse-ului
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")]
static extern void keybd_event (octet bVk, octet bScan, uint dwFlags, int dwExtraInfo);
Random aRand = nou Random ();
public int LastLevel = 0;
public int MaxLevel = 255;
static SerialPort _serialPort;
int adX = 1281;
int adY = 706;
int vidX = 250;
int vidY = 780;
bool enableAudioChange = fals;
public Form1 ()
{
InitializeComponent ();
}
private void Form1_Load (expeditor obiect, EventArgs e)
{
șir nume = System. IO. Ports. SerialPort. GetPortNames ();
comboBoxPort. Items. AddRange (nume);
comboBoxPort. SelectedIndex = 0;
}
int CurrentPoint = 0;
private void button1_Click (expeditor obiect, EventArgs e)
{
_serialPort = nou SerialPort ();
_serialPort. DataReceived + = new SerialDataReceivedEventHandler (_serialPort_DataReceived);
_serialPort. PortName = comboBoxPort. SelectedItem. ToString (); // Set board COM
_serialPort. BaudRate = 9600;
if (_serialPort. IsOpen) _serialPort. Close ();
altceva
{
_serialPort. Open ();
}
// keybd_event ((octet) Keys. VolumeDown, 0, 0, 0); // scade volumul
}
void _serialPort_DataReceived (expeditor obiect, SerialDataReceivedEventArgs e)
{
încerca
{
șir fullval = _serialPort. ReadLine ();
șir com = fullval [0]. ToString ();
comuta (com)
{
cazul "a":
{
{
// nivel audio
șir val = fullval. Replace ("a", "");
int valInt = int. Parse (val);
AddData (valInt);
}
pauză;
}
cazul "u":
{
// audio sus
keybd_event ((octet) Keys. VolumeUp, 0, 0, 0); // scade volumul
pauză;
}
cazul "d":
{
// audio în jos
keybd_event ((octet) Keys. VolumeDown, 0, 0, 0); // scade volumul
pauză;
}
caz „s”:
{
// skipAd
MoveCursorSkipAd ();
Thread. Sleep (10);
DoMouseClick ();
pauză;
}
cazul "v":
{
// skipAd
MoveCursorSkipVideo ();
Thread. Sleep (10);
DoMouseClick ();
pauză;
}
}
}
captură
{
}
// aruncă o nouă NotImplementedException ();
}
private void MoveCursorSkipAd ()
{
Cursor. Position = punct nou (1140, 725);
Cursor. Position = punct nou (adX, adY);
}
private void MoveCursorSkipVideo ()
{
Cursor. Position = punct nou (1140, 725);
Cursor. Position = punct nou (vidX, vidY);
}
public void DoMouseClick ()
{
// Apelați funcția importată cu poziția curentă a cursorului
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);
}
void AddData (nivel int)
{
dacă (enableAudioChange)
{
if (nivel> = MaxLevel)
{
keybd_event ((octet) Keys. VolumeDown, 0, 0, 0); // scade volumul
keybd_event ((octet) Keys. VolumeDown, 0, 0, 0); // scade volumul
keybd_event ((octet) Keys. VolumeDown, 0, 0, 0); // scade volumul
}
altceva
{
if (nivel <MaxLevel - 0)
{
keybd_event ((octet) Keys. VolumeUp, 0, 0, 0); // scade volumul
}
}
}
SetChart (nivel);
currentPoint ++;
}
delegate void SetTextCallback (int val);
private nul SetChart (int val)
{
// InvokeRequired required compară ID-ul firului
// apelarea firului la ID-ul firului firului de creație.
// Dacă aceste fire sunt diferite, se întoarce adevărat.
if (this.chart1. InvokeRequired)
{
SetTextCallback d = nou SetTextCallback (SetChart);
this. Invoke (d, nou obiect {val});
}
altceva
{
grafic1. Series [0]. Points. AddXY (0, val);
if (currentPoint> = 10)
{
chart1. Series [0]. Points. RemoveAt (0);
}
}
}
private void textBoxLevel_TextChanged (expeditor obiect, EventArgs e)
{
încerca
{
MaxLevel = int. Parse (textBoxLevel. Text);
}
captură
{
textBoxLevel. Text = MaxLevel + "";
}
}
private void buttonTestSkip_Click (expeditor obiect, EventArgs e)
{
MoveCursorSkipAd ();
Thread. Sleep (10);
DoMouseClick ();
}
private void textBoxXpos_TextChanged (expeditor obiect, EventArgs e)
{
încerca
{
adX = int. Parse (textBoxXpos. Text);
}
captură
{
textBoxXpos. Text = adX + "";
}
}
private void textBoxYpos_TextChanged (expeditor obiect, EventArgs e)
{
încerca
{
adY = int. Parse (textBoxYpos. Text);
}
captură
{
textBoxYpos. Text = adY + "";
}
}
buton nul privat SkipVideo_Click (expeditor obiect, EventArgs e)
{
MoveCursorSkipVideo ();
Thread. Sleep (10);
DoMouseClick ();
}
private void textBoxXposVid_TextChanged (expeditor obiect, EventArgs e)
{
încerca
{
vidX = int. Parse (textBoxXposVid. Text);
}
captură
{
textBoxXposVid. Text = vidX + "";
}
}
private void textBoxYposVid_TextChanged (expeditor obiect, EventArgs e)
{
încerca
{
vidY = int. Parse (textBoxYposVid. Text);
}
captură
{
textBoxYposVid. Text = vidY + "";
}
}
private void checkBoxEnable_CheckedChanged (expeditor obiect, EventArgs e)
{
enableAudioChange = checkBoxEnable. Checked;
}
}
[StructLayout (LayoutKind. Sequential)]
public struct POINT
{
public int x;
public int y;
}
}
Recomandat:
Telecomanda TV devine o telecomandă RF -- NRF24L01 + Tutorial: 5 pași (cu imagini)
Telecomanda TV devine o telecomandă RF || Tutorial NRF24L01 +: În acest proiect vă voi arăta cum am folosit popularul IC nRF24L01 + RF pentru a regla luminozitatea unei benzi LED fără fir prin trei butoane inutile ale unei telecomenzi TV. Să începem
IRduino: telecomandă Arduino - Imitați o telecomandă pierdută: 6 pași
IRduino: Telecomandă Arduino - Imitați o telecomandă pierdută: Dacă ați pierdut vreodată telecomanda pentru televizor sau DVD player, știți cât de frustrant este să mergeți, să găsiți și să folosiți butoanele de pe dispozitivul însuși. Uneori, aceste butoane nici măcar nu oferă aceeași funcționalitate ca telecomanda. Primiți
Mască pentru ochi Muzică de dormit: 5 pași
Eye Mask Sleeping Music: Acesta este un proiect care vă permite să dormiți mai bine noaptea, să vă bazați pe versiunea lentă a cântecului de Crăciun de pe masca pentru ochi
Telecomandă pentru PC Youtube și Netflix: 9 pași (cu imagini)
Telecomandă pentru computer Youtube și Netflix: am computerul desktop de la distanță de pat, așa natural îmi place să mă uit pe YouTube și filme din confortul patului meu. De fiecare dată când mă culc, totuși, trebuie să reglez volumul, să întrerup videoclipul din anumite motive sau să omit complet videoclipul
Telecomandă pentru copii mici pentru video player pentru PC: 6 pași
Telecomandă video pentru copii mici pentru player video PC: Construiesc o telecomandă care se conectează la un computer cu USB. Telecomanda mare permite copilului meu să aleagă și să redea videoclipuri pe un computer vechi. Acesta este un proiect relativ simplu. Componenta de bază este fie o tastatură USB, fie o tastatură USB fără fir. Apoi