สารบัญ:

ทดสอบ Arduino Bare ด้วยซอฟต์แวร์เกมโดยใช้ Capacitive Input & LED: 4 ขั้นตอน
ทดสอบ Arduino Bare ด้วยซอฟต์แวร์เกมโดยใช้ Capacitive Input & LED: 4 ขั้นตอน

วีดีโอ: ทดสอบ Arduino Bare ด้วยซอฟต์แวร์เกมโดยใช้ Capacitive Input & LED: 4 ขั้นตอน

วีดีโอ: ทดสอบ Arduino Bare ด้วยซอฟต์แวร์เกมโดยใช้ Capacitive Input & LED: 4 ขั้นตอน
วีดีโอ: Ben Heck Reverse Engineers Game Boy Printer 2024, กรกฎาคม
Anonim
ทดสอบ Bare Arduino ด้วยซอฟต์แวร์เกมโดยใช้ Capacitive Input & LED
ทดสอบ Bare Arduino ด้วยซอฟต์แวร์เกมโดยใช้ Capacitive Input & LED
ทดสอบ Bare Arduino ด้วยซอฟต์แวร์เกมโดยใช้ Capacitive Input & LED
ทดสอบ Bare Arduino ด้วยซอฟต์แวร์เกมโดยใช้ Capacitive Input & LED

เกมแบบโต้ตอบ "Push-It" โดยใช้บอร์ด Arduino เปล่า ไม่จำเป็นต้องใช้ชิ้นส่วนภายนอกหรือสายไฟ (ใช้อินพุต 'สัมผัส' แบบ capacitive) ดังที่แสดงไว้ข้างต้น แสดงให้เห็นว่ามันทำงานบนกระดานสองกระดานที่แตกต่างกัน

Push-It มีวัตถุประสงค์สองประการ

  1. เพื่อสาธิต/ตรวจสอบอย่างรวดเร็วว่าบอร์ด Arduino ของคุณใช้งานได้ และคุณได้ตั้งค่าอย่างถูกต้องเพื่อดาวน์โหลดร่างโค้ดใหม่ลงไป คุณจะเห็นว่ามันทำอินพุตและเอาต์พุต (ระดับอินพุตดิจิตอลที่สัมผัส, เอาต์พุตไปยัง LED บนบอร์ด); จัดเก็บและกู้คืนค่าจากหน่วยความจำ EEPROM แบบไม่ลบเลือน โดยไม่ต้องต่อสายไฟหรืออุปกรณ์ใดๆ
  2. มอบเกมที่สนุกสนานและท้าทายด้วยการโต้ตอบกับบอร์ด Arduino

คำแนะนำนี้อนุมานว่าคุณได้ติดตั้ง Arduino IDE แล้วและอย่างน้อยก็คุ้นเคยกับการใช้งานน้อยที่สุด ถ้าไม่ฉันแนะนำคุณไปที่ลิงก์เหล่านี้:

เริ่มต้นใช้งาน Arduino

การเพิ่ม Digispark (พร้อม bootloader) รองรับ Arduino 1.6.x IDE. ที่มีอยู่

Push-It จะทำงานร่วมกับบอร์ด Arduino ส่วนใหญ่เช่น บอร์ด Nano, Uno หรือ DigiSpark Attiny85 ฉันได้ทดสอบกับ Nano 3.1 และ DigiSpark แล้ว ในข้อความเมื่อฉันอ้างถึงชื่อ/หมายเลขพิน หมุดนั้นจะถูกใช้งานบนบอร์ด Nano (ต่างจาก DigiSpark)

ขั้นตอนที่ 1: มีสิ่งที่คุณต้องการ

ซึ่งเป็นเพียง Arduino หรือบอร์ดเทียบเคียง

หากคุณยังไม่มี ฉันแนะนำให้เริ่มต้นด้วย DigiSpark Pro (~ $ 12) หรือ Nano 3.0 จาก eBay ในราคา ~ $ 3 (แต่คุณจะมีเวลาเพิ่มอีกหรือสองสัปดาห์เพื่อรอให้มันมาจากประเทศจีน และคุณจะต้องติดตั้งไดรเวอร์ USB CH340) DigiSpark ~ $ 10 (ไม่ใช่ Pro) เหมาะอย่างยิ่งสำหรับเกม 'วิดีโอ' บิตเดียวนี้ (หน่วยที่แยกส่วนนี้มี I / O เพียง 6 ตัวเท่านั้นที่จะอัปโหลดได้ยากกว่าเล็กน้อย)

ลิงค์ไปยังฮาร์ดแวร์ที่ใช้ในที่นี้:

นาโน V3.0 Atmega328P บน eBay

