Мазмуну:
- 1 -кадам: Компоненттер керек
- 2 -кадам: Аппараттык орнотуу
- 3 -кадам: Arduino коду
- 4 -кадам: PC App Code (C#.NET)
Video: Arduino Youtube уктоо үчүн алыстан башкаруу (Leobot Electronics): 4 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Arduino Youtube Remote
Эгер сиз Youtubeну кино же музыка менен камсыз кылуу үчүн колдонсоңуз, уктап жатканда сиз жүктөө жарнагы менен же жаңы кино башталганда башка үндүн көлөмү менен ойгонот элеңиз. Бул абдан кыжырды келтириши мүмкүн экенин айтуунун кажети жок.
Ошентип, мен сизге бул жерде өзүңүз үчүн далилдөөчү чечимим, бул Youtube менен алыстан иштөө үчүн Arduino негизделген алыстан башкаруу. Алыстан башкаруу пульту менин компьютеримдин негизги үнүнүн үнүн өзгөртүүгө, Youtubeдагы жарнактарды өткөрүп жиберүүгө жана Youtubeдагы видеолорду өткөрүп жиберүүгө милдеттүү.
Ошондой эле, динамиктин канчалык катуу экенин аныктоо үчүн аудио деңгээл сенсору камтылган, ал өз кезегинде жарнак сыяктуу катуу үзгүлтүктөрдү аныктоодо үн деңгээлин автоматтык түрдө төмөндөтүү үчүн колдонулушу мүмкүн.
Акырында, мен аныкталган аудио деңгээлин көрсөтүү үчүн PC колдонмосуна диаграмма коштум.
Чечим жакшыраак болушу мүмкүн, бирок мен үчүн ал тапшырманы аткарат.
1 -кадам: Компоненттер керек
Бул компоненттердин баары Leobot Electronics тарабынан камсыздалган (https://leobot.net)
1) Arduino UNO R3
leobot.net/viewproduct.aspx?id=530
2) 4 CHANNEL REMOTE (315MHZ) + RECEIVER MODULE (315MHZ)
leobot.net/viewproduct.aspx?id=521
3) МИКРОФОНДУН ҮНҮ & ҮНДҮ ТАНДОО СЕНСОРУНУН МОДУЛУ (KY-037)
leobot.net/viewproduct.aspx?id=217
Программалык камсыздоо
1) Visual Studio
visualstudio.microsoft.com/
2) Arduino IDE
www.arduino.cc/en/main/software
2 -кадам: Аппараттык орнотуу
1) 4-каналдын кабыл алуучу модулун Arduino менен туташтырыңыз.
4-канал алуучунун пин-> Arduino Uno Pin
GND-> GND
5V-> 5V
D0-> Санарип 2
D1-> Санарип 3
D2-> Санарип 4
D3-> Санарип 5
2) KY-037 микрофонун Arduino модулуна туташтырыңыз
Микрофон KY-037 Pin-> Arduino Uno Pin
GND-> GND
+-> 3.3V
A0-> Аналог 3
3 -кадам: Arduino коду
Обзор
Arduino ээрчиши керек болгон логика төмөнкүчө:
A) Кабыл алуучу кандайдыр бир казыктарга сигнал берип жаткандыгын текшериңиз.
B) Сигнал кабыл алынган IO портуна жараша, ЖКга кандай буйрук жөнөтүлөт.
C) Бардык алыстан башкаруу аракеттери менен бүткөндөн кийин, микрофондун жардамы менен аудио деңгээлин аныктап, ЖКга жөнөтүңүз.
D) ЖКга жөнөтүлүүчү бардык буйруктарда алгач символдун, андан кийин маанинин форматы бар (эгер мааниси керек болсо).
E) Ардуинодон ЖКга жөнөтүлгөн беш буйрук бар
а. "U" - Көлөмдү жогорулатуу
б. "D" - Үнүн азайтуу
в. "S" - Кошууну өткөрүп жиберүү
г. "V" - Видеону өткөрүп жиберүү
д. "A" - Аудио деңгээли аныкталды, андан кийин мааниси
Arduino коду:
Arduino кодун бул жерден жүктөп алыңыз:
int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 5;
жараксыз орнотуу () {
Serial.begin (9600);
pinMode (A3, INPUT);
pinMode (in1, INPUT);
pinMode (in2, INPUT);
pinMode (in3, INPUT);
pinMode (in4, INPUT);
}
void loop () {
if (digitalRead (in1))
{
Serial.println ("u");
кечиктирүү (100);
}
if (digitalRead (in2))
{
Serial.println ("d");
кечиктирүү (100);
}
if (digitalRead (in3))
{
Serial.println ("s");
кечиктирүү (100);
}
if (digitalRead (in4))
{
Serial.println ("v");
кечиктирүү (100);
}
int readVal = analogRead (A3);
Serial.println (String ("a")+ String (readVal));
кечиктирүү (50);
}
4 -кадам: PC App Code (C#. NET)
Колдонмо COM (USB) порту аркылуу угат жана кандай буйрук келгенине жараша жооп берет. ЖКнын үнүн өйдө -ылдый түшүрүүнүн эң жөнөкөй жолу - Windows OS менен түз сүйлөшүү үчүн Interrop кызматтарын колдонуу. Биз ошондой эле чычканды экрандын белгилүү бир абалына алып келүү үчүн Interrop кызматтарын колдонобуз. Ар кандай экрандарга жана көрүүлөрдүн өлчөмдөрүнө уруксат берүү үчүн, биз колдонуучуга өткөрүп берүү жана видео баскычтарын өткөрүп жиберүү абалын көрсөтүүгө уруксат беребиз.
Биз алган аудио буйруктарды көрсөтүү үчүн стандарт.net диаграммасын колдонобуз.
Windows коду:
Толук долбоорду бул жерден жүктөп алыңыз:
leobot.net/audioadjust.zip
системасын колдонуу;
System. Collections. Generic колдонуу;
System. ComponentModel колдонуу;
System. Data колдонуу;
System. Drawing колдонуу;
System. Linq колдонуу;
System. Text колдонуу;
System. Windows. Forms колдонуу;
System. Runtime. InteropServices колдонуу;
System. IO. Ports колдонуу;
System. Threading колдонуу;
аталыштар мейкиндиги AudioAdjust
{
коомдук жарым -жартылай класс Form1: Form
{
[DllImport ("User32. Dll")]
ачык статикалык 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);
// Чычкан аракеттери
жеке const int MOUSEEVENTF_LEFTDOWN = 0x02;
жеке const int MOUSEEVENTF_LEFTUP = 0x04;
жеке const int MOUSEEVENTF_RIGHTDOWN = 0x08;
жеке const int MOUSEEVENTF_RIGHTUP = 0x10;
[DllImport ("user32.dll")]
static extern void keybd_event (байт bVk, байт bScan, uint dwFlags, int dwExtraInfo);
Random aRand = жаңы Random ();
public int LastLevel = 0;
public int MaxLevel = 255;
статикалык SerialPort _serialPort;
int adX = 1281;
int adY = 706;
int vidX = 250;
int vidY = 780;
bool enableAudioChange = false;
коомдук форма1 ()
{
InitializeComponent ();
}
жеке боштук Form1_Load (объект жөнөтүүчү, EventArgs e)
{
сап аттары = System. IO. Ports. SerialPort. GetPortNames ();
comboBoxPort. Items. AddRange (аттар);
comboBoxPort. SelectedIndex = 0;
}
int currentPoint = 0;
private void button1_Click (объект жөнөтүүчү, EventArgs e)
{
_serialPort = жаңы SerialPort ();
_serialPort. DataReceived += жаңы SerialDataReceivedEventHandler (_serialPort_DataReceived);
_serialPort. PortName = comboBoxPort. SelectedItem. ToString (); // COM тактаңызды орнотуңуз
_serialPort. BaudRate = 9600;
if (_serialPort. IsOpen) _serialPort. Close ();
башка
{
_serialPort. Open ();
}
// keybd_event ((байт) Keys. VolumeDown, 0, 0, 0); // көлөмүн азайтуу
}
жараксыз _serialPort_DataReceived (объект жөнөтүүчү, SerialDataReceivedEventArgs e)
{
аракет кыл
{
сап fullval = _serialPort. ReadLine ();
string com = fullval [0]. ToString ();
которуштуруу (com)
{
учурда "а":
{
{
// аудио деңгээл
сап val = fullval. Replace ("a", "");
int valInt = int. Parse (val);
AddData (valInt);
}
тыныгуу;
}
учурда "у":
{
// аудио
keybd_event ((байт) Keys. VolumeUp, 0, 0, 0); // көлөмүн азайтуу
тыныгуу;
}
учурда "d":
{
// аудио түшүп калды
keybd_event ((байт) Keys. VolumeDown, 0, 0, 0); // көлөмүн азайтуу
тыныгуу;
}
учурда "s":
{
// skipAd
MoveCursorSkipAd ();
Thread. Sleep (10);
DoMouseClick ();
тыныгуу;
}
учурда "v":
{
// skipAd
MoveCursorSkipVideo ();
Thread. Sleep (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;
mouse_event (MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0);
mouse_event (MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
жараксыз AddData (int деңгээл)
{
if (enableAudioChange)
{
эгер (деңгээл> = 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 талап кылынат
// жаратуучу жиптин жип IDсине чалуу.
// Эгерде бул жиптер башка болсо, анда ал чындыкты кайтарат.
эгер (this.chart1. InvokeRequired)
{
SetTextCallback d = жаңы SetTextCallback (SetChart);
this. Invoke (d, жаңы объект {val});
}
башка
{
chart1. Series [0]. Points. AddXY (0, val);
эгер (currentPoint> = 10)
{
chart1. Series [0]. Points. RemoveAt (0);
}
}
}
жеке боштук textBoxLevel_TextChanged (объект жөнөтүүчү, EventArgs e)
{
аракет кыл
{
MaxLevel = int. Parse (textBoxLevel. Text);
}
кармоо
{
textBoxLevel. Text = MaxLevel + "";
}
}
private void buttonTestSkip_Click (объект жөнөтүүчү, EventArgs e)
{
MoveCursorSkipAd ();
Thread. Sleep (10);
DoMouseClick ();
}
жеке боштук textBoxXpos_TextChanged (объект жөнөтүүчү, EventArgs e)
{
аракет кыл
{
adX = int. Parse (textBoxXpos. Text);
}
кармоо
{
textBoxXpos. Text = adX + "";
}
}
жеке боштук textBoxYpos_TextChanged (объект жөнөтүүчү, EventArgs e)
{
аракет кыл
{
adY = int. Parse (textBoxYpos. Text);
}
кармоо
{
textBoxYpos. Text = adY + "";
}
}
жеке боштук баскычыSkipVideo_Click (объект жөнөтүүчү, EventArgs e)
{
MoveCursorSkipVideo ();
Thread. Sleep (10);
DoMouseClick ();
}
жеке боштук textBoxXposVid_TextChanged (объект жөнөтүүчү, EventArgs e)
{
аракет кыл
{
vidX = int. Parse (textBoxXposVid. Text);
}
кармоо
{
textBoxXposVid. Text = vidX + "";
}
}
жеке боштук textBoxYposVid_TextChanged (объект жөнөтүүчү, EventArgs e)
{
аракет кыл
{
vidY = int. Parse (textBoxYposVid. Text);
}
кармоо
{
textBoxYposVid. Text = vidY + "";
}
}
private void checkBoxEnable_CheckedChanged (объект жөнөтүүчү, EventArgs e)
{
enableAudioChange = checkBoxEnable. Checked;
}
}
[StructLayout (LayoutKind. Sequential)]
коомдук структура POINT
{
public int x;
public int y;
}
}
Сунушталууда:
LoRa негизделген алыстан башкаруу - Чоң аралыктан башкаруу шаймандары: 8 кадам
LoRa негизделген алыстан башкаруу | Түзмөктөр чоң аралыктан: Эй, эмне болду, балдар! Akarsh бул жерде CETechтен. Бул долбоордо биз светодиоддор, моторлор сыяктуу ар кандай приборлорду көзөмөлдөө үчүн колдонула турган алыстан башкаруу пультун түзөбүз же эгерде биз күнүмдүк жашообуз жөнүндө айтсак, биз өзүбүздүн үй колдонуучубузду башкара алабыз
Arduino менен компьютериңиз үчүн IR алыстан башкаруу: 6 кадам
IR Remote Control for your computer for Arduino: Бул ресивер менен IR модулу жана Arduino аркылуу компьютериңизди алыстан башкарыңыз. Lazzy режими иштетилди ^^
Ардуино менен 2.4Ghz NRF24L01 модулун колдонуу менен зымсыз алыстан башкаруу - Nrf24l01 4 каналы / 6 каналды берүүчү Quadcopter үчүн алуучу - Rc Helicopter - Rc учагы Arduino колдонуу: 5 кадам (сүрөттөр менен)
Ардуино менен 2.4Ghz NRF24L01 модулун колдонуу менен зымсыз алыстан башкаруу | Nrf24l01 4 каналы / 6 каналды берүүчү Quadcopter үчүн алуучу | Rc Helicopter | Arduino менен Rc учагы: Rc машинасын иштетүү | Quadcopter | Дрон | RC учагы | RC кайыгы, бизге дайыма рецептор жана өткөргүч керек, RC QUADCOPTER үчүн бизге 6 каналдуу өткөргүч жана кабыл алгыч керек деп ойлойбуз жана TX менен RXтин бул түрү өтө кымбат, ошондуктан биз аны өзүбүздө жасайбыз
PC Youtube жана Netflix үчүн алыстан башкаруу: 9 кадам (сүрөттөр менен)
PC Youtube жана Netflix үчүн алыстан башкаруу: Менин компьютеримдин эсептегичтери менин төшөгүмдөн алыс, ошондуктан табигый түрдө мен youtube менен кинолорду керебетимден көрүүнү жакшы көрөм. Мен жатканымда, мен үндү тууралоону, кандайдыр бир себептерден улам видеону тындырууну же видеону толугу менен өткөрүп жиберүүнү талап кылып жатам
Сиздин Arduino уктоо үчүн колдонмо: 5 кадам
Ардуинону уктатуу үчүн колдонмо: Кээде биз Arduinoду электр тармагына туташтыруу мүмкүн эмес жерге коюуну талап кылган кырдаалга туш болобуз. Бул көп учурда биз алыскы сайтка маалыматты каттоого аракет кылганда же Arduino'ду активдүү иштетүү керек болгондо болот