ทำกระดานหมากรุกอิเล็กทรอนิกส์


14

ฉันต้องการสร้างกระดานหมากรุกไม้ที่คุณสามารถเล่นกับชิ้นส่วนปกติ (เช่นไม่ใช่ชิ้นส่วนดัดแปลงที่ใช้รหัส RFID, แม่เหล็ก, ... ) แต่เชื่อมต่อกับซอฟต์แวร์ที่สังเกตการเคลื่อนไหวของฉันและทำหน้าที่เป็น ผู้เล่นที่สอง

ฉันคิดเกี่ยวกับวิธีการตรวจจับชิ้นส่วนบนกระดานและฉันได้ตัดสินใจว่าฉันไม่จำเป็นต้องรู้ว่าชิ้นส่วนใดอยู่ที่ไหน: "ความจริง" อยู่ในซอฟต์แวร์ดังนั้นถ้าฉันย้ายชิ้นส่วนจาก A ไป B ซอฟต์แวร์สามารถค้นหาว่าชิ้นส่วนใดถูกย้าย

ดังนั้นฉันมีความคิดที่จะเจาะสองรูเข้าไปในแต่ละช่องของกระดานหมากรุกหนึ่งช่องที่อยู่ตรงกลางและอีกช่องที่มุมขวาบน:

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

ฉันต้องการใช้ Raspberry Pi เป็นพื้นฐานฮาร์ดแวร์เพื่อให้ซอฟต์แวร์ทำงานซึ่งจะเขียนเป็น Node.js (แต่นั่นไม่ควรสำคัญสำหรับคำถามนี้)

สิ่งที่ฉันท้ายที่สุดก็คือเซ็นเซอร์ความสว่าง 64 ตัวและไฟ LED 64 ดวงซึ่งฉันต้องจัดการแยกกัน กล่าวอีกนัยหนึ่ง: ฉันต้องการ 64 เอาต์พุตและ 64 อินพุต และแน่นอนว่านี่เป็นสิ่งที่ Raspberry Pi ไม่ได้จัดการนอกกรอบ - และฉันคิดว่าต้องมีวิธีที่ดีกว่าการมีพอร์ต I / O 128 พอร์ต

เนื่องจากฉันคิดว่าการตรวจจับสถานะของบอร์ดเป็นภารกิจที่สำคัญกว่าฉันจึงเริ่มค้นหาวิธีจัดการสวิทช์ 8x8 เมทริกซ์ทางเว็บ ฉันพบข้อเสนอแนะเพื่อใช้ตัวควบคุมขนาดเล็กที่สแกนคอลัมน์ของบอร์ดตามลำดับและในแต่ละคอลัมน์ตรวจพบว่ามีการใช้แถว (= a field) หรือไม่

สิ่งนี้จะลดความซับซ้อนในการมี 8 เอาต์พุตและ 8 อินพุต (เพื่อให้สามารถอ่านสถานะของบอร์ด)

เกี่ยวกับเรื่องนี้ฉันมีคำถามสองสามข้อ:

  1. ความคิดของฉันถูกต้องหรือไม่นั่นคือวิธีการที่ถูกต้องหรือเป็นทางเลือกที่ดีกว่าที่ฉันควรระวัง
  2. เนื่องจากฉันไม่มีประสบการณ์กับไมโครคอนโทรลเลอร์ฉันต้องระวังอะไรบ้าง ฉันต้องการตัวควบคุมขนาดเล็กที่มี 16 พินซึ่งสามารถตั้งโปรแกรมในภาษาที่ฉันสามารถเขียนหรือ ... ?
  3. มีใครสร้างบอร์ดแบบนี้บ้างและมีคำแนะนำหรือรู้เกี่ยวกับการสอนที่จะนำคุณเข้าสู่กระบวนการ?

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

1
เส้นทางการสแกนเมทริกซ์ที่คุณอธิบายจะไม่สามารถรับมือกับการมี 4 ชิ้นใน 2 แถวและ 2 คอลัมน์ ดูตัวถอดรหัสบรรทัด 3-8 (74138) และประมาณถึง 5-64
Icy

2
ผู้เล่นตัวจริงเริ่มต้นของชิ้นเดียวกันเสมอดังนั้นซอฟต์แวร์รู้ว่าชิ้นส่วนที่อยู่ที่ไหน หากคุณย้ายชิ้นส่วนจาก A ไปยัง B ซอฟต์แวร์จะรู้ว่าชิ้นส่วนใดถูกย้ายไปที่ไหน แน่นอนว่านี่ไม่อนุญาตให้เริ่มต้นกับผู้เล่นตัวจริง แต่คุณสามารถตั้งค่าซอฟต์แวร์ด้วยตนเองได้
Golo Roden

1
ดูเหมือนว่า ... จะยุ่งยาก ฉันได้ไปกับวิธีวิดีโอซอฟต์แวร์ OpenCV และกล้อง และเครื่องฉายภาพ
Passerby

2
คู่มือนี้อาจมีประโยชน์เท่าที่องค์กรเซ็นเซอร์ / การตรวจจับ
2813274

คำตอบ:


5

เนื่องจากภาพมีค่าหนึ่งพันคำนี่เป็นตัวอย่างของLDM-24488NI : เมทริกซ์ที่นำโดย 64

ป้อนคำอธิบายรูปภาพที่นี่

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

ป้อนคำอธิบายรูปภาพที่นี่

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


12

ใช่มัลติเพล็กซิ่งตามที่คุณอธิบายเป็นวิธีการทั่วไปในการจัดการกับอาร์เรย์ของสิ่งต่าง ๆ

ส่วนที่ยากที่สุดจะจัดการกับลักษณะอะนาล็อกของเซ็นเซอร์แสง CdS LDR (ตัวต้านทานที่ขึ้นกับแสง) น่าจะดีที่สุดในกรณีนี้เพราะพวกมันมีความอ่อนไหวราคาถูกและให้การตอบสนองที่วัดได้ง่ายมากในช่วงความสว่างของมนุษย์ ไฟฟ้าเป็นตัวต้านทานที่มีความต้านทานลดลงในแสงที่สว่างขึ้น

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

การสแกน 64 อินพุตแบบอะนาล็อกสามารถทำตามลำดับได้ทันทีในแง่มนุษย์ด้วยไมโครธรรมดา สมมติว่าคุณสามารถอ่านใหม่ทุก ๆ 100 .s นั่นคือ "ยาว" แม้กระทั่งขนาดเล็กและราคาถูก นั่นหมายความว่าทั้งบอร์ดจะสแกนทุก 6.4 มิลลิวินาทีซึ่งเร็วกว่าที่คุณจะรับรู้ถึงความล่าช้า

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

ฉันอาจอุทิศหนึ่งไมโครเพื่อจัดการบอร์ด I / O สิ่งนี้ได้รับการปรับให้เหมาะสมสำหรับการมีพิน I / O เพียงพออินพุต A / D และอื่น ๆ ที่คล้ายกัน จากนั้นจะเชื่อมต่อกับเอ็นจิ้นการคำนวณหลักผ่าน UART โพรโทคอลจะมีลักษณะเหมือน "light up square 3,2" หรือ "ส่วนที่ถูกลบออกจาก square 5,4" สิ่งนี้ยังอนุญาตให้ส่วนต่อประสานฮาร์ดแวร์ที่แตกต่างกันโดยสิ้นเชิงในอนาคตตราบใดที่คุณยังคงโปรโตคอลไว้เหมือนเดิม


7

สำหรับ LEDวิธีที่ชัดเจนในการทำเช่นนี้คือมีเอาต์พุตสำหรับแต่ละแถวและแต่ละคอลัมน์ของกระดานหมากรุก: รวม 8 + 8 = 16 พิน ขั้วบวกจะเชื่อมต่อกับสายลวดและขั้วลบกับสายคอลัมน์ สำหรับ LED ที่คุณต้องการให้แสงสว่างคุณจะทำให้ขั้วบวกเป็นบวก (ตรรกะ 1) และขั้วลบของลวดขั้วลบ (ตรรกะ 0) ในขณะที่รักษาแสงอื่นไว้ในสถานะย้อนกลับ (ดังนั้น LED ที่เหลือจะมีความเป็นกลางหรือกลับกัน)

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

หากผลลัพธ์ของคุณคือสถานะไตร (นั่นคือนอกเหนือจากตรรกะ 0 และตรรกะ 1 พวกเขาสามารถตั้งค่าสถานะความต้านทานสูงอาจโดยการกำหนดค่าชั่วคราวเป็นอินพุต) จากนั้นคุณสามารถฉลาดและใช้ตาราง 4x8 กับ LED ของ เชื่อมต่อเป็นคู่กันแบบขนาน สิ่งสำคัญคือการตั้งค่าเอาต์พุตที่ไม่ได้ใช้เป็นความต้านทานสูงในการตั้งค่านี้มิฉะนั้น LED ที่ไม่ต้องการจะสว่างขึ้น

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


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

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

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

วิธีแก้ปัญหาอื่นก็คือการซื้อไอซีถอดรหัส 4 ถึง 16 ไอซีที่มีเอาต์พุตตัวเก็บรวบรวมแบบเปิด (หรือการระบายแบบเปิดหากใช้ MOSFET IC) เช่นนี้: http://www.unicornelectronics.com/ftp/Data%20Sheets/74159.pdf Open collector หมายความว่าเอาท์พุทของ IC จะจมเฉพาะในปัจจุบันไม่ใช่แหล่งที่มา ดังนั้นคุณสามารถเชื่อมต่อเซ็นเซอร์ 16 ตัวเข้ากับเอาต์พุต 16 ตัวของชิปและใช้ปลายอีกด้านร่วมกับตัวต้านทานแบบดึง (คุณจะเชื่อมต่อ ADC ของคุณที่นี่ด้วย) คุณนำเอาท์พุทต่ำหนึ่งตัว (กำลังดำเนินการ) และอีกอันที่ 15 ยังคงอยู่ในระดับสูง (ไม่เป็นตัวนำ) ซึ่งตรงกันข้ามกับเอาต์พุตลอจิกมาตรฐานโดยที่เอาต์พุตอีก 15 ตัวจะไหลลงสู่จุดร่วม

อินพุตของ IC เหล่านี้คือไบนารี่ 4 บิตเพื่อเลือกหนึ่งใน 16 เอาต์พุต แต่มีอินพุตเพิ่มเติมเพื่อเปิดใช้งาน / ปิดใช้งานชิป ดังนั้นคุณอาจมีชุดตัวเก็บรวบรวมแบบเปิด 64 ชุดซึ่งเชื่อมต่อกับเซ็นเซอร์ 64 ตัวพร้อมกับปลายอีกด้านของเซ็นเซอร์ทั้งหมดที่ใช้ร่วมกับตัวต้านทานแบบดึงขึ้นครั้งเดียวและตัวแปลงอนาล็อกเป็นดิจิตอล คุณจะต้องมีเอาต์พุตทั้งหมด 8 ตัวบนไมโครคอนโทรลเลอร์ของคุณสำหรับสิ่งนี้: สี่ตัวเพื่อรับสัญญาณแบบ 4-to-16 (ร่วมกับชิปทั้งสี่ตัว) และสี่ตัวเพื่อรับสัญญาณการเปิดใช้งาน (หนึ่งตัวสำหรับแต่ละชิป)

แก้ไข: ตัวถอดรหัส 3 ถึง 8 ตัว (เรียกอีกอย่างว่า 1 จาก 8 = 1 สายจาก 8) ดูเหมือนจะมีมากกว่า 4 ถึง 16 แต่ 8 IC ของมันยุ่งมากกว่า 4 แบบอื่นของ IC ซึ่งอาจเป็นประโยชน์คือตัวนับ octal (และลูกพี่ลูกน้องที่พบบ่อยมากขึ้นของตัวนับทศวรรษซึ่งสามารถกำหนดค่าเป็นตัวนับ octal โดยการเชื่อมต่อ ouput ที่เก้ากับบรรทัดการตั้งค่าใหม่) สิ่งเหล่านี้ต้องใช้ชีพจรอนุกรมเพื่อเลื่อนจากเอาต์พุตหนึ่งไปยังอีก I / O หมุดบนไมโครคอนโทรลเลอร์มากกว่าตัวถอดรหัส IC พวกเขามักจะมีอินพุตเพิ่มเติมสำหรับการรีเซ็ตและเปิดใช้งาน นอกจากนี้ยังมี IC ที่เรียกว่าshift registerซึ่งมีให้เลือกสองแบบ: แบบหนึ่งสำหรับการแปลงอนุกรมเป็นแบบขนานและอีกแบบหนึ่งสำหรับการแปลงแบบขนานเป็นอนุกรม ในที่สุดก็มีบัฟเฟอร์ซึ่งคุณสามารถใส่ระหว่าง Rasberry Pi และกระดานหมากรุกของคุณเพื่อให้ Pi ไม่ถูกทำลายในกรณีที่กระแสเกิน สิ่งเหล่านี้มีประโยชน์ในวงจรทวีคูณ


1
คุณพูดถึงการลงทะเบียนกะ - พวกเขาสามารถใช้กับสัญญาณไฟ LED ได้เช่นกัน ตัวนับอื่นรวมทั้งการลงทะเบียนกะ 8 บิตที่สามารถ tristate สามารถขับทั้งแถวได้ด้วยหมุดมากกว่าสองหรือสามตัวหากพวกมันเร็วพอที่จะหลีกเลี่ยงการกะพริบที่มองเห็นได้
ฮอบส์

@ ฮอบส์ฉันไม่คิดว่าการกะพริบเป็นปัญหาเพราะ OP ต้องการเพียงแค่ให้แสง LED หนึ่งหรือสองครั้งพร้อมกัน ถึงแม้ว่าจะมีความไม่แน่นอนก็ตามหากคุณมีหนึ่งเส้นตรงและอีกหนึ่งค่า inverting ทศวรรษ / octal counter / shift register เพื่อขับเคลื่อน LED 3 พินสามารถทำได้อย่างสมบูรณ์แบบ: รีเซ็ตทั่วไป, ล่วงหน้าคอลัมน์, ล่วงหน้าแถว นั่นอาจเป็นวิธีที่จะไป - บันทึกพินอื่น ๆ ทั้งหมดสำหรับปัญหาที่ยากขึ้นของเซ็นเซอร์
เลเวลริเวอร์เซนต์

สำหรับไฟ LED สามารถใช้ไดรเวอร์ LED MAX7219 / 7221 ได้เช่นกัน สิ่งนี้จะลดจำนวนอินพุตเป็น 3 นาฬิกาข้อมูลและสลัก
jnovacho

4

การทำ Multiplexing เป็นการปฏิบัติทั่วไป

มีสองวิธีที่คุณสามารถใช้หมุดพิราสเบอร์รี่ได้มากขึ้น

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

การประหยัด 6 พินอาจไม่เพียงพอ - ให้ดูว่าเราไปได้จากที่ใด: ถ้าคุณจัดตาราง 8x8 ของคุณใหม่เป็นตาราง 16x4 คุณสามารถใช้บางอย่างเช่นhttp://www.instructables.com/id/16-Stage -Decade-Counter-Chain-Using-two-4017-Chi /? ALLSTEPS (ไม่สนใจครึ่งบนทั้งสองบรรทัดที่ลงมาจากบนลงล่างคือ "รีเซ็ต" ของคุณมาจากด้านบนซ้ายและ " ไปที่แถวถัดไป "ซึ่งเรียกว่า CLK สำหรับนาฬิกาที่นี่) ตอนนี้คุณสามารถนับ 8 บนครึ่งซ้ายของกระดานตามด้วย 8 บนครึ่งขวาของกระดาน เชื่อมต่อคอลัมน์ A และ E, B และ F, C และ G และ D และ H เข้าด้วยกัน

ขอแสดงความยินดีขณะนี้คุณมีพินออกสองอัน (รีเซ็ตและนาฬิกา) และ 4 อินพุทพินรวมเป็น 6 - ที่ช่วยประหยัด 10 พิน! โปรดทราบว่าราสเบอร์รี่ pi ไม่มีตัวแปลงสัญญาณอนาล็อกเป็นดิจิตอลดังนั้นคุณจะต้องมีงานพิเศษสำหรับสิ่งนั้น

ตอนนี้สำหรับ LED คุณมีแหล่งจ่ายไฟที่ควบคุมได้แล้ว (ตัวนับสองทศวรรษ) - ให้นำมาใช้ซ้ำได้ ใส่ LED 64 ดวงของคุณจากหมุดจ่าย 16 ตัวของคุณผ่านตัวต้านทาน (LED แต่ละตัวจะต้องมีตัวต้านทานของตัวเอง!) ไปยังรางอื่น ๆ อีก 4 ราง (เค้าโครงเหมือนด้านบน: AE, BF, CG และ DH) เชื่อมต่อรางทั้งสี่เหล่านี้เข้ากับทรานซิสเตอร์ 4 ตัวถึง 4 พินและใส่พินทั้งหมดไว้ที่ "สูง" - เนื่องจาก LED ทั้งสองด้านมีค่า 5 โวลต์ไฟ LED จะดับ จากนั้นเมื่อคุณต้องการเปิดไฟ LED ตรวจสอบให้แน่ใจว่าสองทศวรรษของคุณอยู่ในตำแหน่งที่ถูกต้อง (ราวกับว่าคุณกำลังอ่านเซ็นเซอร์บนตารางนั้น) ให้ตั้งหนึ่งใน 4 รางให้อยู่ในระดับต่ำ ปัจจุบันควรไหลจาก "สูง" จากตัวนับทศวรรษสู่ "ต่ำ" ในรางเฉพาะนั้น เฮ้ presto ไฟมา! ให้ความล่าช้าเล็กน้อยจากนั้นปิดเครื่องก่อนที่คุณจะเปลี่ยนตัวนับทศวรรษอีกครั้ง

หากคุณต้องการการควบคุมที่มากขึ้นคุณสามารถใช้ชิปเช่น TLC5940 - http://playground.arduino.cc/Learning/TLC5940 - ชิปแต่ละตัวสามารถตั้งค่าไฟ LED 16 ดวง (ดังนั้นคุณต้องใช้ 4 หลอดเหล่านี้ในระดับความสว่าง) จาก 0 (ปิด) ถึง 1024 (เต็มเปิด) ดังนั้นคุณจึงสามารถหรี่ LED แต่ละหลอดเข้าและออกด้วยการควบคุมที่ยอดเยี่ยม จากหน่วยความจำความต้องการเหล่านี้จำเป็นต้องมีประมาณ 4 พินและพวกมันสามารถเชื่อมต่อกับเดซี่ได้ดังนั้น 4 พินดิจิตอล (หนึ่งในนั้นต้องเป็น PWM - ซึ่งมีสัญลักษณ์ "~" ติดกับพิน) จะควบคุมไฟ LED จำนวนเท่าใดก็ได้

โชคดี!


มันคือ RPi ไม่ใช่ Arduino
Dmitry Grigoryev

ฉันขอโทษคุณพูดถูก เกือบทุกอย่างที่ฉันพูดยังใช้อยู่ดังนั้นฉันได้ทำการแก้ไขเล็กน้อยเพื่อให้ทำงานได้
AMADANON Inc.

0

ฉันไม่คิดว่าคุณจะต้องมี LED ที่มุมขวาบน เซ็นเซอร์กลางที่คุณพูดถึงจะเพียงพอ ส่วนที่ยุ่งยากจะเป็นรหัสสำหรับกระดานหมากรุก ลองนึกภาพคุณมีกระดานหมากรุก แถวจะถูกระบุเป็น 'ตัวอักษร' และคอลัมน์ที่ระบุว่า 'หมายเลข'

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


5
บางทีฉันอาจไม่ได้อธิบายได้ดี ... ไฟ LED ไม่ได้มีไว้สำหรับอ่านในสถานะปัจจุบันพวกเขามีจุดประสงค์เพื่อแสดงว่าคอมพิวเตอร์ต้องการทำอะไร ดังนั้นผู้ใช้ขยับ: เซ็นเซอร์ความสว่างบอกซอฟต์แวร์ว่าสิ่งที่ใช้ทำ ซอฟแวร์คำนวณการเคลื่อนที่ครั้งต่อไปและกระพริบไฟ LED สองดวงผู้ใช้เคลื่อนย้ายชิ้นส่วนจากนั้นก็ถึงตามนุษย์อีกครั้ง
Golo Roden
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.