บอร์ดพัฒนา Digispark USB

ขั้นตอนที่ 2: ดึงและดาวน์โหลดโค้ด

ดึงและดาวน์โหลดรหัส
ดึงและดาวน์โหลดรหัส

คัดลอกโค้ดด้านล่างลงในไฟล์สเก็ตช์ Arduino (เช่น …/Push_It/Push_It.ino) ฉันพยายามแสดงความคิดเห็นค่อนข้างดี ฉันหวังว่าคุณจะพบรหัสที่เข้าใจได้ง่าย ตรรกะในการพิจารณาว่าเมื่อใดควรเพิ่ม ลด และเมื่อใดที่ไม่ต้องซับซ้อนนั้นค่อนข้างซับซ้อน แต่ส่วนนั้นเป็นรหัสเฉพาะและไม่มีประโยชน์ทั่วไป สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการตั้งค่า 'ร่าง' (โครงการรหัส) ใหม่ที่จะใช้กับ Arduino IDE ดู:

การสร้าง Arduino Sketch ใหม่

ดาวน์โหลดสเก็ตช์ 'Push_It' ลงในไมโครคอนโทรลเลอร์ของเราตามคำแนะนำ Arduino IDE สำหรับบอร์ดของคุณ

ขั้นตอนที่ 3: กำลังเล่น

กำลังเล่น
กำลังเล่น

เป้าหมายของเกมคือการทำให้ LED (ออนบอร์ด) กะพริบให้มากที่สุดเท่าที่จะเป็นไปได้ในชุดไฟกะพริบซึ่งจะทำซ้ำ

การเล่นเกม:

Push-It เริ่มต้นด้วยแฟลชตัวเดียวซึ่งจะทำซ้ำ หากคุณแตะนิ้วใกล้กับพินอินพุตขณะที่ไฟ LED เปิดอยู่ รอบถัดไปจะกะพริบ LED สองครั้ง

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

แต่ถ้าคุณ 'ดัน' ก่อนหรือหลังแฟลชครั้งแรก จำนวนการกะพริบในชุดจะลดลง

หากคุณไม่ดำเนินการใดๆ เพิ่มเติม จำนวนแฟลชในชุดจะยังคงอยู่ นอกจากนี้ เมื่อการนับไม่เปลี่ยนแปลงสำหรับรอบเต็ม จำนวนนับจะถูกเก็บไว้ในหน่วยความจำ EEPROM

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

เมื่อคุณทำให้ยูนิตของคุณมีจำนวนแฟลชสูงแล้ว คุณสามารถนำไป (หรือส่งทางไปรษณีย์ซึ่ง DigiSpark เหมาะสำหรับ) ให้เพื่อน ซึ่งเมื่อเสียบเข้ากับอุปกรณ์แล้ว พวกเขาจะเห็นว่าแฟลชของคุณมีจำนวนเท่าใด ถึง. ฉันพบว่ามันเลิกท้าทายที่จะเพิ่มมันให้ถึง 8 ตัวด้วยการติดปุ่มจริงๆ หากต้องการเปลี่ยนกลับเป็นจำนวนที่ต่ำกว่า คุณสามารถกดซ้ำได้ทุกเมื่อก่อนหรือหลังแฟลชครั้งแรก นอกจากนี้ หากคุณจัมเปอร์พินอินพุทลงกราวด์ระหว่างการเพิ่มกำลัง การนับจะถูกรีเซ็ตเป็น 1

โปรดทราบว่ากระดาน DigiSpark ดั้งเดิมมีความล่าช้า 10 วินาทีหลังจากเปิดเครื่องก่อนที่จะเริ่มดำเนินการรหัส 'Push-It' และเล่นเกม จะใช้เวลานี้เพื่อพยายามพูดคุยผ่านพิน USB เพื่อรับการอัปเดตรหัสดาวน์โหลดใหม่ที่เป็นไปได้

หากบอร์ด Arduino ที่คุณใช้มี USB TX LED อยู่ LED นี้จะมีแฟลชขนาดเล็กอย่างรวดเร็วเมื่อคุณ 'กดปุ่ม' อย่างมีประสิทธิภาพ ไฟ LED นี้จะกะพริบอย่างมีนัยสำคัญมากขึ้นเมื่อค่าการนับใน EEPROM ได้รับการอัพเดตด้วยค่าใหม่ ข้อเสนอแนะนี้สามารถช่วยให้คุณทราบได้อย่างมากว่าเมื่อใดหรือเพื่อให้แน่ใจว่าคุณได้ทริกเกอร์เหตุการณ์ 'ปุ่มกด' อย่างมีประสิทธิภาพ คุณอาจต้องตรวจสอบให้แน่ใจว่าคุณไม่ได้สัมผัสกราวด์ของวงจร (เช่น โลหะรอบขั้วต่อ micro-USB) เพื่อให้รูปร่างของคุณส่งเสียงไปที่พินอินพุตที่เปิดอยู่ จะมีการเพิ่มและความท้าทายที่ค่อนข้างคาดเดาไม่ได้เนื่องจากพินอินพุตลอย (ไม่ถูกดึงขึ้นหรือลงโดยโหลดที่เป็นสื่อกระแสไฟฟ้า/ตัวต้านทาน) และเสียงสัญญาณแปรผันที่ผ่านนิ้วของคุณ

