ควบคุมคอมพิวเตอร์ด้วยท่าทางใช้ Arduino |
เราจะใช้สองเซ็นเซอร์อัลตราโซนิกในการกำหนดตำแหน่งของมือของเราและควบคุมเครื่องเล่นสื่อ (VLC) ตามตำแหน่ง ฉันได้ใช้สิ่งนี้เพื่อสาธิต แต่เมื่อคุณเข้าใจโครงการแล้วคุณสามารถทำอะไรได้โดยเพียงเปลี่ยนโค้ดสองสามบรรทัดและควบคุมแอพพลิเคชันที่คุณชื่นชอบในแบบที่คุณชื่นชอบ
Pre-requisites:
เราได้ครอบคลุมโครงการต่างๆซึ่งรวม Arduino กับ Python แล้ว ดังนั้นฉันสมมติว่าคุณได้ติดตั้ง Python และห้องสมุดอนุกรมของตนและได้ทดลองใช้โครงการพื้นฐานไม่กี่อย่างเช่นกระพริบ LED แล้ว ถ้าไม่ได้ไม่ต้องกังวลคุณสามารถย้อนกลับไปที่การสอนArduino-Python Led Controlling นี้และได้รับพร้อมกับมัน เพื่อให้แน่ใจว่าคุณได้ติดตั้ง Python และห้องสมุด pyserial ก่อนดำเนินการต่อ
แนวคิดเบื้องหลังโครงการ:
แนวคิดเบื้องหลังโครงการนั้นง่ายมาก เราจะวางเซ็นเซอร์ Ultrasonic (US) ไว้ที่ด้านบนของจอภาพและจะอ่านระยะห่างระหว่างจอภาพและมือของเราโดยใช้ Arduino โดยพิจารณาจากระยะทางที่เราจะดำเนินการบางอย่าง เพื่อดำเนินการบนคอมพิวเตอร์ของเราเราใช้ Python pyautogui library คำสั่งจาก Arduino จะถูกส่งไปยังคอมพิวเตอร์ผ่านพอร์ตอนุกรม (USB) ข้อมูลนี้จะถูกอ่านโดยหลามซึ่งกำลังทำงานอยู่บนคอมพิวเตอร์และใช้ข้อมูลที่อ่านแล้วจะมีการดำเนินการ
แผนภูมิวงจรรวม:
ในการควบคุมเครื่องพีซีด้วยท่าทางมือเพียงแค่เชื่อมต่อเซ็นเซอร์ Ultrasonic สองชุดกับ Arduino เรารู้ว่าการทำงานของเซนเซอร์ในสหรัฐฯกับ 5V และด้วยเหตุนี้จึงใช้พลังงานจากตัวควบคุมแรงดันไฟฟ้าของ Arduino Arduino สามารถเชื่อมต่อกับ PC / Laptop เพื่อเปิดเครื่องโมดูลและสำหรับการสื่อสารแบบอนุกรม เมื่อการเชื่อมต่อเสร็จสิ้นแล้วให้วางบนจอภาพของคุณตามที่แสดงด้านล่าง ฉันใช้เทปสองด้านเพื่อติดบนจอภาพ แต่คุณสามารถใช้ความคิดสร้างสรรค์ของคุณเองได้ หลังจากการรักษาความปลอดภัยในสถานที่ที่เราสามารถดำเนินการกับการเขียนโปรแกรม
การเขียนโปรแกรม 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 ผ่านอัตราการส่งข้อมูลที่ถูกต้องและดำเนินการคีย์บอร์ดขั้นพื้นฐาน ขั้นตอนแรกกับงูหลามคือการติดตั้งโมดูลp 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
ตอนนี้โมดูล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 รหัสสินค้า:
/ *
โปรแกรมสำหรับการควบคุมท่าทาง VLC Player
* ควบคุมงูหลาม
* รหัสโดย B.Aswinth Raj
* วันที่: 11-10-2017
* เว็บไซต์: www.circuitdigest.com
* /
โปรแกรมสำหรับการควบคุมท่าทาง 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
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;
int dist, distL, distR;
การตั้งค่าเป็นโมฆะ () {
Serial.begin (9600);
pinMode (trigger1, OUTPUT);
pinMode (echo1, INPUT);
pinMode (trigger2, OUTPUT);
pinMode (echo2, INPUT);
}
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 (เรียก, ต่ำ);
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;
}
dist = time_taken * 0.034 / 2;
ถ้า (dist> 50)
dist = 50;
}
void loop () {/ วงแหวนไม่มีที่สิ้นสุด
calculate_distance (trigger1, echo1);
distL = dist; / / รับระยะทางของเซ็นเซอร์ด้านซ้าย
calculate_distance (trigger1, echo1);
distL = dist; / / รับระยะทางของเซ็นเซอร์ด้านซ้าย
calculate_distance (trigger2, echo2);
distR = dist; / / รับระยะทางของเซ็นเซอร์ขวา
distR = dist; / / รับระยะทางของเซ็นเซอร์ขวา
// ยกเลิกการตรวจสอบสำหรับ debudding
/*Serial.print("L= ");
Serial.println (distL);
Serial.print ( "R =");
Serial.println (Distr);
* /
/*Serial.print("L= ");
Serial.println (distL);
Serial.print ( "R =");
Serial.println (Distr);
* /
// หยุดโหมด - ถือ
ถ้า ((distL> 40 && distR> 40) && (distL <50 && distR <50)) // ตรวจหามือทั้งสองข้าง
{Serial.println ("เล่น / หยุดชั่วคราว"); ความล่าช้า (500);}
ถ้า ((distL> 40 && distR> 40) && (distL <50 && distR <50)) // ตรวจหามือทั้งสองข้าง
{Serial.println ("เล่น / หยุดชั่วคราว"); ความล่าช้า (500);}
calculate_distance (trigger1, echo1);
distL = dist;
distL = dist;
calculate_distance (trigger2, echo2);
distR = dist;
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);}
}
}
}
/ / ล็อคซ้าย - โหมดการควบคุม
ถ้า (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);}
}
}
}
ถ้า (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
#Required to use delay function
import pyautogui
ArduinoSerial = serial.Serial ('com18', 9600) # สร้างอ็อบเจ็กต์พอร์ตอนุกรมที่เรียกว่า arduinoSerialData
time.sleep (2) # รอประมาณ 2 วินาทีเพื่อให้การสื่อสารเป็นไป
time.sleep (2) # รอประมาณ 2 วินาทีเพื่อให้การสื่อสารเป็นไป
ในขณะที่ 1:
incoming = str (ArduinoSerial.readline ()) # อ่านข้อมูลอนุกรมและพิมพ์เป็นบรรทัด
พิมพ์ขาเข้า
หาก 'เล่น / หยุดชั่วคราว' ในขาเข้า:
pyautogui.typewrite (['space'], 0.2)
incoming = str (ArduinoSerial.readline ()) # อ่านข้อมูลอนุกรมและพิมพ์เป็นบรรทัด
พิมพ์ขาเข้า
หาก 'เล่น / หยุดชั่วคราว' ในขาเข้า:
pyautogui.typewrite (['space'], 0.2)
ถ้า 'Rewind' เข้ามา:
pyautogui.hotkey ('ctrl', 'left')
pyautogui.hotkey ('ctrl', 'left')
ถ้า 'ส่งต่อ' ในขาเข้า:
pyautogui.hotkey ('ctrl', 'right')
pyautogui.hotkey ('ctrl', 'right')
ถ้า 'Vup' ในขาเข้า:
pyautogui.hotkey ('ctrl', 'down')
pyautogui.hotkey ('ctrl', 'down')
ถ้า 'Vdown' ในขาเข้า:
pyautogui.hotkey ('ctrl', 'up')
pyautogui.hotkey ('ctrl', 'up')
incoming = "";
วีดีโอ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น