สารบัญ:

เกมตอบสนองอย่างรวดเร็ว: เวอร์ชันระยะทาง: 5 ขั้นตอน (พร้อมรูปภาพ)
เกมตอบสนองอย่างรวดเร็ว: เวอร์ชันระยะทาง: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เกมตอบสนองอย่างรวดเร็ว: เวอร์ชันระยะทาง: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เกมตอบสนองอย่างรวดเร็ว: เวอร์ชันระยะทาง: 5 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: ปิดบริการเร็ว.. เล่นไม่ทัน 2024, กรกฎาคม
Anonim
เกมตอบสนองอย่างรวดเร็ว: เวอร์ชันระยะทาง
เกมตอบสนองอย่างรวดเร็ว: เวอร์ชันระยะทาง

สวัสดี. นี่คือคำแนะนำเกี่ยวกับวิธีการสร้างเกมที่ทดสอบทั้งเวลาตอบสนองและความรู้สึกของระยะทาง โปรเจ็กต์นี้อิงจากโปรเจ็กต์เก่าที่ฉันทำซึ่งเกี่ยวข้องกับผู้เล่นสองคนที่แข่งขันกันเพื่อดูว่าใครมีปฏิกิริยาตอบสนองเร็วกว่าด้วยการคลิกปุ่มเมื่อไฟเปลี่ยนเป็นสีเขียว อันนี้มีจุดประสงค์ที่คล้ายกัน ยกเว้นว่ามันเป็นโหมดเล่นคนเดียวและแทนที่จะให้แสงส่องลง ผู้เล่นจะได้รับกรอบเวลาเพื่อทำให้มือของพวกเขาเว้นระยะห่างจากเซ็นเซอร์วัดระยะทาง

เช่นเดียวกับโครงการ Arduino ทั้งหมด เกมนี้ต้องการส่วนประกอบทางไฟฟ้าจำนวนมากในวงจร Arduino ส่วนประกอบหลักนอกเหนือจากการเดินสายและ Arduino นั้นรวมถึงเขียงหั่นขนม, เซอร์โวมอเตอร์, จอ LCD, ไฟ LED RGB และเซ็นเซอร์วัดระยะทาง

การใช้ https://abra-electronics.com ราคาไม่รวมสายไฟและ Arduino คือ $32.12 CAD

ขั้นตอนที่ 1: ขั้นตอนที่ 1: เซ็นเซอร์วัดระยะ

ขั้นตอนที่ 1: เซ็นเซอร์วัดระยะ
ขั้นตอนที่ 1: เซ็นเซอร์วัดระยะ

ขั้นตอนแรกคือการตั้งค่าเซ็นเซอร์ระยะอัลตราโซนิกบนเขียงหั่นขนมและต่อเข้ากับ Arduino ตำแหน่งที่แน่นอนของเซ็นเซอร์ไม่สำคัญ แต่ควรอยู่ใกล้ขอบเพื่อให้มีที่ว่างสำหรับส่วนประกอบอื่นๆ ดังที่แสดงในภาพด้านบน มีสี่พินบนเซ็นเซอร์ GND, VCC, TRIG และ ECHO GND และ VCC จะต้องต่อเข้ากับกราวด์และรางจ่ายไฟตามลำดับ และต่ออีกสองพินที่เหลือเป็นสองพินบน Arduino หมุดสองตัวที่ฉันใช้คือ 12 สำหรับ ECHO และ 11 สำหรับ TRIG ใช้สายไฟอีกสองเส้นเพื่อจ่ายไฟให้กับรางจ่ายไฟและต่อสายดินกับรางภาคพื้นดินโดยเชื่อมต่อรางจ่ายไฟเข้ากับพิน 5V และรางกราวด์กับพิน GND

ขั้นตอนที่ 2: ขั้นตอนที่ 2: เซอร์โวมอเตอร์

ขั้นตอนที่ 2: เซอร์โวมอเตอร์
ขั้นตอนที่ 2: เซอร์โวมอเตอร์

