วันอาทิตย์ที่ 16 กันยายน พ.ศ. 2561

โปรเจค งานที่ 16 ควบคุมคอมพิวเตอร์ด้วยท่าทางใช้ Arduino

ควบคุมคอมพิวเตอร์ด้วยท่าทางใช้ Arduino
ควบคุมคอมพิวเตอร์ด้วยท่าทางใช้ Arduino
เราจะใช้สองเซ็นเซอร์อัลตราโซนิกในการกำหนดตำแหน่งของมือของเราและควบคุมเครื่องเล่นสื่อ (VLC) ตามตำแหน่ง ฉันได้ใช้สิ่งนี้เพื่อสาธิต แต่เมื่อคุณเข้าใจโครงการแล้วคุณสามารถทำอะไรได้โดยเพียงเปลี่ยนโค้ดสองสามบรรทัดและควบคุมแอพพลิเคชันที่คุณชื่นชอบในแบบที่คุณชื่นชอบ

Pre-requisites:

เราได้ครอบคลุมโครงการต่างๆซึ่งรวม Arduino กับ Python แล้ว ดังนั้นฉันสมมติว่าคุณได้ติดตั้ง Python และห้องสมุดอนุกรมของตนและได้ทดลองใช้โครงการพื้นฐานไม่กี่อย่างเช่นกระพริบ LED แล้ว ถ้าไม่ได้ไม่ต้องกังวลคุณสามารถย้อนกลับไปที่การสอนArduino-Python Led Controlling นี้และได้รับพร้อมกับมัน เพื่อให้แน่ใจว่าคุณได้ติดตั้ง Python และห้องสมุด pyserial ก่อนดำเนินการต่อ 

แนวคิดเบื้องหลังโครงการ:

แนวคิดเบื้องหลังโครงการนั้นง่ายมาก เราจะวางเซ็นเซอร์ Ultrasonic (US) ไว้ที่ด้านบนของจอภาพและจะอ่านระยะห่างระหว่างจอภาพและมือของเราโดยใช้ Arduino โดยพิจารณาจากระยะทางที่เราจะดำเนินการบางอย่าง เพื่อดำเนินการบนคอมพิวเตอร์ของเราเราใช้ Python pyautogui library คำสั่งจาก Arduino จะถูกส่งไปยังคอมพิวเตอร์ผ่านพอร์ตอนุกรม (USB) ข้อมูลนี้จะถูกอ่านโดยหลามซึ่งกำลังทำงานอยู่บนคอมพิวเตอร์และใช้ข้อมูลที่อ่านแล้วจะมีการดำเนินการ

แผนภูมิวงจรรวม:

ควบคุมคอมพิวเตอร์ด้วยท่าทางสัมผัสด้วยมือโดยใช้ Arduino Circuit

ในการควบคุมเครื่องพีซีด้วยท่าทางมือเพียงแค่เชื่อมต่อเซ็นเซอร์ Ultrasonic สองชุดกับ Arduino เรารู้ว่าการทำงานของเซนเซอร์ในสหรัฐฯกับ 5V และด้วยเหตุนี้จึงใช้พลังงานจากตัวควบคุมแรงดันไฟฟ้าของ Arduino Arduino สามารถเชื่อมต่อกับ PC / Laptop เพื่อเปิดเครื่องโมดูลและสำหรับการสื่อสารแบบอนุกรม เมื่อการเชื่อมต่อเสร็จสิ้นแล้วให้วางบนจอภาพของคุณตามที่แสดงด้านล่าง ฉันใช้เทปสองด้านเพื่อติดบนจอภาพ แต่คุณสามารถใช้ความคิดสร้างสรรค์ของคุณเองได้ หลังจากการรักษาความปลอดภัยในสถานที่ที่เราสามารถดำเนินการกับการเขียนโปรแกรม
ควบคุมคอมพิวเตอร์โดยใช้ Arduino และอัลตราโซนิค 

การควบคุมคอมพิวเตอร์โดยใช้ท่าทางมือโดยใช้ Arduino และอัลตราโซนิค

การเขียนโปรแกรม Arduino ของคุณ:

Arduino ควรตั้งโปรแกรมให้อ่านระยะห่างของมือจากเซนเซอร์ของสหรัฐฯ โปรแกรมที่สมบูรณ์จะได้รับในตอนท้ายของหน้านี้;ด้านล่างฉันได้ให้คำอธิบายสำหรับโปรแกรม ถ้าคุณยังใหม่กับการเซ็นเซอร์อัลตราโซนิกเพียงแค่ไปผ่านการวัดระยะทาง Arduino และอัลตราโซนิคเซนเซอร์จาก
โดยการอ่านค่าระยะทางที่เราจะมาถึงการกระทำบางอย่างเพื่อควบคุมด้วยท่าทางเช่นในโปรแกรมนี้ฉันได้ตั้งโปรแกรม5 การกระทำไว้เป็นตัวอย่าง
การกระทำที่ 1:เมื่อทั้งสองมือวางอยู่ตรงหน้าเซ็นเซอร์ในระยะไกลโดยเฉพาะวิดีโอในเครื่องเล่น VLC ควรเล่น / หยุดชั่วคราว
การกระทำ 2:เมื่อวางมือขวาขึ้นก่อนเซ็นเซอร์ในระยะไกลโดยเฉพาะวิดีโอควร Fast Forward หนึ่งก้าว
การดำเนินการ 3:เมื่อวางมือซ้ายไว้ก่อนเซ็นเซอร์ในระยะไกลโดยเฉพาะวิดีโอควรจะย้อนกลับหนึ่งขั้นตอน
การดำเนินการที่ 4:เมื่อวางมือขวาขึ้นก่อนเซ็นเซอร์ในระยะใกล้โดยเฉพาะและถ้าย้ายไปทางเซนเซอร์วิดีโอควรเดินหน้าไปข้างหน้าอย่างรวดเร็วและหากย้ายไปวิดีโอควรจะย้อนกลับ
การดำเนินการที่ 5:เมื่อวางมือซ้ายขึ้นก่อนเซ็นเซอร์ในระยะใกล้โดยเฉพาะและจากนั้นถ้าย้ายไปทางเซ็นเซอร์ปริมาณของวิดีโอจะเพิ่มขึ้นและหากเคลื่อนย้ายไปปริมาตรจะลดลง

ให้เราดูว่าโปรแกรมถูกเขียนขึ้นเพื่อดำเนินการข้างต้นอย่างไร ดังนั้นเช่นเดียวกับโปรแกรมทั้งหมดเราเริ่มต้นด้วยการกำหนดขา I / Oตามที่แสดงด้านล่าง เซ็นเซอร์ทั้งสองของสหรัฐฯเชื่อมต่อกับพินดิจิตอล 2,3,4 และ 5 และใช้พลังงานจาก +5V พิน ขาพิ้นท์จะเป็นขาขาออกและหมุด Echo เป็นขาเข้า
การสื่อสารแบบอนุกรมระหว่าง Arduino และ python จะใช้สถานที่ที่อัตรา baud ของ 9600
const int trigger1 = 2; // Trigger pin ของ 1st Sesnor
const int echo1 = 3; // เสียงก้องของ 1 Sesnor
const int trigger2 = 4; // Trigger pin ของ 2nd Sesnor
const int echo2 = 5; // เสียงสะท้อนของ Sesnor 2
การตั้งค่าเป็นโมฆะ () {
Serial.begin (9600);

pinMode (trigger1, OUTPUT);
pinMode (echo1, INPUT);
pinMode (trigger2, OUTPUT);
pinMode (echo2, INPUT);
}

เราจำเป็นต้องคำนวณระยะห่างระหว่างเซนเซอร์และมือแต่ละครั้งก่อนสรุปเกี่ยวกับการกระทำใด ๆ ดังนั้นเราต้องทำหลายครั้งซึ่งหมายความว่ารหัสนี้ควรใช้เป็นฟังก์ชัน เราได้เขียนฟังก์ชันที่ชื่อว่าcalculate_distance ()ซึ่งจะทำให้เราได้ระยะห่างระหว่างเซ็นเซอร์กับมือ
/ * ### ฟังก์ชันคำนวณระยะทาง ### * /
void calculate_distance (เรียก int, echo int)
{
digitalWrite (เรียก, ต่ำ);
delayMicroseconds (2);
digitalWrite (เรียก, HIGH);
delayMicroseconds (10);
digitalWrite (เรียก, ต่ำ);

time_taken = ชีพจร (echo, HIGH);
dist = time_taken * 0.034 / 2;
if (dist> 50)
dist = 50;
}

