Satura rādītājs:

Arduino Youtube tālvadības pults gulēšanai (Leobot Electronics): 4 soļi
Arduino Youtube tālvadības pults gulēšanai (Leobot Electronics): 4 soļi

Video: Arduino Youtube tālvadības pults gulēšanai (Leobot Electronics): 4 soļi

Video: Arduino Youtube tālvadības pults gulēšanai (Leobot Electronics): 4 soļi
Video: Test 2: 2-wheeled Arduino bot in motion 2024, Jūlijs
Anonim
Arduino Youtube tālvadības pults miega režīmam (Leobot Electronics)
Arduino Youtube tālvadības pults miega režīmam (Leobot Electronics)

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)

PC lietotnes kods (C#. NET)
PC 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: