ዝርዝር ሁኔታ:

የአርዱዲኖ ዩቲዩብ የርቀት መቆጣጠሪያ ለመተኛት (ሊዮቦት ኤሌክትሮኒክስ) 4 ደረጃዎች
የአርዱዲኖ ዩቲዩብ የርቀት መቆጣጠሪያ ለመተኛት (ሊዮቦት ኤሌክትሮኒክስ) 4 ደረጃዎች

ቪዲዮ: የአርዱዲኖ ዩቲዩብ የርቀት መቆጣጠሪያ ለመተኛት (ሊዮቦት ኤሌክትሮኒክስ) 4 ደረጃዎች

ቪዲዮ: የአርዱዲኖ ዩቲዩብ የርቀት መቆጣጠሪያ ለመተኛት (ሊዮቦት ኤሌክትሮኒክስ) 4 ደረጃዎች
ቪዲዮ: On/OFF LED using Arduino Programming Full Video Basic To Advanced Languages #onoffledusingarduino 2024, ሀምሌ
Anonim
የአሩዲኖ ዩቲዩብ የርቀት መቆጣጠሪያ ለመተኛት (ሊዮቦት ኤሌክትሮኒክስ)
የአሩዲኖ ዩቲዩብ የርቀት መቆጣጠሪያ ለመተኛት (ሊዮቦት ኤሌክትሮኒክስ)

አርዱዲኖ ዩቱብ ሩቅ

በእንቅልፍ ላይ ለመመልከት ፊልም ወይም ሙዚቃ ለእርስዎ ለማቅረብ ዩቲዩብን የሚጠቀሙ ከሆነ አዲስ ፊልም ሲጀመር በጭነት ማስታወቂያ ወይም በተለያዩ የድምፅ ደረጃዎች ከእንቅልፋችሁ ይነቁ ነበር። ይህ በጣም የሚያበሳጭ ሊሆን ይችላል ብሎ መናገር አያስፈልግም።

ስለዚህ ፣ ለራስዎ ለመገንባት እዚህ የማረጋግጥዎት መፍትሄ ከሩቅ ከዩቲዩብ ጋር ለመገናኘት በአርዱዲኖ ላይ የተመሠረተ የርቀት መቆጣጠሪያ ነው። የርቀት መቆጣጠሪያው የእኔን ፒሲ ዋና የድምፅ መጠን ለመለወጥ ፣ በ Youtube ላይ ማስታወቂያዎችን ለመዝለል እና በ Youtube ላይ ቪዲዮዎችን ለመዝለል ያስፈልጋል።

እንዲሁም ፣ የድምፅ ማጉያ ድምጽ ማጉያው በትክክል ምን ያህል እንደሆነ ለማወቅ ተካትቷል ፣ ይህ ደግሞ እንደ ማስታወቂያ ያሉ ከፍተኛ መቋረጦችን ሲያገኙ የድምፅ ደረጃውን በራስ -ሰር ዝቅ ለማድረግ ሊያገለግል ይችላል።

በመጨረሻም የተገኙትን የኦዲዮ ደረጃዎች ለማሳየት በፒሲው መተግበሪያ ላይ ገበታ አክዬአለሁ።

መፍትሄው በተሻለ ሁኔታ ሊጣራ ይችላል ፣ ግን ለእኔ ተግባሩን ያከናውናል።

ደረጃ 1: ክፍሎች ያስፈልጋሉ

እነዚህ ሁሉ ክፍሎች በሊዮቦት ኤሌክትሮኒክስ (https://leobot.net) ይሰጣሉ

1) አርዱዲኖ UNO R3

leobot.net/viewproduct.aspx?id=530

2) 4 የሰርጥ ርቀት (315 ሜኸ) + የመቀበያ ሞዱል (315 ሜኸ)

leobot.net/viewproduct.aspx?id=521

3) የማይክሮፎን ድምጽ እና የድምፅ መመርመሪያ ሴንሰር ሞዱል (KY-037)

leobot.net/viewproduct.aspx?id=217

ሶፍትዌር

1) የእይታ ስቱዲዮ

visualstudio.microsoft.com/

2) አርዱዲኖ አይዲኢ

www.arduino.cc/en/main/software

ደረጃ 2 የሃርድዌር ማዋቀር

1) ባለ 4-ሰርጥ መቀበያ ሞዱሉን ከአርዲኖ ጋር ያገናኙ።

4-የሰርጥ መቀበያ ፒን-> አርዱinoኖ ኡኖ ፒን

GND-> GND

5V-> 5V

D0-> ዲጂታል 2

D1-> ዲጂታል 3

D2-> ዲጂታል 4

D3-> ዲጂታል 5

2) ማይክሮፎን KY-037 ሞዱሉን ከአርዲኖ ጋር ያገናኙ

ማይክሮፎን KY-037 ፒን-> አርዱinoኖ ኡኖ ፒን

GND-> GND

+-> 3.3 ቪ

A0-> አናሎግ 3

ደረጃ 3: የአርዲኖ ኮድ

አጠቃላይ እይታ

አርዱዲኖ መከተል ያለበት አመክንዮ እንደሚከተለው ነው-

ሀ) ተቀባዩ ማንኛውንም ፒን ምልክት እያደረገ መሆኑን ያረጋግጡ።

ለ) በየትኛው የ IO ወደብ ላይ ምልክቱ የተቀበለው በየትኛው ትእዛዝ ወደ ፒሲ እንደሚላክ ነው።

ሐ) በሁሉም የርቀት መቆጣጠሪያ እርምጃዎች ከተከናወኑ በኋላ የድምፅ ደረጃውን በማይክሮፎን ይፈልጉ እና ወደ ፒሲው ይላኩት።

መ) ወደ ፒሲ የሚላኩት ሁሉም ትዕዛዞች መጀመሪያ አንድ ቁምፊ ከዚያም እሴት (አንድ እሴት አስፈላጊ ከሆነ) ቅርጸት አለው።

መ) ከአርዱዲኖ ወደ ፒሲ የተላኩ አምስት ትዕዛዞች አሉ

ሀ. “U” - ድምጽ ጨምር

ለ. “መ” - ድምጽ ወደ ታች

ሐ. “ዎች” - አክል ዝለል

መ. “ቪ” - ቪዲዮን ዝለል

ሠ. “ሀ” - የኦዲዮ ደረጃ ተገኝቷል እና እሴቱ ይከተላል

የአርዱዲኖ ኮድ

የአርዲኖን ኮድ እዚህ ያውርዱ

int ውስጥ 1 = 2;

int ውስጥ 2 = 3;

int in3 = 4;

int in4 = 5;

ባዶነት ማዋቀር () {

Serial.begin (9600);

pinMode (A3 ፣ ግቤት);

pinMode (በ 1 ፣ ግቤት);

pinMode (በ 2 ፣ ግቤት);

pinMode (በ 3 ፣ ግቤት);

pinMode (በ 4 ፣ ግቤት);

}

ባዶነት loop () {

ከሆነ (ዲጂታል አንብብ (በ 1))

{

Serial.println ("u");

መዘግየት (100);

}

ከሆነ (ዲጂታል አንብብ (በ 2))

{

Serial.println ("መ");

መዘግየት (100);

}

ከሆነ (ዲጂታል አንብብ (በ 3))

{

Serial.println ("s");

መዘግየት (100);

}

ከሆነ (ዲጂታል አንብብ (በ 4))

{

Serial.println ("v");

መዘግየት (100);

}

int readVal = analogRead (A3);

Serial.println (String ("a")+ String (readVal));

መዘግየት (50);

}

ደረጃ 4: ፒሲ የመተግበሪያ ኮድ (C#. NET)

ፒሲ የመተግበሪያ ኮድ (ሲ#.ኔት)
ፒሲ የመተግበሪያ ኮድ (ሲ#.ኔት)

መተግበሪያው በ COM (ዩኤስቢ) ወደብ ላይ ያዳምጣል እና በየትኛው ትእዛዝ እንደተቀበለ ምላሽ ይሰጣል። በፒሲው ላይ ድምፁን ወደ ላይ እና ወደ ታች ለማዞር ቀላሉ መንገድ የዊንዶውስ ኦፐሬቲንግን በቀጥታ ለማነጋገር የ Interrop አገልግሎቶችን መጠቀም ነው። እንዲሁም አይጤውን በማያ ገጹ ላይ ወደ አንድ የተወሰነ ቦታ ለማዛወር እና ጠቅ ለማድረግ የ Interrop አገልግሎቶችን እንጠቀማለን። ለተለያዩ ማያ ገጾች እና የእይታ መጠኖች ለመፍቀድ ፣ ተጠቃሚው የመዝለል አክልን እና የቪዲዮ ቁልፎችን ዝለል ያለውን ቦታ እንዲገልጽ እንፈቅዳለን።

እኛ የምንቀበላቸውን ማንኛውንም የኦዲዮ ትዕዛዞችን ለማሳየት ደረጃውን የ.net ገበታ እንጠቀማለን።

የዊንዶውስ ኮድ

ሙሉውን ፕሮጀክት እዚህ ያውርዱ -

leobot.net/audioadjust.zip

ስርዓትን በመጠቀም;

System. Collections. Generic ን በመጠቀም።

System. ComponentModel በመጠቀም;

System. Data በመጠቀም;

ስርዓትን በመጠቀም መሳል;

System. Linq በመጠቀም;

ስርዓት በመጠቀም። ጽሑፍ;

System. Window. Forms ን በመጠቀም;

System. Runtime. InteropServices ን በመጠቀም;

System. IO. Ports ን በመጠቀም;

ስርዓትን በመጠቀም።

የስም ቦታ ኦዲዮ አስተካክል

{

የሕዝብ ከፊል ክፍል ቅጽ 1 ቅጽ

{

[DllImport (“User32. Dll”)]

የህዝብ የማይንቀሳቀስ ውጫዊ ረጅም SetCursorPos (int x ፣ int y);

[DllImport (“User32. Dll”)]

ይፋዊ የማይንቀሳቀስ የውጭ ቦል ClientToScreen (IntPtr hWnd ፣ ref POINT ነጥብ);

[DllImport ("user32.dll", CharSet = CharSet. Auto, CallingConvention = CallingConvention. StdCall)]

የህዝብ የማይንቀሳቀስ ውጫዊ ባዶ የመዳፊት_ኢቨንት (uint dwFlags ፣ uint dx ፣ uint dy ፣ uint cButtons ፣ uint dwExtraInfo) ፤

// የመዳፊት እርምጃዎች

የግል const int MOUSEEVENTF_LEFTDOWN = 0x02;

የግል const int MOUSEEVENTF_LEFTUP = 0x04;

የግል const int MOUSEEVENTF_RIGHTDOWN = 0x08;

የግል const int MOUSEEVENTF_RIGHTUP = 0x10;

[DllImport (“user32.dll”)]

የማይንቀሳቀስ ውጫዊ ባዶ keybd_event (ባይት bVk ፣ ባይት bScan ፣ dwint flaf ፣ int dwExtraInfo);

የዘፈቀደ aRand = አዲስ የዘፈቀደ ();

public int LastLevel = 0;

public int MaxLevel = 255;

የማይንቀሳቀስ SerialPort _serialPort;

int adX = 1281;

int adY = 706;

int vidX = 250;

int vidY = 780;

bool enableAudioChange = ሐሰት;

የህዝብ ቅጽ 1 ()

{

InitializeComponent ();

}

የግል ባዶነት ቅጽ1_Load (የነገር ላኪ ፣ EventArgs e)

{

ሕብረቁምፊ ስሞች = System. IO. Ports. SerialPort. GetPortNames ();

comboBoxPort. Items. AddRange (ስሞች);

comboBoxPort. SelectedIndex = 0;

}

int currentPoint = 0;

የግል ባዶነት አዝራር 1_ክሊክ (የነገር ላኪ ፣ EventArgs e)

{

_serialPort = አዲስ SerialPort ();

_serialPort. DataReived += አዲስ SerialDataReceivedEventHandler (_serialPort_DataReived);

_serialPort. PortName = comboBoxPort. SelectedItem. ToString () ፤ // ቦርድዎን COM ያዘጋጁ

_serialPort. BaudRate = 9600;

ከሆነ (_serialPort. IsOpen) _serialPort. Close ();

ሌላ

{

_serialPort. Open ();

}

// keybd_event ((ባይት) ቁልፎች። VolumeDown ፣ 0 ፣ 0 ፣ 0); // የድምፅ መጠን መቀነስ

}

ባዶነት _የአገልግሎት_ፖርትፖርት_ዳታ_ተቀበለ (የነገር ላኪ ፣ SerialDataReceivedEventArgs e)

{

ሞክር

{

string fullval = _serialPort. ReadLine ();

string com = fullval [0]. ToString ();

መቀየሪያ (ኮም)

{

ጉዳይ "ሀ":

{

{

// የድምፅ ደረጃ

ሕብረቁምፊ val = fullval. Replace ("a", "");

int valInt = int. Parse (ቫል);

AddData (valInt);

}

ሰበር;

}

ጉዳይ "u":

{

// ኦዲዮ ተነስቷል

keybd_event ((ባይት) Keys. VolumeUp, 0, 0, 0); // የድምፅ መጠን መቀነስ

ሰበር;

}

ጉዳይ "መ":

{

// ድምጽ ወደ ታች

keybd_event ((ባይት) Keys. VolumeDown, 0, 0, 0); // የድምፅ መጠን መቀነስ

ሰበር;

}

ጉዳይ "ዎች":

{

// ዝለል አድ

MoveCursorSkipAd ();

ክር እንቅልፍ (10);

DoMouseClick ();

ሰበር;

}

ጉዳይ "v":

{

// ዝለል አድ

MoveCursorSkipVideo ();

ክር እንቅልፍ (10);

DoMouseClick ();

ሰበር;

}

}

}

መያዝ

{

}

// አዲስ NotImplementedException () መጣል;

}

የግል ባዶነት MoveCursorSkipAd ()

{

ጠቋሚ። ቦታ = አዲስ ነጥብ (1140 ፣ 725);

ጠቋሚ። ቦታ = አዲስ ነጥብ (adX ፣ adY);

}

የግል ባዶነት MoveCursorSkipVideo ()

{

ጠቋሚ። ቦታ = አዲስ ነጥብ (1140 ፣ 725);

ጠቋሚ። ቦታ = አዲስ ነጥብ (vidX ፣ vidY);

}

የህዝብ ባዶነት DoMouseClick ()

{

// በጠቋሚው የአሁኑ አቀማመጥ ከውጭ የመጣውን ተግባር ይደውሉ

uint X = (uint) Cursor. Position. X;

uint Y = (uint) Cursor. Position. Y;

የመዳፊት_ክስተት (MOUSEEVENTF_LEFTDOWN ፣ X ፣ Y ፣ 0 ፣ 0);

የመዳፊት_ክስተት (MOUSEEVENTF_LEFTUP ፣ X ፣ Y ፣ 0 ፣ 0);

}

ባዶነት AddData (int ደረጃ)

{

ከሆነ (ኦዲዮ ኦዲዮ ለውጥን ያንቁ)

{

ከሆነ (ደረጃ> = MaxLevel)

{

keybd_event ((ባይት) Keys. VolumeDown, 0, 0, 0); // የድምፅ መጠን መቀነስ

keybd_event ((ባይት) Keys. VolumeDown, 0, 0, 0); // የድምፅ መጠን መቀነስ

keybd_event ((ባይት) Keys. VolumeDown, 0, 0, 0); // የድምፅ መጠን መቀነስ

}

ሌላ

{

ከሆነ (ደረጃ <MaxLevel - 0)

{

keybd_event ((ባይት) Keys. VolumeUp, 0, 0, 0); // የድምፅ መጠን መቀነስ

}

}

}

SetChart (ደረጃ);

currentPoint ++;

}

ውክልና ባዶ SetTextCallback (int val);

የግል ባዶነት SetChart (int val)

{

// InvokeRequired ያስፈልጋል የ ክር ክር መታወቂያ ያወዳድራል

// ክር ወደ መፍጠር ክር ክር መታወቂያ።

// እነዚህ ክሮች የተለያዩ ከሆኑ እውነት ይመለሳል።

ከሆነ (ይህ.chart1.የጠየቀ)

{

SetTextCallback d = አዲስ SetTextCallback (SetChart);

ይህ። (መ, አዲስ ነገር {val});

}

ሌላ

{

ገበታ 1. ጣቢያዎች [0]. Points. AddXY (0 ፣ val);

ከሆነ (currentPoint> = 10)

{

chart1. Series [0]. Points. RemoveAt (0);

}

}

}

የግል ባዶ ጽሑፍ BoxLevel_TextChanged (የነገር ላኪ ፣ EventArgs e)

{

ሞክር

{

MaxLevel = int. Parse (textBoxLevel. Text);

}

መያዝ

{

textBoxLevel. Text = MaxLevel + "";

}

}

የግል ባዶነት ሙከራ ሙከራ ዝለል_ክሊክ (የነገር ላኪ ፣ EventArgs e)

{

MoveCursorSkipAd ();

ክር እንቅልፍ (10);

DoMouseClick ();

}

የግል ባዶ ጽሑፍ BoxXpos_TextChanged (የነገር ላኪ ፣ EventArgs e)

{

ሞክር

{

adX = int. Parse (textBoxXpos. Text);

}

መያዝ

{

textBoxXpos. Text = adX + "";

}

}

የግል ባዶ ጽሑፍ BoxYpos_TextChanged (የነገር ላኪ ፣ EventArgs e)

{

ሞክር

{

adY = int. Parse (textBoxYpos. Text);

}

መያዝ

{

textBoxYpos. Text = adY + "";

}

}

የግል ባዶነት አዝራር ዝለል ቪድዮ_ክሊክ (የነገር ላኪ ፣ EventArgs e)

{

MoveCursorSkipVideo ();

ክር እንቅልፍ (10);

DoMouseClick ();

}

የግል ባዶ ጽሑፍ BoxXposVid_TextChanged (የነገር ላኪ ፣ EventArgs e)

{

ሞክር

{

vidX = int. Parse (textBoxXposVid. Text);

}

መያዝ

{

textBoxXposVid. Text = vidX + "";

}

}

የግል ባዶ ጽሑፍ BoxYposVid_TextChanged (የነገር ላኪ ፣ EventArgs e)

{

ሞክር

{

vidY = int. Parse (textBoxYposVid. Text);

}

መያዝ

{

textBoxYposVid. Text = vidY + "";

}

}

የግል ባዶ ቼክ ቦክስ Enable_CheckedChanged (የነገር ላኪ ፣ EventArgs e)

{

enableAudioChange = checkBoxEnable. Checked;

}

}

[StructLayout (LayoutKind. Sequential)]

የህዝብ አወቃቀር ነጥብ

{

የህዝብ int x;

የህዝብ int y;

}

}

የሚመከር: