สารบัญ:
- ขั้นตอนที่ 1: แรงจูงใจและปัญหา
- ขั้นตอนที่ 2: รับข้อมูล Raw Bit จาก Basy USB
- ขั้นตอนที่ 3: การแยกวิเคราะห์ข้อมูล USB
- ขั้นตอนที่ 4: การแสดงภาพที่ทาสีบน VGA และการแก้ไขสิ่งที่กำลังวาด
- ขั้นตอนที่ 5: สนุกกับการสร้างสรรค์ของคุณ
วีดีโอ: โปรแกรมวาดภาพ VGA: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
โครงการโดย: Adam Klein, Ian Strachan, Brandon Slater
โปรเจ็กต์ที่เราตั้งใจจะทำให้เสร็จคือการจัดเก็บ แยกวิเคราะห์ และแสดงข้อมูลจากเมาส์ USB ในรูปแบบของโปรแกรมระบายสี แนวคิดเบื้องหลังโครงการนี้คือสามารถเสียบเมาส์และสาย VGA เข้ากับบอร์ด Basy ในพอร์ตในตัว และให้เมาส์แสดงเป็นสี่เหลี่ยมภาพวาดที่เคลื่อนย้ายได้บนจอภาพ ซึ่งจะเปลี่ยนสีต่างๆ เมื่อคลิกซ้ายและขวา ใช้แล้ว. โดยพื้นฐานแล้ว เราจะสร้างไดรเวอร์สำหรับใช้เมาส์กับบอร์ดเบส และให้จอภาพเป็นเครื่องยืนยันการทำงานของเรา สิ่งที่เกิดขึ้นจริงคือการสร้างโปรแกรมวาดภาพโดยใช้บอร์ด basys เป็นระบบอินพุต และระบบเก็บข้อมูลกึ่งฟังก์ชันสำหรับเมาส์
ในคำแนะนำนี้ เราจะแบ่งขั้นตอนจากอินพุตเมาส์เป็นเอาต์พุต vga
ขั้นตอนที่ 1: แรงจูงใจและปัญหา
แรงจูงใจ:
แรงจูงใจหลักสำหรับโครงการของเราคือการสร้างไดรเวอร์เมาส์สำหรับบอร์ด Basys3 ที่นักเรียน CPE 133 ในอนาคตจะสามารถใช้สำหรับโครงการสุดท้ายของพวกเขาได้ในอนาคต อย่างไรก็ตาม เราได้นำแนวคิดนี้ไปอีกขั้นด้วยการสร้างโปรแกรมการวาดภาพ ซึ่งเป็นโปรแกรมที่นักเรียนในอนาคตสามารถสร้างขึ้นมาได้เช่นกัน
ปัญหา:
ปัญหาที่เราค้นพบคือไม่มีโมดูลเมาส์ที่ชัดเจนพร้อมที่จะดาวน์โหลดและใช้สำหรับบอร์ด Basy3 เพื่อแก้ปัญหานี้ เราพยายามสร้างมันขึ้นมาเอง การทำเช่นนี้ทำให้เรามุ่งมั่นที่จะสร้างโมดูลเมาส์ที่จะช่วยให้นักเรียนในอนาคตนำการป้อนข้อมูลด้วยเมาส์ไปใช้ในโครงการของตนได้ง่ายขึ้น
ขั้นตอนที่ 2: รับข้อมูล Raw Bit จาก Basy USB
- สิ่งที่เราทำกับเมาส์ส่วนใหญ่ในโปรเจ็กต์นี้มาจากเอกสารประกอบของ Basy3 จากคำแนะนำเล็กๆ เกี่ยวกับพอร์ต USB ของ Basy ใน pdf นั้น เราพบว่าบอร์ด Basy มีนาฬิกาในตัวสำหรับอ่านบิตด้วยความเร็วที่เหมาะสมจากอุปกรณ์ USB
- โดยพื้นฐานแล้ว เมาส์จะส่งบิตไปยัง usb โดยเริ่มจากสถานะไม่ได้ใช้งาน อ่าน 32 บิตแทนสถานะเมาส์ ตำแหน่ง x และตำแหน่ง y และสุดท้ายจบลงด้วยบิตที่ไม่ได้ใช้งานอีกบิต ในการทำเช่นนี้ ส่วนประกอบอินพุตของเมาส์ใช้ shift register และตัวนับ 32 บิต โดยที่ shift register ใช้เพื่อเก็บข้อมูลขาเข้า 32 บิตจากเมาส์ และตัวนับ 32 บิตใช้เพื่อนับจำนวนบิตที่จัดเก็บไว้เพื่อให้สถานะ ลงทะเบียนเพื่อรีเซ็ตและจัดเก็บ 32 บิตขาเข้าชุดถัดไป
- ดาวน์โหลดโค้ดสำหรับ shift register ตัวนับ 32 บิต และเครื่องอ่านข้อมูลได้ที่ด้านล่าง รวมถึงไฟล์ข้อจำกัดที่ปรับให้เข้ากับการใช้พอร์ต USB ของเราเป็นอินพุต
ขั้นตอนที่ 3: การแยกวิเคราะห์ข้อมูล USB
- หลังจากสร้างอินพุตเมาส์ไปยังส่วนประกอบ usb ขั้นตอนต่อไปคือการสร้างส่วนประกอบข้อมูล usb บิตเป็นเวกเตอร์ซึ่งจะทำให้ข้อมูลที่ได้รับจากเมาส์สามารถอ่านได้สำหรับ vga
- ส่วนประกอบนี้ใช้เครื่องสถานะที่ใช้ในชุดของบิตที่ส่งออกโดยอินพุตเมาส์ไปยัง usb และย้ายผ่านสถานะโดยพิจารณาจากว่ามีการป้อนบิตใหม่ที่เปลี่ยนสถานะและตำแหน่งของเมาส์หรือไม่
- แผนภาพบล็อกสำหรับสองขั้นตอนแรกของโครงการแสดงไว้ที่นี่ และไฟล์ vhdl สองไฟล์ใช้สำหรับทดสอบการใช้งานเมาส์โดยใช้ไฟ LED พื้นฐาน (การทดสอบที่ไม่ผ่านอย่างน่าเสียดาย) และสำหรับการส่งกระแสข้อมูลบิตจาก USB พอร์ตเพื่อเพิ่มความเร็วและกำหนดตำแหน่งเวกเตอร์ที่ VGA สามารถใช้ได้
- รูปภาพถัดจากบล็อกไดอะแกรมด้านบนเป็นสแน็ปช็อตขนาดเล็ก (Instructables ไม่อนุญาตให้เราแสดงรูปภาพแบบเต็มความกว้าง) ของข้อมูลบิตที่เราพบในเอกสารประกอบพื้นฐานสำหรับการทำตามขั้นตอนนี้ให้เสร็จสิ้น
ขั้นตอนที่ 4: การแสดงภาพที่ทาสีบน VGA และการแก้ไขสิ่งที่กำลังวาด
- สาย VGA มีเอาต์พุต 14 บิต, 4 บิตสำหรับแต่ละสีจากสามสี และบิตสำหรับการซิงค์ในแนวนอนและแนวตั้ง
-
OtherVGA เป็นโมดูล VGA ที่ให้มาและทำงานดังต่อไปนี้:
- จอภาพแบ่งออกเป็น 40x30 บล็อกขนาด 16x16 พิกเซลสำหรับหน้าจอความละเอียด 640x480 ดังที่แสดงในภาพด้านบน โมดูลจะเลือกที่อยู่บล็อกเพื่อแสดงหนึ่งใน 1200 บล็อกบนจอภาพ ที่อยู่บล็อกถูกเลือกผ่านสมการต่อไปนี้: ที่อยู่ = 40y + x
- สีจะแสดงด้วยสัญญาณ 12 บิตซึ่งสัมพันธ์กับค่า RRRRGGGGBBBB ที่ทำให้สีบล็อกที่เลือก
-
รหัสควบคุมของเรา VGAtest และ VGAtestconst ทำงานดังต่อไปนี้:
- ขั้นแรกให้ตั้งค่าบล็อกที่เลือกไว้ตรงกลางจอภาพ
- สีของบล็อกถูกกำหนดโดยสวิตช์ 12 ตัวบนกระดานโดยตั้งค่า RRRRGGGGBBBB
- ปุ่มทิศทางสี่ปุ่มบนกระดานจะเปลี่ยนที่อยู่ที่เลือก ตัวอย่างเช่น การกดปุ่มขวาจะเพิ่ม 1 ไปยังที่อยู่ โดยเลือกบล็อกที่หนึ่งทางด้านขวาของบล็อกก่อนหน้า การกดปุ่มลงจะเพิ่ม 40 ไปยังที่อยู่ โดยเลือกบล็อกที่อยู่ใต้บล็อกก่อนหน้า
- ปุ่มกลางใช้เพื่อตั้งค่าสีทั้งหมดเป็น 0 เมื่อกด ฟังก์ชันนี้มีไว้เพื่อใช้เป็นปุ่มลบที่ผู้ใช้ใช้งานง่าย ดังนั้นผู้ใช้จึงไม่ต้องพลิกทุกสวิตช์เป็น 0 เพื่อลบ
- ภาพสุดท้ายคือแผนภาพบล็อกสำหรับคอนโทรลเลอร์ มันค่อนข้างกว้างเนื่องจากมีส่วนประกอบของโมดูลและอาจแสดงผลได้ไม่เต็มที่
ขั้นตอนที่ 5: สนุกกับการสร้างสรรค์ของคุณ
ลิงก์ที่นี่คือไทม์แลปส์อย่างรวดเร็วของความสนุกที่คุณมีกับโปรเจ็กต์สุดท้ายได้ แม้จะเพียงแค่ใช้สวิตช์และปุ่มบนกระดานเบสเป็นอินพุต
ขอบคุณที่อ่าน!
แนะนำ:
Occluding Dichoptic Modifier ของ Stereoscopic Transmission 32 [STM32F103C8T6+STMAV340 VGA Superimposer]: 6 ขั้นตอน
Occluding Dichoptic Modifier ของ Stereoscopic Transmission 32 [STM32F103C8T6+STMAV340 VGA Superimposer]: ฉันได้พัฒนาตัวต่อจาก AODMoST ดั้งเดิมมาระยะหนึ่งแล้ว อุปกรณ์ใหม่ใช้ไมโครคอนโทรลเลอร์แบบ 32 บิตที่เร็วและดีกว่าและสวิตช์วิดีโอแอนะล็อกที่เร็วขึ้น ช่วยให้ AODMoST 32 ทำงานด้วยความละเอียดสูงขึ้นและใช้ฟังก์ชันใหม่
Occluding Dichoptic Modifier ของ Stereoscopic Transmission [ATmega328P+HEF4053B VGA Superimposer]: 7 ขั้นตอน
Alternately Occluding Dichoptic Modifier of Stereoscopic Transmission [ATmega328P+HEF4053B VGA Superimposer]: หลังจากทำการทดลองกับแว่นตาคริสตัลเหลวเพื่อปิดตา (ที่นี่และที่นั่น) ฉันตัดสินใจสร้างสิ่งที่ซับซ้อนขึ้นเล็กน้อยและไม่ได้บังคับผู้ใช้ การสวม PCB บนหน้าผากของเขาหรือเธอ (บางครั้งผู้คนสามารถประพฤติ
VGA / GPU ภายนอกสำหรับแล็ปท็อปที่ใช้ EXP GDC Beast: 15 ขั้นตอน (พร้อมรูปภาพ)
VGA / GPU ภายนอกสำหรับแล็ปท็อปโดยใช้ EXP GDC Beast: สวัสดีทุกคน .. นี่เป็นบทช่วยสอนแรกของฉันเกี่ยวกับคำแนะนำ ภาษาอังกฤษไม่ใช่ภาษาแรกของฉัน ดังนั้นโปรดยกโทษให้ข้อผิดพลาดทางไวยากรณ์ของฉัน ฉันทำสิ่งนี้ตามประสบการณ์ในการอัพเกรดแล็ปท็อปของฉัน และฉันจะไม่ทำให้คุณเบื่อด้วยการแนะนำตัวนาน ๆ เนื่องจากฉันไม่รู้
โปรแกรมวาดภาพ Arduino TFT: 4 ขั้นตอน
โปรแกรมวาดภาพ Arduino TFT: รายละเอียดที่สอนได้นี้มีรายละเอียดรหัสที่ใช้ในการสร้างโปรแกรมวาดภาพสำหรับหน้าจอ Arduino TFT โปรแกรมนี้ไม่เหมือนใครเพราะช่วยให้สามารถบันทึกภาพวาดลงในการ์ด SD และโหลดในภายหลังเพื่อทำการแก้ไขเพิ่มเติมได้
ESP32 VGA เกมอาเขตและจอยสติ๊ก: 6 ขั้นตอน (พร้อมรูปภาพ)
เกมอาเขตและจอยสติ๊ก ESP32 VGA: ในคำแนะนำนี้ฉันจะแสดงวิธีสร้างเกมอาร์เคดสี่เกมเช่น Tetris - Snake - Breakout - Bomber - โดยใช้ ESP32 พร้อมเอาต์พุตสำหรับจอภาพ VGA ความละเอียด 320 x 200 พิกเซล 8 สี ฉันเคยทำเวอร์ชันที่มี