Orodha ya maudhui:
- Hatua ya 1: Vipengele vinahitajika
- Hatua ya 2: Usanidi wa vifaa
- Hatua ya 3: Msimbo wa Arduino
- Hatua ya 4: Nambari ya Programu ya PC (C #.NET)
Video: Udhibiti wa Kijijini wa Arduino kwa Kulala (Leobot Electronics): Hatua 4
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:51
Kijijini cha Arduino cha YouTube
Ikiwa unatumia Youtube kukupa sinema au muziki wa kutazama wakati wa kulala hakika ungekuwa umeamshwa na tangazo la mzigo au viwango tofauti vya sauti wakati sinema mpya inapoanza. Bila kusema, hii inaweza kuwa inakera kabisa.
Kwa hivyo, suluhisho langu ninakuthibitishia hapa kujijengea mwenyewe ni udhibiti wa kijijini wa Arduino ili kushirikiana na Youtube kwa mbali. Kijijini kinahitajika kubadilisha sauti kuu ya PC yangu, ruka matangazo kwenye Youtube na ruka video kwenye Youtube.
Pia, ni pamoja na sensorer ya kiwango cha sauti kuamua jinsi msemaji alivyo mwenye sauti kubwa, ambayo inaweza kutumika kupunguza kiatomati kiwima baada ya kugundua usumbufu mkubwa kama tangazo.
Mwishowe, niliongeza chati kwenye programu ya PC kuonyesha viwango vya sauti vilivyogunduliwa.
Suluhisho linaweza kusafishwa vizuri lakini kwangu hutimiza kazi hiyo.
Hatua ya 1: Vipengele vinahitajika
Vipengele hivi vyote hutolewa na Leobot Electronics (https://leobot.net)
1) Arduino UNO R3
leobot.net/viewproduct.aspx?id=530
2) 4 CHANNEL REMOTE (315MHZ) + MODULE WA KUPOKEA (315MHZ)
leobot.net/viewproduct.aspx?id=521
3) SAUTI YA MICROPHONE & SENSOR MODULE SENSOR MODULE (KY-037)
leobot.net/viewproduct.aspx?id=217
Programu
1) Studio ya Visual
visualstudio.microsoft.com/
2) Arduino IDE
www.arduino.cc/en/main/software
Hatua ya 2: Usanidi wa vifaa
1) Unganisha moduli ya mpokeaji wa Channel 4 kwa Arduino.
Pini ya Mpokeaji wa Channel 4-> Arduino Uno Pin
GND-> GND
5V-> 5V
D0-> Dijiti 2
D1-> Dijitali 3
D2-> Dijiti 4
D3-> Dijitali 5
2) Unganisha kipaza sauti KY-037 moduli kwa Arduino
Kipaza sauti KY-037 Pin-> Arduino Uno Pin
GND-> GND
+ -> 3.3V
A0-> Analog 3
Hatua ya 3: Msimbo wa Arduino
Maelezo ya jumla
Mantiki ambayo Arduino inahitaji kufuata ni kama ifuatavyo:
A) Angalia ikiwa mpokeaji anaashiria pini yoyote.
B) Kulingana na bandari ya IO ishara inapokelewa ni amri gani itatumwa kwa PC.
C) Mara baada ya kufanywa na vitendo vyote vya kudhibiti kijijini, gundua kiwango cha sauti na kipaza sauti na upeleke kwa PC.
D) Amri zote zinazotumwa kwa PC zina muundo wa kwanza kuwa na tabia kisha thamani (ikiwa thamani inahitajika).
E) Kuna amri tano zilizotumwa kutoka Arduino kwenda kwa PC
a. "U" - Juzuu ya Juu
b. "D" - Juzuu Chini
c. "S" - Ruka Ongeza
d. "V" - Ruka Video
e. "A" - Kiwango cha Sauti kimegunduliwa ikifuatiwa na thamani
Nambari ya Arduino:
Pakua Nambari ya Arduino hapa:
int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 5;
usanidi batili () {
Kuanzia Serial (9600);
pinMode (A3, INPUT);
pinMode (in1, INPUT);
pinMode (in2, INPUT);
pinMode (in3, INPUT);
pinMode (in4, INPUT);
}
kitanzi batili () {
ikiwa (digitalRead (in1))
{
Serial.println ("u");
kuchelewesha (100);
}
ikiwa (digitalRead (in2))
{
Serial.println ("d");
kuchelewesha (100);
}
ikiwa (digitalRead (in3))
{
Serial.println ("s");
kuchelewesha (100);
}
ikiwa (digitalRead (in4))
{
Serial.println ("v");
kuchelewesha (100);
}
kusoma kusomaVal = AnalogSoma (A3);
Serial.println (Kamba ("a") + Kamba (somaVal));
kuchelewesha (50);
}
Hatua ya 4: Nambari ya Programu ya PC (C #. NET)
Programu itasikiliza juu ya bandari ya COM (USB) na kuitikia kulingana na amri gani inapokelewa. Njia rahisi ya kugeuza sauti juu na chini kwenye PC ni kutumia huduma za Interrop kuzungumza moja kwa moja na Windows OS. Tunatumia pia huduma za Interrop kusonga panya kwenye nafasi maalum kwenye skrini na bonyeza. Ili kuruhusu skrini tofauti na ukubwa wa maoni, tunamruhusu mtumiaji kutaja nafasi ya kuruka ongeza na ruka vifungo vya video.
Tunatumia chati ya kawaida ya.net kuonyesha amri zozote za sauti tunazopokea.
Msimbo wa Windows:
Pakua mradi kamili hapa:
leobot.net/audioadjust.zip
kutumia Mfumo;
kutumia System. Collections. Generic;
kutumia System. ComponentModel;
kutumia System. Data;
kutumia Mfumo. Kuchora;
kutumia System. Linq;
kutumia Mfumo. Maandishi;
kutumia System. Windows. Forms;
kutumia System. Runtime. InteropServices;
kutumia Bandari za System. IO;
kutumia Mfumo. Kukanyaga;
nafasi ya jina AudioAdjust
{
darasa la sehemu ya umma Fomu1: Fomu
{
[DllImport ("Mtumiaji32. Dll")]
setCursorPos ya muda mrefu ya umma (int x, int y);
[DllImport ("Mtumiaji32. Dll")]
umma tuli nje bool ClientToScreen (IntPtr hWnd, ref POINT point);
[DllImport ("user32.dll", CharSet = CharSet. Auto, CallingConvention = CallingConvention. StdCall)]
umma tuli nje utupu wa panya_event (uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
// Vitendo vya kipanya
kibinafsi const MOUSEEVENTF_LEFTDOWN = 0x02;
kibinafsi const MOUSEEVENTF_LEFTUP = 0x04;
kibinafsi const MOUSEEVENTF_RIGHTDOWN = 0x08;
kibinafsi const MOUSEEVENTF_RIGHTUP = 0x10;
[DllImport ("user32.dll")]
tuli nje batili keybd_event (byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
Random Random = mpya bila mpangilio ();
umma int LastLevel = 0;
umma int MaxLevel = 255;
tuli SerialPort _serialPort;
int adX = 1281;
int adY = 706;
int vidX = 250;
int vidY = 780;
bool enableAudioChange = uongo;
Fomu1 ya umma ()
{
AnzishaComponent ();
}
Utupu wa kibinafsi Fomu1_Load (mtumaji wa vitu, Mikutano ya Matukio e)
{
kamba majina = System. IO. Ports. SerialPort. GetPortNames ();
comboBoxPort. Items. AddRange (majina);
comboBoxPort. SelectedIndex = 0;
}
int currentPoint = 0;
kitufe cha utupu cha kibinafsi1_Click (mtumaji wa kitu, Mikutano ya Matukio e)
{
_serialPort = mpya SerialPort ();
_serialPort. DataReceived + = mpya SerialDataReceivedEventHandler (_serialPort_DataReceived);
_serialPort. PortName = comboBoxPort. SelectedItem. ToString (); // Weka bodi yako COM
_SerialPort. BaudRate = 9600;
ikiwa (_SerialPort. IsOpen) _serialPort. Close ();
mwingine
{
_SerialPort. Fungua ();
}
// keybd_event ((byte) Funguo. VolumeDown, 0, 0, 0); // punguza sauti
}
batili _serialPort_Data Imepokelewa (mtumaji wa kitu, SerialDataReceivedEventArgs e)
{
jaribu
{
fullval = _serialPort. ReadLine ();
kamba com = kamili [0]. ToString ();
badilisha (com)
{
kesi "a":
{
{
// kiwango cha sauti
kamba val = fullval. Badilisha ("a", "");
int valInt = int. Parse (val);
OngezaData (valInt);
}
kuvunja;
}
kesi "u":
{
// sauti juu
vitufe vya keybd_event ((byte). VolumeUp, 0, 0, 0); // punguza sauti
kuvunja;
}
kesi "d":
{
// sauti chini
keybd_event ((byte) Funguo. VolumeDown, 0, 0, 0); // punguza sauti
kuvunja;
}
kesi "s":
{
// rukaAd
HojaCursorSkipAd ();
Thread Kulala (10);
DoMouseClick ();
kuvunja;
}
kesi "v":
{
// rukaAd
HojaCursorSkipVideo ();
Thread Kulala (10);
DoMouseClick ();
kuvunja;
}
}
}
kukamata
{
}
// tupa mpya NotImplementedException ();
}
utupu wa kibinafsi MoveCursorSkipAd ()
{
Mshale. Position = Point mpya (1140, 725);
Mshale. Position = Point mpya (adX, adY);
}
utupu wa kibinafsi MoveCursorSkipVideo ()
{
Mshale. Position = Point mpya (1140, 725);
Mshale. Position = Point mpya (vidX, vidY);
}
DoMouseClick batili ya umma ()
{
// Piga kazi iliyoletwa na nafasi ya sasa ya mshale
uint X = (uint) Mshale. Position. X;
uint Y = (uint) Mshale. Position. Y;
panya_event (MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0);
panya_event (MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
batili AddData (kiwango cha int)
{
ikiwa (kuwezeshaAudioChange)
{
ikiwa (kiwango> = MaxLevel)
{
keybd_event ((byte) Funguo. VolumeDown, 0, 0, 0); // punguza sauti
keybd_event ((byte) Funguo. VolumeDown, 0, 0, 0); // punguza sauti
keybd_event ((byte) Funguo. VolumeDown, 0, 0, 0); // punguza sauti
}
mwingine
{
ikiwa (kiwango <MaxLevel - 0)
{
vitufe vya keybd_event ((byte). VolumeUp, 0, 0, 0); // punguza sauti
}
}
}
SetChart (kiwango);
sasaPoint ++;
}
kukabidhi batili SetTextCallback (int val);
Utupu wa kibinafsi SetChart (int val)
{
// Kuomba Inayohitajika inalinganisha kitambulisho cha thread ya
// kupiga simu kwa kitambulisho cha uzi wa uzi unaounda.
// Ikiwa nyuzi hizi ni tofauti, inarudi kweli.
ikiwa (chati hii 1. Invoke Inahitajika)
{
SetTextCallback d = mpya SetTextCallback (SetChart);
mwaliko (d, kitu kipya {val});
}
mwingine
{
chati1. Series [0]. Points. AddXY (0, val);
ikiwa (sasaPoint> = 10)
{
chati1. Series [0]. Points. RemoveAt (0);
}
}
}
maandishi batili ya kibinafsiBoxLevel_TextChanged (mtumaji wa vitu, Tukio la Mia e)
{
jaribu
{
MaxLevel = int. Parse (maandishiBoxLevel. Text);
}
kukamata
{
textBoxLevel. Text = MaxLevel + "";
}
}
kitufe cha utupu cha faraghaTestSkip_Click (mtumaji wa vitu, Mikutano ya Tukio e)
{
HojaCursorSkipAd ();
Thread Kulala (10);
DoMouseClick ();
}
maandishi batili ya kibinafsiBoxXpos_TextChanged (mtumaji wa vitu, Tukio la Args e)
{
jaribu
{
adX = int. Parse (maandishiBoxXpos. Text);
}
kukamata
{
textBoxXpos. Text = adX + "";
}
}
maandishi batili ya kibinafsiBoxYpos_TextChanged (mtumaji wa vitu, Tukio la Args e)
{
jaribu
{
adY = int. Parse (maandishiBoxYpos. Text);
}
kukamata
{
maandishiBoxYpos. Text = adY + "";
}
}
kitufe cha utupu wa kibinafsi SkipVideo_Click (mtumaji wa kitu, Mikutano ya Tukio e)
{
HojaCursorSkipVideo ();
Thread Kulala (10);
DoMouseClick ();
}
maandishi batili ya kibinafsiBoxXposVid_TextChanged
{
jaribu
{
vidX = int. Parse (maandishiBoxXposVid. Text);
}
kukamata
{
maandishiBoxXposVid. Text = vidX + "";
}
}
maandishi ya batili ya kibinafsiBoxYposVid_TextChanged (mtumaji wa kitu, Mikutano ya Tukio e)
{
jaribu
{
vidY = int. Parse (textBoxYposVid. Text);
}
kukamata
{
maandishiBoxYposVid. Text = vidY + "";
}
}
kuangalia batili ya kibinafsiBoxEnable_CheckedChanged (mtumaji wa kitu, Mikutano ya Tukio e)
{
wezeshaAudioChange = checkBoxEnable. Checked;
}
}
[StructLayout (LayoutKind. Sequential)]
muundo wa umma POINT
{
umma int x;
umma int y;
}
}
Ilipendekeza:
IRduino: Udhibiti wa Kijijini wa Arduino - Iga Kijijini Kilichopotea: Hatua 6
IRduino: Udhibiti wa Kijijini cha Arduino - Iga Kijijini Kilichopotea: Ikiwa umewahi kupoteza udhibiti wa kijijini kwa Runinga yako au DVD, unajua jinsi inavyofadhaisha kutembea, kupata, na kutumia vifungo kwenye kifaa chenyewe. Wakati mwingine, vifungo hivi haitoi utendaji sawa na kijijini. Pokea
Muziki wa Kulala Muziki wa Kulala: Hatua 5
Muziki wa Kulala Mask: Huu ni mradi wacha ulale vizuri usiku, tegemea toleo la polepole wimbo wa Krismasi kwenye kinyago cha macho
Kuanguka kwa Stm32: Udhibiti wa Kijijini kwa Kituo cha Vyombo vya Habari vya Nyumbani: Hatua 4 (na Picha)
Kuanguka kwa Stm32: Udhibiti wa Kijijini kwa Kituo cha Vyombo vya Habari vya Nyumbani: Huu ni mfano kamili wa kituo cha media cha nyumbani kudhibiti kijijini kulingana na mdhibiti mdogo wa smt32, stm32f103c8t6 inayojulikana kama bodi ya 'bluepill'. Tuseme, unatumia PC kwa kituo cha media cha nyumbani. Ni suluhisho rahisi sana, ambayo hukuruhusu kuweka hu
Mwongozo wa Kulala Arduino Yako Kulala: Hatua 5
Mwongozo wa Kulala Arduino Yako Kulala: Wakati mwingine tuko katika hali ambayo inahitaji sisi kuweka Arduino mahali ambapo kuziba kwenye gridi ya umeme sio chaguo. Hii hufanyika mara nyingi tunapojaribu kuweka habari kwenye wavuti ya mbali, au tunahitaji tu Arduino yako iweze kufanya kazi kwenye
Dhibiti Vifaa Vyako vya Umeme na Kijijini chako cha Televisheni (Kijijini na kwa Uonyeshaji wa Joto na Unyevu: Hatua 9
Dhibiti Vifaa vya Umeme na Kijijini chako cha Televisheni (Kijijini cha mbali) na Joto na Uonyesho wa Unyevu: hi mimi ni Abhay na ni blogi yangu ya kwanza kwenye Maagizo na leo nitakuonyesha jinsi ya kudhibiti vifaa vyako vya umeme na rimoti yako ya tv kwa kujenga hii mradi rahisi. shukrani kwa maabara ya atl kwa msaada na kutoa nyenzo