ขั้นตอนต่อไปคือการตั้งค่าเซอร์โวมอเตอร์ ในโครงการนี้ เซอร์โวมอเตอร์ทำหน้าที่เป็นตัวจับเวลา โดยจะเริ่มที่ 1 องศา และในช่วงเวลาที่ผู้ใช้ต้องวางมือจะหมุนเป็น 180 องศา ฉันใช้เวลา 2 วินาทีเมื่อผู้ใช้พบว่าต้องวางมือให้ห่างแค่ไหน ดังนั้นเซอร์โวจึงหมุน 179 องศาในระยะเวลา 2 วินาที โดยหมุนเป็นช่วงสั้นๆ เซอร์โวมอเตอร์มีสามสาย มักจะเป็นสีเหลือง สีแดง และสีน้ำตาล อันสีแดงเข้าไปในรางไฟฟ้าที่ต่อเข้ากับ 5V แล้ว และอันสีน้ำตาลจะเข้าไปในรางภาคพื้นดินที่ต่อเข้ากับ GND แล้ว ลวดสุดท้ายเสียบเข้ากับขา Arduino ฉันเลือกพิน #9 สำหรับอันนี้ จากนั้น คุณต้องมีตัวเก็บประจุที่เชื่อมต่อรางเดียวกันกับที่มีกำลังของเซอร์โวมอเตอร์และสายกราวด์เชื่อมต่ออยู่ ดังที่เห็นในภาพด้านบน

ขั้นตอนที่ 3: ขั้นตอนที่ 3: RGB LED

ขั้นตอนที่ 3: RGB LED
ขั้นตอนที่ 3: RGB LED

หน้าที่ของ LED ในส่วนนี้คือทำหน้าที่เป็นมาตราส่วนสำหรับคะแนน เมื่อคะแนนของผู้เล่นอยู่ที่ประมาณ 0 ไฟ LED จะเป็นสีขาว และจะเปลี่ยนเป็นสีแดงมากขึ้นหากคะแนนของผู้เล่นลดลงและเป็นสีเขียวหากคะแนนของผู้เล่นเพิ่มขึ้น LED นี้มีสี่ขา ขาไฟแดง ขาไฟสีฟ้า ขาไฟเขียว และแคโทดทั่วไปที่แบ่งระหว่างขาอีกสามขาที่เหลือ แคโทดทั่วไป ขาที่ยาวที่สุด ต่อเข้ากับรางจ่ายไฟจึงรับไฟได้ 5 โวลต์ ติดตัวต้านทาน 330 โอห์มกับขาสามสีที่เหลือ และต่อปลายอีกด้านของตัวต้านทานเหล่านั้นกับพินดิจิตอล PWM บน Arduino อันที่ฉันใช้คือหมุดดิจิทัล 3, 5 และ 6 สำหรับขาสีแดง สีเขียว และสีน้ำเงินตามลำดับ

ขั้นตอนที่ 4: ขั้นตอนที่ 4: LCD

ขั้นตอนที่ 4: LCD
ขั้นตอนที่ 4: LCD

องค์ประกอบสุดท้ายคือ LCD ซึ่งย่อมาจากจอแสดงผลคริสตัลเหลว จุดประสงค์ของสิ่งนี้คือเพื่อบอกผู้เล่นว่าคะแนนปัจจุบันของพวกเขารวมถึงระยะทางที่พวกเขาต้องเอามือออกจากเซ็นเซอร์ มีสี่หมุดอยู่ที่นี่ GND, VCC, SDA และ SCL GND และ VCC จะต่อเข้ากับกราวด์และรางไฟฟ้าของเขียงหั่นขนมตามลำดับ พิน SDA ต้องต่อเข้ากับพินอะนาล็อก A4 และพิน SCL จะต้องต่อเข้ากับพินอะนาล็อก A5 คุณต้องต่อขา SDA และ SCL กับ A4 และ A5 ต่างจากส่วนประกอบอื่นๆ

ขั้นตอนที่ 5: ขั้นตอนที่ 5: รหัส

