ทุกอย่างเริ่มต้นด้วยเกมเล็ก ๆ จากยุคมืดที่เรียกว่า“ มาริโอ” ตั้งแต่สมัยที่ยังเป็นเด็กตัวเล็ก ๆ กระโดดตามเป็ดเพื่อช่วยเจ้าหญิงของฉันไปจนถึงการเป็นเจ้าชายรูปหล่อที่สัญจรไปมาในเปอร์เซีย (เจ้าชายแห่งเปอร์เซีย) ต่อสู้กับความมืด เพื่อช่วยโลกของฉันไว้เบื้องหลังฉันเป็นแฟนตัวยงของการเล่นวิดีโอเกมและฉันก็เล่นมันขึ้นมา แต่บางครั้งพวกเขาก็เบื่อและฉันรู้สึกไม่ค่อยมีส่วนร่วมกับมัน ทุกวันนี้เกมคอนโซลขั้นสูงช่วยให้เล่นเกมเสมือนจริงและช่วยให้เรารู้สึกว่าเกมดีขึ้นมากเกินกว่าที่คีย์บอร์ดหรือเมาส์จะทำได้
ด้วยความที่เป็นคนที่กระตือรือร้น Arduino ฉันเบื่อการเล่นเกมที่มีชื่อเสียงที่เรียกว่า“นกโกรธ”โดยใช้แป้นพิมพ์และเมาส์และตัดสินใจที่จะสร้างของตัวเองควบคุมเกมโดยใช้เซนเซอร์ Flex และมิเตอร์ เมื่อเซ็นเซอร์ดิ้นถูกดึงนกบนหนังสติ๊กก็จะถูกดึงออกไปด้วยและคุณสามารถใช้โพเทนชิออมิเตอร์เพื่อกำหนดทิศทางที่จะเปิด จากนั้นเมื่อคุณปล่อยเซ็นเซอร์ดิ้นนกจะเปิดตัว ฉันสนุกกับการทำมันมากดังนั้นหากคุณต้องการสร้างสิ่งที่คล้ายกันมากบทช่วยสอนนี้จะเป็นประโยชน์ กวดวิชานี้จะเป็นประโยชน์ในการควบคุมเมาส์เคอร์เซอร์ใช้มิเตอร์
ข้อกำหนดของซอฟต์แวร์และฮาร์ดแวร์:
ซอฟต์แวร์:
- Arduino IDE
- กำลังประมวลผล IDE
- เกม Angry Birds บนคอมพิวเตอร์
ฮาร์ดแวร์:
- Arduino (ทุกรุ่น)
- โพเทนชิออมิเตอร์
- เซนเซอร์ Flex
- ตัวต้านทาน 47K โอห์ม
- การเชื่อมต่อสายไฟ
- เขียงหั่นขนม
แนวคิดเบื้องหลัง:
คณะ Arduino อ่านค่าจากมิเตอร์และ Flex Senorและส่งพวกเขาไปที่แล็ปท็อป / คอมพิวเตอร์ผ่านพอร์ต COM USB ผ่านทางปกติ Serial.write () ฟังก์ชั่น จากนั้นเราอ่านข้อมูลนี้โดยใช้การประมวลผลและควบคุมเคอร์เซอร์ของเมาส์โดยใช้คลาส Robot ใน Java ซึ่งได้รับการสนับสนุนโดยการประมวลผล IDE เราได้ตั้งโปรแกรม IDE การประมวลผลในลักษณะที่เมื่อดึงเซ็นเซอร์ Flex จะเกิดการคลิกเมาส์และขึ้นอยู่กับว่ามีการดึงตัวชี้เมาส์จะเคลื่อนที่ไปในทิศทาง X มากเพียงใด จากนั้นขึ้นอยู่กับค่าจากโพเทนชิออมิเตอร์เราจะเลื่อนเคอร์เซอร์ของเมาส์ไปในทิศทาง Y ด้วยวิธีนี้เราสามารถกำหนดทิศทางที่นกควรจะออก
แผนภูมิวงจรรวม:
วงจรสำหรับเล่น Angry Bird โดยใช้ Flex Sensor และ Potentiometerเป็นเรื่องง่าย
เราได้เชื่อมต่อโพเทนชิออมิเตอร์และเซ็นเซอร์แบบยืดหยุ่นเข้ากับอินพุตอะนาล็อก (A0, A1) ของ Arduino เอาต์พุตของเซ็นเซอร์ Flex ยังดึงลงโดยใช้ตัวต้านทานแบบดึงลง 47K
คุณสามารถเชื่อมต่อโดยตรงบนเขียงหั่นขนมหรือบัดกรีเข้ากับบอร์ด Perf และประกอบเข้ากับถุงมือหรือสิ่งของเพื่อให้สร้างสรรค์มากขึ้น ฉันเพิ่งใช้เขียงหั่นขนมเพื่อทำการเชื่อมต่อดังที่แสดงด้านล่าง:
โปรแกรม Arduino:
รหัส Arduino ที่สมบูรณ์จะได้รับในตอนท้ายของบทช่วยสอน มีการอธิบายบรรทัดสำคัญสองสามข้อด้านล่าง
เราเริ่มต้นโปรแกรมให้ทำงานด้วยอัตราบอด 9600 และเริ่มอ่านค่าจากเซ็นเซอร์ Flex และโพเทนชิออมิเตอร์ อย่างที่เราทราบกันดีว่า ฟังก์ชัน serial.write () สามารถส่งข้อมูลได้ครั้งละหนึ่งไบต์เท่านั้น เนื่องจากหนึ่งไบต์คือ 8 บิตและ 2 ^ 8 = 256 เราจะสามารถส่งค่าจาก 0 ถึง 256 ดังนั้นเราจึงต้องบีบอัดค่าของเอาต์พุตเซ็นเซอร์ Flex และเอาต์พุตโพเทนชิออมิเตอร์เป็น 0 ถึง 256
ในการทำเช่นนั้นเราใช้ฟังก์ชัน map () ใน Arduino ค่าทั้งหมดจากเซ็นเซอร์เฟล็กซ์จะถูกแปลงจาก 5 เป็น 100 ดังนั้นเมื่อเราโค้งงอเซ็นเซอร์จะเพิ่มขึ้นจาก 5 และเมื่อปล่อยเซ็นเซอร์จะกลับไปที่ 5 หากต้องการระบุการคลิกเมาส์จะใช้ค่า 1 และ 0 เมื่อ 1 ถูกส่งเมาส์จะถูกกดและเมื่อส่ง 0 เมาส์จะถูกปล่อย
ถ้า (FlexValue> = 65 && FlexValue <= 120) // เซ็นเซอร์ Flex ของฉันแตกต่างกันไปตั้งแต่ 65 ถึง 120 ของคุณอาจแตกต่างกัน {FlexValue = map (FlexValue, 120,65,0,100); // อิงจากการดัดแปลงเป็น 0 ถึง 100 ถ้า (FlexValue> = 5) // 1 และ 0 ใช้สำหรับการคลิกเมาส์ดังนั้นเริ่มจาก 5 {Mclick = true; Serial.write (1); // 1 ถูกส่งไปให้คลิกเมาส์ซ้าย Serial.write (FlexValue); // ค่า Flex คือระยะทางในการเลื่อนเมาส์ไปในทิศทาง X} else {Mclick = false; Serial.write (0);}}
ในทำนองเดียวกันค่าในรูปแบบโพเทนชิออมิเตอร์จะถูกแปลงจาก 101 เป็น 200 sing the map () และถูกส่งไปยังพอร์ต COM ของแล็ปท็อปที่ฟ้อง ฟังก์ชัน Serial.write () ดังที่แสดงด้านล่าง
ถ้า (potValue <= 200) {potValue = แผนที่ (potValue, 0,200,101,201); // จากนั้นแปลงเป็น 101 ถึง 201 Serial.write (potValue); // ค่าหม้อคือระยะทางในการเลื่อนเมาส์ไปในทิศทาง Y}
ส่วนที่เหลือของโปรแกรมอธิบายโดยใช้ความคิดเห็น
รหัสการประมวลผล:
การประมวลผลเป็นแอปพลิเคชันการพัฒนาแบบ Open-Source และสามารถดาวน์โหลดและนำไปใช้ในการพัฒนาโครงการที่น่าสนใจโดยใช้ Arduino หรือไมโครคอนโทรลเลอร์อื่น ๆ ได้อย่างง่ายดาย เราได้ทำโปรเจ็กต์บางอย่างโดยใช้การประมวลผลแล้วและคุณสามารถตรวจสอบได้โดยคลิกที่ลิงค์ด้านล่าง
- DIY วิทยุ FM โดยใช้การประมวลผล
- ความจริงเสมือน / การควบคุมท่าทางโดยใช้ Arduino
- ห้องแชทส่วนตัวโดยใช้ Arduino
- ระบบเรดาร์ Arduino โดยใช้แอปประมวลผลและเซ็นเซอร์อัลตราโซนิก
- การตรวจจับใบหน้าแบบเรียลไทม์และการติดตามโดยใช้ Arduino
- DIY Speedometer โดยใช้ Arduino และการประมวลผล
- เกมปิงปองโดยใช้ Arduino Accelerometer
- หุ่นยนต์สองมือโดยใช้ Arduino
- กล้องถ่ายภาพความร้อน DIY Arduino
ในโครงการนี้เราได้ใช้ IDE การประมวลผลเพื่ออ่านค่าพอร์ต COM และควบคุมตัวชี้เมาส์ตามค่าที่ได้รับผ่านพอร์ต COM รหัสการประมวลผลที่สมบูรณ์สำหรับการนี้ Angry Bird ควบคุมเกมสามารถดาวน์โหลดได้จากลิงค์ด้านล่าง:
- รหัสการประมวลผลสำหรับตัวควบคุมเกม Angry Bird นี้ (คลิกขวาและ 'บันทึกลิงค์เป็น')
โปรแกรม Arduino สามารถพบได้ในตอนท้ายของบทช่วยสอนนี้ รหัสการประมวลผลได้รับการแก้ไขเพื่อให้เหมาะกับวัตถุประสงค์ของเราจากรหัสที่โยคีมอบให้ในหน้า GitHub ของเขา
ข้อมูลที่มาจากพอร์ต COM ควรอ่านด้วยอัตราการส่งข้อมูลเดียวกันกับที่ส่งจาก Arduino ตรวจสอบด้วยว่าพอร์ต COM ใดที่ Arduino ของคุณเชื่อมต่อโดยใช้ตัวจัดการอุปกรณ์ Arduino ของฉันถูกเชื่อมต่อกับ COM3 และมันก็เป็น 0 THพอร์ตในคอมพิวเตอร์ของฉันและอัตราการส่งข้อมูลใน Arduino เป็น 9600 เพื่อให้รหัสเป็นดังนี้
พอร์ต = Serial ใหม่ (นี่คือ Serial.list (), 9600);
เมื่อเราเริ่มอ่านค่าเราจะแยกความแตกต่างโดยการรับรู้ตามค่าของมันตามวิธีที่เราส่งจาก Arduino ค่าจะถูกแมปอีกครั้งจาก 0 ถึง 100 เพื่อให้เราสามารถควบคุมเมาส์ตามค่านั้นได้
ถ้า (port.available ()> 0) {data = port.read (); println (ข้อมูล); // อ่านข้อมูลจากพอร์ต COM และบันทึกเป็น data} if (data> = 101 && data <= 201) // ถ้าค่า if จาก 101 ถึง 201 ก็ต้องมาจาก Potentiometer {Turn = int (map (data, 101,201,0,100)); // ใช้ค่านั้นเพื่อหมุน catapullt} if (data> = 5 && data <= 100) // ถ้าค่าถ้าจาก 5 ถึง 100 จะต้องมาจาก Flex Sensor {Pull = int (แผนที่ (ข้อมูล, 5,100, 0,100));} // ใช้ค่านั้นเพื่อดึงหนังสติ๊ก if (data == 1) click = true; // ใช้ค่านั้นเพื่อกดปุ่มเมาส์ถ้า (data == 0) click = false; // ใช้ค่านั้นเพื่อปล่อยปุ่มเมาส์
เมื่อเราจัดหมวดหมู่ข้อมูลแล้วเราสามารถควบคุมเมาส์โดยใช้ Robot Java Class ในการประมวลผล คำสั่ง robot.mouseMove (crntX-Pull, crntY + Turn); สามารถใช้เพื่อเลื่อนเมาส์ไปยังตำแหน่งที่ต้องการและเส้น robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); และ robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); สามารถใช้เพื่อกดหรือปล่อยปุ่มเมาส์ตามลำดับ
ถ้า (คลิก == เท็จ) // เมื่อ Flex Sesnor ไม่ถูกดึงออกมา {crntX = (int) p.getX (); crntY = (int) p.getY (); ถ้า (Pull> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // ปล่อยปุ่มเมาส์} if (click == true) // เมื่อ Flex Sesnor ถูกดึง {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // กดปุ่มเมาส์ robot.mouseMove (crntX-Pull, crntY + Turn); // เลื่อนเมาส์ตามค่า Flex และ POT}}
IDE การประมวลผลเมื่อเปิดใช้งานจะแสดงกล่องโต้ตอบขนาดเล็กซึ่งคุณสามารถค้นหาค่าของ Pull, Turn และสถานะของ Mouse Click ดังที่แสดงด้านล่าง
รายละเอียดนี้สามารถใช้เพื่อดีบักโปรแกรมหรือแก้ไขข้อมูลที่ต้องการ
การทำงาน:
เพื่อให้โครงการ Angry Birdทำงานโดยใช้รหัสที่ให้มาให้ประกอบฮาร์ดแวร์ของคุณตามแผนภาพวงจรและอัปโหลดรหัส Arduino ที่กำหนด จากนั้นสังเกตว่าพอร์ต COM ใดที่ Arduino ของคุณเชื่อมต่ออยู่และทำการเปลี่ยนแปลงที่จำเป็นในรหัสการประมวลผลและเปิดร่างการประมวลผล
ตอนนี้เพียงแค่เปิดเกมโกรธนกและวางเคอร์เซอร์ไว้ใกล้กับหนังสติ๊กแล้วดึงเซ็นเซอร์งอเพื่อดึงนกและกำหนดทิศทางโดยใช้โพเทนชิออมิเตอร์ เมื่อกำหนดทิศทางแล้วให้ปล่อยเซ็นเซอร์ Flex
EEEEWWWWWEEEEEEEEEE !!!!!!!!!!……………
คุณนกจะถูกโยนขึ้นไปในอากาศและบูม !! เกี่ยวกับ piggies การทำงานที่สมบูรณ์สามารถพบได้ในวิดีโอด้านล่าง
หวังว่าคุณจะสนุกกับโครงการและสามารถสร้างสิ่งที่คล้ายกันได้ หากคุณมีข้อสงสัยใด ๆ คุณสามารถติดต่อฉันได้ที่ส่วนความคิดเห็นหรือโพสต์คำถามของคุณในฟอรัมสำหรับคำถามทางเทคนิค
ตอนนี้ได้เวลาชนกล่องลูกหมูแล้วเอาไข่นกของเรากลับคืนมา !!!!