Satura rādītājs:
- 1. darbība. Nepieciešamās sastāvdaļas
- 2. darbība. Aparatūras iestatīšana
- 3. darbība: Arduino kods
- 4. darbība: datora lietotnes kods (C#.NET)
Video: Arduino Youtube tālvadības pults gulēšanai (Leobot Electronics): 4 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:54
Arduino Youtube tālvadības pults
Ja jūs izmantojat Youtube, lai nodrošinātu jums filmu vai mūziku, ko skatīties miega laikā, jūs noteikti būtu pamodinājis vai nu reklāmas ielāde, vai dažādi skaļuma līmeņi, kad sākas jauna filma. Lieki piebilst, ka tas var būt diezgan kaitinoši.
Tātad, mans risinājums, ko es jums šeit pierādīju, lai izveidotu sev, ir uz Arduino balstīta tālvadības pults, lai attālināti mijiedarbotos ar Youtube. Tālvadības pults ir nepieciešama, lai mainītu datora galveno skaņas skaļumu, izlaistu reklāmas vietnē Youtube un izlaistu videoklipus vietnē Youtube.
Iekļauts arī audio līmeņa sensors, lai noteiktu skaļruņa skaļumu, ko savukārt var izmantot, lai automātiski pazeminātu skaņas līmeni, konstatējot skaļus pārtraukumus, piemēram, reklāmu.
Visbeidzot, es pievienoju diagrammu datora lietotnē, lai parādītu konstatētos audio līmeņus.
Risinājumu var uzlabot, bet man tas paveic uzdevumu.
1. darbība. Nepieciešamās sastāvdaļas
Visas šīs sastāvdaļas piegādā Leobot Electronics (https://leobot.net)
1) Arduino UNO R3
leobot.net/viewproduct.aspx?id=530
2) 4 KANĀLU TĀLVADĪBA (315MHZ) + UZŅĒMĒJA MODULIS (315MHZ)
leobot.net/viewproduct.aspx?id=521
3) MIKROFONA BALSU UN SKAŅAS ATTIECĪBAS SENSORA MODULIS (KY-037)
leobot.net/viewproduct.aspx?id=217
Programmatūra
1) Vizuālā studija
visualstudio.microsoft.com/
2) Arduino IDE
www.arduino.cc/en/main/software
2. darbība. Aparatūras iestatīšana
1) Pievienojiet 4 kanālu uztvērēja moduli Arduino.
4 kanālu uztvērēja tapa-> Arduino Uno tapa
GND-> GND
5V-> 5V
D0-> Digitālais 2
D1-> Digitālais 3
D2-> Digitālais 4
D3-> Digitālais 5
2) Pievienojiet mikrofona KY-037 moduli Arduino
Mikrofons KY-037 Pin-> Arduino Uno Pin
GND-> GND
+-> 3.3V
A0-> Analog 3
3. darbība: Arduino kods
Pārskats
Loģika, kas jāievēro Arduino, ir šāda:
A) Pārbaudiet, vai uztvērējs signalizē par tapām.
B) Atkarībā no tā, kurā IO portā signāls tiek saņemts, kāda komanda tiks nosūtīta uz datoru.
C) Kad esat pabeidzis visas tālvadības darbības, nosakiet skaņas līmeni ar mikrofonu un nosūtiet to uz datoru.
D) Visām komandām, kas tiek nosūtītas uz datoru, ir formāts, kurā vispirms ir rakstzīme un pēc tam vērtība (ja vērtība ir nepieciešama).
E) No Arduino uz datoru tiek nosūtītas piecas komandas
a. “U” - skaļuma palielināšana
b. “D” - skaļuma samazināšana
c. “S” - izlaist pievienošanu
d. “V” - izlaist video
e. “A” - konstatēts audio līmenis, kam seko vērtība
Arduino kods:
Lejupielādējiet Arduino kodu šeit:
int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 5;
void setup () {
Sērijas sākums (9600);
pinMode (A3, INPUT);
pinMode (in1, INPUT);
pinMode (in2, INPUT);
pinMode (in3, INPUT);
pinMode (in4, INPUT);
}
void loop () {
ja (digitalRead (in1))
{
Serial.println ("u");
kavēšanās (100);
}
ja (digitalRead (in2))
{
Serial.println ("d");
kavēšanās (100);
}
ja (digitalRead (in3))
{
Serial.println ("s");
kavēšanās (100);
}
ja (digitalRead (in4))
{
Serial.println ("v");
kavēšanās (100);
}
int readVal = analogRead (A3);
Serial.println (String ("a")+ String (readVal));
kavēšanās (50);
}
4. darbība: datora lietotnes kods (C#. NET)
Lietotne klausīsies, izmantojot COM (USB) portu, un reaģēs atkarībā no saņemtās komandas. Vienkāršākais veids, kā ieslēgt un samazināt skaņu datorā, ir izmantot Interrop pakalpojumus, lai tieši runātu ar Windows OS. Mēs arī izmantojam Interrop pakalpojumus, lai pārvietotu peli uz noteiktu ekrāna pozīciju un noklikšķinātu. Lai ļautu izmantot dažādus ekrānus un skatu izmērus, mēs ļaujam lietotājam norādīt izlaišanas pievienošanas un izlaišanas pogas pozīciju.
Mēs izmantojam standarta.net diagrammu, lai parādītu visas saņemtās audio komandas.
Windows kods:
Lejupielādējiet pilnu projektu šeit:
leobot.net/audioadjust.zip
izmantojot sistēmu;
izmantojot System. Collections. Generic;
izmantojot System. ComponentModel;
izmantojot System. Data;
izmantojot System. Drawing;
izmantojot System. Linq;
izmantojot System. Text;
izmantojot System. Windows. Forms;
izmantojot System. Runtime. InteropServices;
izmantojot System. IO. Ports;
izmantojot System. Threading;
nosaukumvieta AudioAdjust
{
publiska daļēja klase 1. veidlapa: veidlapa
{
[DllImport ("User32. Dll")]
publisks statisks ārējais garais SetCursorPos (int x, int y);
[DllImport ("User32. Dll")]
public static extern bool ClientToScreen (IntPtr hWnd, ref POINT punkts);
[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);
// Peles darbības
privātā konst int MOUSEEVENTF_LEFTDOWN = 0x02;
privātā konst int MOUSEEVENTF_LEFTUP = 0x04;
privātā konst int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;
[DllImport ("user32.dll")]
static extern void keybd_event (baits bVk, baits bScan, uint dwFlags, int dwExtraInfo);
Random aRand = jauns 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 = nepatiess;
publiska 1. veidlapa ()
{
InitializeComponent ();
}
private void Form1_Load (objekta sūtītājs, EventArgs e)
{
string names = System. IO. Ports. SerialPort. GetPortNames ();
comboBoxPort. Items. AddRange (vārdi);
comboBoxPort. SelectedIndex = 0;
}
int currentPoint = 0;
private void button1_Click (objekta sūtītājs, EventArgs e)
{
_serialPort = jauns SerialPort ();
_serialPort. DataReceived += jauns SerialDataReceivedEventHandler (_serialPort_DataReceived);
_serialPort. PortName = comboBoxPort. SelectedItem. ToString (); // Iestatiet savu dēli COM
_serialPort. BaudRate = 9600;
ja (_serialPort. IsOpen) _serialPort. Close ();
citādi
{
_serialPort. Open ();
}
// keybd_event ((baits) Keys. VolumeDown, 0, 0, 0); // samazināt skaļumu
}
void _serialPort_DataReceived (objekta sūtītājs, SerialDataReceivedEventArgs e)
{
pamēģini
{
virkne fullval = _serialPort. ReadLine ();
virkne com = fullval [0]. ToString ();
slēdzis (com)
{
gadījums "a":
{
{
// audio līmenis
virkne val = fullval. Replace ("a", "");
int valInt = int. Pars (val);
AddData (valInt);
}
pārtraukums;
}
gadījums "u":
{
// audio augšup
keybd_event ((baits) Keys. VolumeUp, 0, 0, 0); // samazināt skaļumu
pārtraukums;
}
gadījums "d":
{
// audio nav
keybd_event ((baits) Keys. VolumeDown, 0, 0, 0); // samazināt skaļumu
pārtraukums;
}
gadījums "s":
{
//izlaist reklāmu
MoveCursorSkipAd ();
Vītne. Miega (10);
DoMouseClick ();
pārtraukums;
}
gadījums "v":
{
//izlaist reklāmu
MoveCursorSkipVideo ();
Vītne. Miega (10);
DoMouseClick ();
pārtraukums;
}
}
}
noķert
{
}
// mest jaunu NotImplementedException ();
}
private void MoveCursorSkipAd ()
{
Kursors. Pozīcija = jauns punkts (1140, 725);
Cursor. Position = jauns punkts (adX, adY);
}
private void MoveCursorSkipVideo ()
{
Kursors. Pozīcija = jauns punkts (1140, 725);
Cursor. Position = jauns punkts (vidX, vidY);
}
public void DoMouseClick ()
{
// Izsaukt importēto funkciju ar kursora pašreizējo atrašanās vietu
uint X = (uint) Cursor. Position. X;
uint Y = (uint) Cursor. Position. Y;
peles notikums (MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0);
peles notikums (MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
void AddData (int līmenis)
{
ja (enableAudioChange)
{
ja (līmenis> = maksimālais līmenis)
{
keybd_event ((baits) Keys. VolumeDown, 0, 0, 0); // samazināt skaļumu
keybd_event ((baits) Keys. VolumeDown, 0, 0, 0); // samazināt skaļumu
keybd_event ((baits) Keys. VolumeDown, 0, 0, 0); // samazināt skaļumu
}
citādi
{
ja (līmenis <maksimālais līmenis - 0)
{
keybd_event ((baits) Keys. VolumeUp, 0, 0, 0); // samazināt skaļumu
}
}
}
SetChart (līmenis);
currentPoint ++;
}
delegate void SetTextCallback (int val);
privāta spēkā neesoša SetChart (int val)
{
// InvokeRequired obligāti salīdzina pavediena ID
// izsaucot pavedienu uz izveidotā pavediena pavediena ID.
// Ja šie pavedieni atšķiras, tas atgriež patieso.
ja (this.chart1. InvokeRequired)
{
SetTextCallback d = jauns SetTextCallback (SetChart);
this. Invoke (d, jauns objekts {val});
}
citādi
{
diagramma1. Sērija [0]. Punkti. AddXY (0, val);
ja (pašreizējais punkts> = 10)
{
diagramma1. Sērija [0]. Points. RemoveAt (0);
}
}
}
private void textBoxLevel_TextChanged (objekta sūtītājs, EventArgs e)
{
pamēģini
{
Maksimālais līmenis = int. Parse (textBoxLevel. Text);
}
noķert
{
textBoxLevel. Text = Maksimālais līmenis + "";
}
}
private void buttonTestSkip_Click (objekta sūtītājs, EventArgs e)
{
MoveCursorSkipAd ();
Vītne. Miega (10);
DoMouseClick ();
}
private void textBoxXpos_TextChanged (objekta sūtītājs, EventArgs e)
{
pamēģini
{
adX = int. Parse (textBoxXpos. Text);
}
noķert
{
textBoxXpos. Text = adX + "";
}
}
private void textBoxYpos_TextChanged (objekta sūtītājs, EventArgs e)
{
pamēģini
{
adY = int. Parse (textBoxYpos. Text);
}
noķert
{
textBoxYpos. Text = adY + "";
}
}
private void buttonSkipVideo_Click (objekta sūtītājs, EventArgs e)
{
MoveCursorSkipVideo ();
Vītne. Miega (10);
DoMouseClick ();
}
private void textBoxXposVid_TextChanged (objekta sūtītājs, EventArgs e)
{
pamēģini
{
vidX = int. Parse (textBoxXposVid. Text);
}
noķert
{
textBoxXposVid. Text = vidX + "";
}
}
private void textBoxYposVid_TextChanged (objekta sūtītājs, EventArgs e)
{
pamēģini
{
vidY = int. Parse (textBoxYposVid. Text);
}
noķert
{
textBoxYposVid. Text = vidY + "";
}
}
private void checkBoxEnable_CheckedChanged (objekta sūtītājs, EventArgs e)
{
enableAudioChange = checkBoxEnable. Checked;
}
}
[StructLayout (LayoutKind. Sequential)]
publiska struktūra PUNKTS
{
public int x;
publiska int;
}
}
Ieteicams:
Tālvadības pults slēdža tālvadības pults + palaidējs: 6 soļi (ar attēliem)
Tālvadības pults slēdža tālvadības pults + aktivizētājs: šī pedāļa tālvadības pults ir lieliski piemērota, lai apturētu animatorus, fotoattēlu arhivētājus, emuāru autorus un profesionāļus, kuri visu laiku nevar sasniegt savas kameras aizvara pogu vai kuriem ātri jāstrādā pie galda ar pievienotu kameru. augstas virs galvas. 2020. gada decembra atjauninājums: E
Televizora tālvadības pults kļūst par RF tālvadības pulti -- NRF24L01+ apmācība: 5 soļi (ar attēliem)
TV tālvadības pults kļūst par RF tālvadības pulti || NRF24L01+ apmācība: Šajā projektā es jums parādīšu, kā es izmantoju populāro nRF24L01+ RF IC, lai bezvadu režīmā pielāgotu LED sloksnes spilgtumu, izmantojot trīs bezjēdzīgas TV tālvadības pults pogas. Sāksim
IRduino: Arduino tālvadības pults - atdariniet pazaudētu tālvadības pulti: 6 soļi
IRduino: Arduino tālvadības pults - atdariniet pazaudētu tālvadības pulti: ja kādreiz esat pazaudējis televizora vai DVD atskaņotāja tālvadības pulti, jūs zināt, cik apgrūtinoši ir staigāt, atrast un izmantot pašas ierīces pogas. Dažreiz šīs pogas pat nepiedāvā tādas pašas funkcijas kā tālvadības pults. Saņemt
Parastais tālvadības pults komplekts pārveidots par četru kanālu RC rotaļlietu tālvadības pulti: 4 soļi
Parastais tālvadības pults komplekts ir pārveidots par četru kanālu RC rotaļlietu tālvadības pulti:方法 非常 简单。 只需 准备 一些 瓦楞纸 板 , 然后 按照 视频 教程 完成 这个 电子 电子 项目 并 为 您。 玩具 这个 这个 电子 项目 并 为 为 服务。 玩具 提供 提供 远程 项目 并
Vadības pults kameras tālvadības pults: 4 soļi
Vadības pults kameras tālvadības pults: Šis ir īss pamācība, kā izveidot tālvadības pulti kamerai, kurai tās vēl nav. Tas ietver solenoīdu, vienkāršu brita ekrānu, sienas kārpu, dažus vadus un aparatūru. Viegli pagatavojams, jautri lietojams