ตอนนี้เราได้เชื่อมต่อส่วนประกอบทั้งหมดแล้ว เราสามารถเขียนโค้ดได้ ส่วนแรกของรหัสคือการนำเข้าไลบรารีที่จำเป็นและประกาศตัวแปรของเราและหมุดที่ส่วนประกอบนั้นเชื่อมต่ออยู่ เราจำเป็นต้องนำเข้าไลบรารี Wire, LiquidCrystal_I2C และ Servo สำหรับรหัสนี้

#รวม

#รวม

#รวม

เซอร์โว myServo;

int const trigPin = 11;

int const echoPin = 12;

int redPin = 3;

int greenPin = 5;

int bluePin = 6;

คะแนน int = 0;

int tim = 500;

int ปัจจุบัน = สุ่ม (8, 16); //ค่าสุ่มที่ผู้ใช้ต้องวางมือให้ห่างจากเซ็นเซอร์

LiquidCrystal_I2C จอแอลซีดี (0x27, 16, 2); // การตั้งค่า LCD

ตอนนี้เราจำเป็นต้องใช้การตั้งค่าโมฆะ () เพื่อประกาศประเภทพินของเราและตั้งค่าส่วนประกอบที่จำเป็นอื่น ๆ

การตั้งค่าเป็นโมฆะ () { myServo.attach (9); Serial.begin(9600); โหมดพิน (trigPin, OUTPUT); โหมดพิน (echoPin, INPUT); pinMode โหมดพิน (redPin, OUTPUT); โหมดพิน (กรีนพิน, เอาต์พุต); โหมดพิน (บลูพิน, เอาต์พุต); lcd.init(); LCD.backlight(); lcd.begin(16, 2); lcd.clear(); // การตั้งค่า LCD}

ตอนนี้เราต้องตั้งค่ารหัส RGB LED โดยใช้ฟังก์ชันและ PWM:

เป็นโมฆะ setColor (int red, int green, int blue) {

สีแดง = 255 - สีแดง;

สีเขียว = 255 - สีเขียว;

สีน้ำเงิน = 255 - สีน้ำเงิน;

analogWrite (หมุดสีแดง, สีแดง);

analogWrite (greenPin, สีเขียว);

analogWrite (บลูพิน, น้ำเงิน);

}

ตอนนี้เราต้องเพิ่ม void loop() ในที่นี้ เราจะสร้างจำนวนเต็มแบบสุ่มและใช้ชุดคำสั่ง if เพื่อควบคุมเกมสำหรับผู้เล่น ตัวแปรปัจจุบันซึ่งตั้งค่าไว้ด้านบนนี้มีไว้สำหรับระยะทางปัจจุบันที่ผู้เล่นต้องอยู่ห่างจากเซ็นเซอร์

เนื่องจากโค้ดใน void loop() ยาวมาก ฉันจะวางลิงก์ไปยังเอกสารที่มีรหัสนั้น:

docs.google.com/document/d/1DufS0wuX0N6gpv…

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

microsecondsToInches ยาว (ไมโครวินาทียาว) {

ส่งคืนไมโครวินาที / 74 / 2;

}

ตอนนี้เราเสียบ Arduino แบบมีสายเข้ากับคอมพิวเตอร์ด้วยรหัส ตั้งค่าพอร์ต และรันมัน! เกมนี้มีสองโหมด คุณสามารถใช้ได้เฉพาะจอแสดงผล LCD, เซอร์โวมอเตอร์, เซ็นเซอร์ และ RGB LED เท่านั้น และคุณรู้เพียงระยะที่ต้องอยู่ห่างจากเซ็นเซอร์เท่านั้น ซึ่งเป็นโหมดที่ยากกว่า โหมดที่ง่ายกว่านี้เกี่ยวข้องกับการใช้จอภาพแบบอนุกรมในเครื่องมือ > การตรวจสอบแบบอนุกรม ซึ่งจะอัปเดตให้คุณทราบทุกวินาทีว่าคุณอยู่ห่างจากเซ็นเซอร์เพียงใด คุณจึงปรับเปลี่ยนตามความจำเป็นได้

ขอบคุณที่อ่าน!

แนะนำ: