Sisukord:

Arduino Youtube'i kaugjuhtimispult magamiseks (Leobot Electronics): 4 sammu
Arduino Youtube'i kaugjuhtimispult magamiseks (Leobot Electronics): 4 sammu

Video: Arduino Youtube'i kaugjuhtimispult magamiseks (Leobot Electronics): 4 sammu

Video: Arduino Youtube'i kaugjuhtimispult magamiseks (Leobot Electronics): 4 sammu
Video: Ардуино. Урок 1. С чего начать знакомство с Ардуино. Мигаем светодиодом 2024, Juuli
Anonim
Arduino Youtube kaugjuhtimispult magamiseks (Leobot Electronics)
Arduino Youtube kaugjuhtimispult magamiseks (Leobot Electronics)

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)

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