ภายในวงเล็บหลักของเราเราจะตรวจสอบค่าของระยะทางและดำเนินการดังกล่าวข้างต้น ก่อนหน้านี้เราใช้ตัวแปรสองตัวแปรdistLและdistRซึ่งได้รับการอัพเดตด้วยค่าระยะทางปัจจุบัน
calculate_distance (trigger1, echo1);
distL = dist; / / รับระยะทางของเซ็นเซอร์ด้านซ้าย

calculate_distance (trigger2, echo2);
distR = dist; / / รับระยะทางของเซ็นเซอร์ขวา

เนื่องจากเรารู้ระยะห่างระหว่างเซ็นเซอร์ทั้งสองตอนนี้เราสามารถเปรียบเทียบกับค่าที่กำหนดไว้ล่วงหน้าและมาถึงการกระทำบางอย่าง ตัวอย่างเช่นถ้าทั้งสองมือวางอยู่ที่ระยะ 40 เมตรแล้วเราจะเล่น / หยุดวิดีโอชั่วคราว ที่นี่คำว่า"Play / Pause"จะถูกส่งผ่านพอร์ตอนุกรม
ถ้า ((distL> 40 && distR> 40) && (distL <50 && distR <50)) // ตรวจหาทั้งสองมือ
{Serial.println ( "เล่น / หยุดชั่วคราว"); ความล่าช้า (500);}

หากวางมือขวาไว้ด้านหลังโมดูลแล้วเราจะกรอวิดีโอไปข้างหน้าโดยขั้นตอนเดียวและถ้าเป็นมือซ้ายเราจะย้อนกลับโดยขั้นตอนเดียว จากคำสั่งนี้จะมีการส่งคำว่า"Rewind" หรือ "Forward"ไปทางพอร์ตอนุกรม
ถ้า ((distL> 40 && distL <50) && (distR == 50)) // ตรวจหามือซ้าย
{Serial.println ( "ย้อนกลับ"); ความล่าช้า (500);}

if ((distR> 40 && distR <50) && (distL == 50)) // ตรวจจับมือขวา
{Serial.println ( "ไปข้างหน้า"); ความล่าช้า (500);}

ข้าศึกควบคุมรายละเอียดของไดรฟ์ข้อมูลและติดตามเราใช้วิธีการที่แตกต่างกันเพื่อป้องกันการเรียกเท็จ เพื่อควบคุมปริมาตรเราต้องวางด้านซ้ายมือ เมื่อใช้ระยะห่าง 15 เซนติเมตรคุณสามารถเคลื่อนไปทางเซนเซอร์เพื่อลดปริมาณการเคลื่อนตัวออกจากเซ็นเซอร์เพื่อเพิ่มระดับเสียง รหัสเดียวกันจะแสดงด้านล่าง ขึ้นอยู่กับการกระทำที่นี่คำว่า "Vup" หรือ "Vdown" จะถูกส่งผ่านพอร์ตอนุกรม
/ / ล็อคซ้าย - โหมดการควบคุม
if (distL> = 13 && distL <= 17)
{
  ล่าช้า (100); // เวลาจับมือ
  calculate_distance (trigger1, echo1);
  distL = dist;
  if (distL> = 13 && distL <= 17)
  {
    Serial.println ("Left Locked");
    ในขณะที่ (distL <= 40)
    {
      calculate_distance (trigger1, echo1);
      distL = dist;
      ถ้า (distL <10) // มือผลักเข้า 
      {Serial.println ("Vup"); ความล่าช้า (300);}
      ถ้า (distL> 20) // มือดึงออก
      {Serial.println ("Vdown"); ความล่าช้า (300);}
    }
  }
}

เราสามารถใช้วิธีการเดียวกันสำหรับเซ็นเซอร์ด้านขวายังเพื่อควบคุมการติดตามของวิดีโอ นั่นคือถ้าเราขยับมือขวาไปทางเซนเซอร์มันจะเดินหน้าไปข้างหน้าอย่างรวดเร็วและหากคุณเคลื่อนออกจากเซ็นเซอร์ก็จะย้อนหนังกลับ จากคำสั่งนี้จะมีการส่งคำว่า "Rewind" หรือ "Forward" ไปทางพอร์ตอนุกรม
ขณะนี้คุณสามารถอ่านโค้ดทั้งหมดสำหรับคอมพิวเตอร์ที่ควบคุมด้วยท่าทางนี้ได้จากตอนท้ายของหน้าและลองทำเป็นฉบับรวมแล้วคัดลอกไปยัง Arduino IDE ของคุณ

การเขียนโปรแกรม Python ของคุณ:

โปรแกรมหลามสำหรับโครงการนี้ง่ายมาก เราต้องสร้างการสื่อสารแบบอนุกรมกับ Arduino ผ่านอัตราการส่งข้อมูลที่ถูกต้องและดำเนินการคีย์บอร์ดขั้นพื้นฐาน ขั้นตอนแรกกับงูหลามคือการติดตั้งโมดูลyautogui ให้แน่ใจว่าคุณทำตามขั้นตอนนี้เพราะโปรแกรมจะไม่ทำงานโดยไม่ต้องโมดูล pyautogui

การติดตั้งโมดูล pyautogui สำหรับ Windows:
ทำตามขั้นตอนด้านล่างเพื่อติดตั้งPyautoguiสำหรับ Windows ถ้าคุณกำลังใช้แพลตฟอร์มอื่นขั้นตอนจะมีลักษณะคล้ายกันมากหรือน้อย ตรวจสอบให้แน่ใจว่าคอมพิวเตอร์ / แล็ปท็อปเชื่อมต่อกับอินเทอร์เน็ตและทำตามขั้นตอนด้านล่าง
ขั้นตอนที่ 1:เปิดหน้าต่างคำสั่ง Windows และเปลี่ยนไดเรกทอรีไปยังโฟลเดอร์ที่คุณติดตั้ง python โดยค่าเริ่มต้นควรเป็นคำสั่ง
cd C: \ Python27

ขั้นตอนที่ 2:ภายในไดเรกทอรี python ของคุณใช้คำสั่งpython -m pip install -upgrade pipเพื่ออัพเกรด pip ของคุณ Pip เป็นเครื่องมือในหลามซึ่งจะช่วยให้เราสามารถติดตั้งโมดูลหลามได้อย่างง่ายดาย เมื่อโมดูลนี้ได้รับการอัปเกรดแล้ว (ดังแสดงในภาพด้านล่าง) ให้ดำเนินการต่อไป
python -m pip install -upgrade pip

ขั้นที่ 3:ใช้คำสั่ง " python -m pip install pyautogui " เพื่อติดตั้งโมดูล pyautogui เมื่อขั้นตอนนี้ประสบความสำเร็จคุณควรเห็นหน้าจอบางอย่างที่คล้ายกับด้านล่างนี้
python -m pip install -upgrade pip
การติดตั้ง Python auto gui โดยใช้ command prompt

ตอนนี้โมดูลpyautoguiและโมดูลpyserial (ติดตั้งในบทแนะนำก่อนหน้านี้ ) ได้รับการติดตั้งเรียบร้อยแล้วกับงูหลามเราสามารถดำเนินการกับโปรแกรมหลาม รหัสหลามสมบูรณ์จะได้รับในตอนท้ายของการกวดวิชาแต่คำอธิบายสำหรับเดียวกันมีดังนี้
ให้เรานำเข้าทั้งสามโมดูลที่จำเป็นสำหรับโครงการนี้ มี pyautogui, python แบบอนุกรมและเวลา
นำเข้า serial # สินค้านำเข้าแบบ Serial สำหรับการสื่อสารแบบอนุกรม
เวลานำเข้า # ต้องการใช้ฟังก์ชันล่าช้า
นำเข้า pyautogui

ถัดไปเราสร้างการเชื่อมต่อกับ Arduino ผ่านพอร์ต COM ในคอมพิวเตอร์ของฉัน Arduino เชื่อมต่อกับ COM 18. ใช้ Device Manager เพื่อค้นหาพอร์ต COM ที่ Arduino เชื่อมต่อและแก้ไขบรรทัดต่อไปนี้ตามลำดับ
ArduinoSerial = serial.Serial ('com18', 9600) # สร้างวัตถุพอร์ตอนุกรมที่เรียกว่า arduinoSerialData
time.sleep (2) # รอประมาณ 2 วินาทีเพื่อให้การสื่อสารเริ่มต้นขึ้น

ในวงจำกัดในขณะที่เราซ้ำ ๆ ฟังพอร์ต COM และเปรียบเทียบคำสำคัญกับงานก่อน defied ใด ๆและทำให้กดแป้นพิมพ์ตาม
ในขณะที่ 1:
    incoming = str (ArduinoSerial.readline ()) #read ข้อมูลอนุกรมและพิมพ์เป็นบรรทัด
    พิมพ์ขาเข้า
    
    หาก 'เล่น / หยุดชั่วคราว' ในสายเรียกเข้า:
        pyautogui.typewrite (['space'], 0.2)

    ถ้า 'Rewind' เข้ามา:
        pyautogui.hotkey ('ctrl', 'left')  

    ถ้า 'ส่งต่อ' ในขาเข้า:
        pyautogui.hotkey ('ctrl', 'right') 

    ถ้า 'Vup' เข้ามา:
        pyautogui.hotkey ('ctrl', 'down')
        
    ถ้า 'Vdown' ในขาเข้า:
        pyautogui.hotkey ('ctrl', 'up')

ที่คุณสามารถดูกดคีย์เราก็ต้องใช้คำสั่ง"pyautogui.typewrite (['space'], 0.2)"ซึ่งจะกดพื้นที่สำคัญสำหรับ 0.2sec หากต้องการคีย์ลัดเช่น ctrl + S คุณสามารถใช้คำสั่ง"pyautogui.hotkey ('ctrl', 's')"

ฉันได้ใช้รวมกันเหล่านี้เพราะพวกเขาทำงานใน VLC เครื่องเล่นสื่อคุณสามารถปรับแต่งพวกเขาในแบบที่คุณต้องการในการสร้างโปรแกรมของคุณเองเพื่อใด ๆควบคุมอะไรในเครื่องคอมพิวเตอร์ด้วยท่าทาง

คอมพิวเตอร์ที่ควบคุมด้วยท่าทางในการดำเนินการ:

ทำการเชื่อมต่อตามที่กำหนดข้างต้นและอัปโหลดโค้ด Arduino บนบอร์ด Arduino ของคุณ จากนั้นใช้สคริปต์หลามด้านล่างและเปิดโปรแกรมบนแล็ปท็อป / คอมพิวเตอร์ของคุณ
ตอนนี้คุณสามารถเล่นภาพยนตร์ในคอมพิวเตอร์ของคุณโดยใช้เครื่องเล่นสื่อ VLC และใช้มือของคุณเพื่อควบคุมภาพยนตร์ตามที่แสดงในวิดีโอที่ระบุไว้ด้านล่าง
ควบคุมคอมพิวเตอร์ด้วยท่าทางใช้ Arduino

หวังว่าคุณจะเข้าใจโครงการและสนุกกับการเล่นกับมัน นี่เป็นเพียงตัวอย่างเท่านั้นและคุณสามารถใช้ความคิดสร้างสรรค์ของคุณเพื่อสร้างท่าทางที่เจ๋งมากขึ้นในการควบคุมสิ่งต่างๆรอบ ๆ ตัว แจ้งให้เราทราบว่านี่เป็นประโยชน์และสิ่งที่คุณจะสร้างขึ้นโดยใช้ข้อมูลนี้ในส่วนความคิดเห็นและเรายินดีที่จะทราบข้อมูลนี้
รหัส
Arduino รหัสสินค้า:
/ * 
 โปรแกรมสำหรับการควบคุมท่าทาง VLC Player 
 * ควบคุมงูหลาม
 * รหัสโดย B.Aswinth Raj 
 * วันที่: 11-10-2017 
 * เว็บไซต์: www.circuitdigest.com
 * /
const int trigger1 = 2; / เรียก Trigger ของ 1 Sesnor 
const echo1 int = 3; / / เสียงสะท้อนของ Sesnor 1 
const int trigger2 = 4; // Trigger pin ของ 2nd Sesnor 
const int echo2 = 5; // Echo pin ของ Sesnor 2
เวลานาน; 
int dist, distL, distR;

การตั้งค่าเป็นโมฆะ () { 
Serial.begin (9600); 
  
pinMode (trigger1, OUTPUT); 
pinMode (echo1, INPUT); 
pinMode (trigger2, OUTPUT); 
pinMode (echo2, INPUT); 
}
/ * ### ฟังก์ชันคำนวณระยะทาง ### * / 
void calculate_distance (int trigger, int echo) 

digitalWrite (เรียก, ต่ำ); 
delayMicroseconds (2); 
digitalWrite (เรียก, HIGH); 
delayMicroseconds (10); 
digitalWrite (เรียก, ต่ำ);
time_taken = ชีพจร (echo, HIGH); 
dist = time_taken * 0.034 / 2; 
ถ้า (dist> 50) 
dist = 50; 
}
void loop () {/ วงแหวนไม่มีที่สิ้นสุด
calculate_distance (trigger1, echo1); 
distL = dist; / / รับระยะทางของเซ็นเซอร์ด้านซ้าย
calculate_distance (trigger2, echo2); 
distR = dist; / / รับระยะทางของเซ็นเซอร์ขวา
// ยกเลิกการตรวจสอบสำหรับ debudding 
/*Serial.print("L= "); 
Serial.println (distL); 
Serial.print ( "R ="); 
Serial.println (Distr); 
* /
// หยุดโหมด - ถือ
ถ้า ((distL> 40 && distR> 40) && (distL <50 && distR <50)) // ตรวจหามือทั้งสองข้าง
{Serial.println ("เล่น / หยุดชั่วคราว"); ความล่าช้า (500);}
calculate_distance (trigger1, echo1); 
distL = dist;
calculate_distance (trigger2, echo2); 
distR = dist;

/ / โหมดการควบคุม
/ / ล็อคซ้าย - โหมดการควบคุม
ถ้า (distL> = 13 & & distL <= 17) 

  ล่าช้า (100); / / จับมือเวลา
  calcul_distance (trigger1, echo1); 
  distL = dist; 
  if (distL> = 13 && distL <= 17) 
  { 
    Serial.println ("Left Locked"); 
    while (distL <= 40) 
    { 
      calculate_distance (trigger1, echo1); 
      distL = dist; 
      ถ้า (distL <10) / / มือผลักดันใน  
      {Serial.println ("Vup"); delay (300);} 
      ถ้า (distL> 20) // มือดึงออก
      {Serial.println ("Vdown"); ความล่าช้า (300);} 
    } 
  } 
}
/ / ล็อคขวา - โหมดการควบคุม
ถ้า (distR> = 13 && distR <= 17) 

  ล่าช้า (100); / / จับมือเวลา
  calcul_distance (ทริกเกอร์ 2, echo2); 
  distR = dist; 
  if (distR> = 13 && distR <= 17) 
  { 
    Serial.println ("ถูกต้อง"); 
    ขณะที่ (distR <= 40) 
    { 
      calculate_distance (trigger2, echo2); 
      distR = dist; 
      if (distR <10) // Right hand pushed in 
      {Serial.println ("Rewind"); ล่าช้า (300);} 
      ถ้า (distR> 20) // ขวาดึงมือออก
      {Serial.println ("Forward"); ความล่าช้า (300);} 
  } 

}
ล่าช้า (200); 
}

Python Code:
นำเข้า serial # นำเข้าจากคลังสินค้าสำหรับเวลาในการติดต่อสื่อสารแบบอนุกรม
#Required to use delay function 
import pyautogui
ArduinoSerial = serial.Serial ('com18', 9600) # สร้างอ็อบเจ็กต์พอร์ตอนุกรมที่เรียกว่า arduinoSerialData 
time.sleep (2) # รอประมาณ 2 วินาทีเพื่อให้การสื่อสารเป็นไป
ในขณะที่ 1: 
    incoming = str (ArduinoSerial.readline ()) # อ่านข้อมูลอนุกรมและพิมพ์เป็นบรรทัด
    พิมพ์ขาเข้า
    
    หาก 'เล่น / หยุดชั่วคราว' ในขาเข้า: 
        pyautogui.typewrite (['space'], 0.2)
    ถ้า 'Rewind' เข้ามา: 
        pyautogui.hotkey ('ctrl', 'left')  
    ถ้า 'ส่งต่อ' ในขาเข้า: 
        pyautogui.hotkey ('ctrl', 'right') 
    ถ้า 'Vup' ในขาเข้า: 
        pyautogui.hotkey ('ctrl', 'down')
        
    ถ้า 'Vdown' ในขาเข้า: 
        pyautogui.hotkey ('ctrl', 'up')
    incoming = "";
    
 
วีดีโอ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

งานครั้งที่ 5 ในสถานที่ฝึกงานของ นศ ใช้ระบบควบคุณภาพอย่างไร

มาตรฐาน ISO 9001 ISO 9001 เป็นมาตรฐานสากลที่องค์กรธุรกิจทั่วโลกให้ความสำคัญ เพื่อความเป็นเลิศทางด้านคุณภาพ และความมีประสิทธิภาพของการด...