คลื่นสี่เหลี่ยม 250Hz จะถูกส่งออกไปยังพินที่อยู่ถัดจากพินอินพุตซึ่งช่วยเพิ่มความแน่นอนของสัญญาณอินพุตที่ฉีดเข้าไปเมื่อนิ้วของคุณครอบคลุมหมุดทั้งสอง

ฉันพบว่าการตอบสนองของบอร์ด DigiSpark นั้นคาดเดาได้ค่อนข้างสม่ำเสมอโดยการบีบนิ้วเล็กน้อยไปที่มุมของบอร์ดที่ D3-D5 อยู่

เมื่อฉันเล่น 'Push-It' ฉันชอบที่จะทำเช่นนั้นกับบอร์ดที่เชื่อมต่อกับชุดแบตเตอรี่มือถือ USB 5v (ดูรูป) โดยทั่วไปสามารถพบได้ในราคาไม่แพงในถังขยะถัดจาก USB AC และอะแดปเตอร์อัตโนมัติ 12v; ในห้างสรรพสินค้าแผนกอิเล็กทรอนิกส์ส่วนใหญ่

ขั้นตอนที่ 4: การทดลองเสริมกับส่วนประกอบภายนอก

การทดลองเสริมกับส่วนประกอบภายนอก
การทดลองเสริมกับส่วนประกอบภายนอก

โปรดทราบ: หากคุณแนบปุ่มจริง จะมีรหัสหนึ่งบรรทัดที่ต้องแสดงความคิดเห็นตามที่ระบุไว้ในรหัส

ด้วยลำโพงข้างหนึ่งกับพื้น หากคุณสัมผัสอีกสายหนึ่งไปยัง D4 คุณจะได้ยินเสียงคลื่นสี่เหลี่ยม 250 เฮิรตซ์ ที่ D3 มีคลื่นสี่เหลี่ยม 500Hz หากคุณเชื่อมต่อลำโพงระหว่าง D3 และ D4 คุณจะได้ยินเสียงประกอบของสัญญาณทั้งสอง

การต่อ LED แทนลำโพงด้านบนนั้นน่าสนใจมาก ไม่จำเป็นต้องกังวลเกี่ยวกับแรงดันไฟ ระดับกระแสไฟ ตัวต้านทาน หรือแม้แต่ขั้วสำหรับเรื่องนั้น (ที่แย่กว่านั้นคือมันไม่สว่างแล้ว ก็แค่หมุนมันกลับ) ลองก่อนอื่นด้วยขั้วลบ (แคโทด) ที่เชื่อมต่อกับกราวด์และอีกอันกับ D3 หรือ D4 ไฟ LED จะติด 'ครึ่งหนึ่ง' เนื่องจากคลื่นสี่เหลี่ยม นอกจากนี้ ไม่จำเป็นต้องใช้ตัวต้านทาน เนื่องจากเอาต์พุตของ MicroControllerUnits ถูกจำกัดกระแส ฉันทำการวัดปัจจุบันซึ่งส่งผลให้เกิด 15ma และ 20ma สำหรับ Attiny85 และ Atmega328 MCU ตามลำดับ ระดับเหล่านี้มีค่าประมาณครึ่งหนึ่งของค่าจำกัดปัจจุบันสำหรับชิ้นส่วนเหล่านี้เนื่องจากลักษณะรอบการทำงาน 50% ของสัญญาณคลื่นสี่เหลี่ยมที่ขับ การอ่านมิเตอร์เป็นค่าเฉลี่ยของกระแสผ่านวงจรที่ทดสอบ

ที่น่าสนใจ หากคุณเชื่อมระหว่าง D3 และ D4 กับ LED (ดูภาพด้านบนและด้านซ้าย) ไฟจะสว่างทั้งสองทาง และให้ความสว่างประมาณ ½ เหมือนกับที่ด้านหนึ่งเชื่อมต่อกับกราวด์ ผมขอเชิญคุณไตร่ตรองว่าทำไม

แนะนำ: